diff --git a/java/JavaToolDemo.iml b/java/JavaToolDemo.iml index 80c2364435df77f27e0b6e171505820e3d588d26..bdf1a199230d1ac8c11a3463e58b417fae933691 100644 --- a/java/JavaToolDemo.iml +++ b/java/JavaToolDemo.iml @@ -1,25 +1,130 @@ - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/pom.xml b/java/pom.xml index d55aaed420f8b656c93e951a394834b7b7357737..ebee27d348af4ceb45de503220fb8c9b3cc783cd 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -140,7 +140,7 @@ mysql mysql-connector-java - 5.1.14 + 8.0.33 diff --git a/java/src/com/wtb/javatool/action/JavaToolDemoAction.java b/java/src/com/wtb/javatool/action/JavaToolDemoAction.java index 001f4605181c4912694b1515c9315dcb208c4fde..4fcb705a42cb71704a586fa2714a313b70b6e1c2 100644 --- a/java/src/com/wtb/javatool/action/JavaToolDemoAction.java +++ b/java/src/com/wtb/javatool/action/JavaToolDemoAction.java @@ -9,6 +9,8 @@ import com.wtb.javatool.entity.User; import com.wtb.javatool.service.IApplyService; import com.wtb.javatool.service.IDishService; import com.wtb.javatool.service.IStudent; + +import com.wtb.javatool.vo.ApplyBuildDto; import com.wtb.javatool.vo.DishDto; import io.swagger.annotations.*; import org.springframework.beans.BeanUtils; @@ -109,6 +111,7 @@ public class JavaToolDemoAction extends Tool { }) public Result> listAll(HttpServletRequest request, HttpServletResponse response) { List dishes = dishService.listAll(); + System.out.println(dishes); if(dishes == null || dishes.size() == 0){ return Result.success(null); } @@ -164,6 +167,40 @@ public class JavaToolDemoAction extends Tool { } + + @Action + @ApiOperation(value = "列出所有自建数据库申请", httpMethod = "GET", notes = "列出所有自建数据库申请") + @ApiResponses({ + @ApiResponse(code = 200, message = "成功", response = Result.class) + }) + public Result> listAllSelfApply(HttpServletRequest request, HttpServletResponse response) { + + List selfApplys = iApplyService.listAllSelfApply(); + + if(selfApplys == null || selfApplys.size() == 0){ + return Result.success(null); + } + + return Result.success(selfApplys); + } + + + + + + + + + + + + + + + + + + @Action @ApiOperation(value = "学生申请自建数据库", httpMethod = "POST", notes = "学生申请自建数据库") @ApiImplicitParams({ @@ -183,7 +220,9 @@ public class JavaToolDemoAction extends Tool { ApplyBuild applyBuild = new ApplyBuild(); - applyBuild.setUserId(userId); + applyBuild.setUserId(userId);////////// + + applyBuild.setClassId(classId); applyBuild.setDataBaseId(dataBaseId); applyBuild.setDescription(description); @@ -242,7 +281,9 @@ public class JavaToolDemoAction extends Tool { ApplyBuild applyBuild = new ApplyBuild(); - applyBuild.setUserId(userId); + applyBuild.setUserId(userId);//////////////////////// + + applyBuild.setClassId(classId); applyBuild.setDataBaseId(dataBaseId); applyBuild.setDescription(description); @@ -306,7 +347,8 @@ public class JavaToolDemoAction extends Tool { ApplyBuild applyBuild = new ApplyBuild(); - applyBuild.setUserId(userId); + applyBuild.setUserId(userId);////////////////////// + applyBuild.setClassId(classId); applyBuild.setDataBaseId(dataBaseId); applyBuild.setDescription(description); diff --git a/java/src/com/wtb/javatool/dao/ApplyMapper.java b/java/src/com/wtb/javatool/dao/ApplyMapper.java index e5844c17cc5529b62f27aa68a54598033f348716..9b8d4fb55c5c8e1146fc604bd8d790c1fe33f1c4 100644 --- a/java/src/com/wtb/javatool/dao/ApplyMapper.java +++ b/java/src/com/wtb/javatool/dao/ApplyMapper.java @@ -4,6 +4,8 @@ package com.wtb.javatool.dao; import com.wtb.javatool.entity.ApplyBuild; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface ApplyMapper { @@ -13,4 +15,6 @@ public interface ApplyMapper { Integer approveApply(ApplyBuild applyBuild); Integer authorizedApply(ApplyBuild applyBuild); + + List listAllSelfApply(); } diff --git a/java/src/com/wtb/javatool/entity/ApplyBuild.java b/java/src/com/wtb/javatool/entity/ApplyBuild.java index adbb6d1ffc9cc9a5d966aec44aa1926b50cb4fe0..27dc67545037fd30252754e65485a7a68d129448 100644 --- a/java/src/com/wtb/javatool/entity/ApplyBuild.java +++ b/java/src/com/wtb/javatool/entity/ApplyBuild.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; +import javax.persistence.Column; +import java.io.Serializable; /** * 创建申请表 @@ -12,41 +14,59 @@ import lombok.ToString; */ @Data @ToString -@ApiModel(value = "apply_build",description="创建申请") -public class ApplyBuild { +@ApiModel(value = "ApplyBuild",description="创建申请") +public class ApplyBuild implements Serializable { + + @ApiModelProperty(value = "id") private Integer id; @ApiModelProperty(value = "用户Id") + @Column(name = "user_id") private Long userId; @ApiModelProperty(value = "班级id") + @Column(name = "class_id") private Long classId; @ApiModelProperty(value = "数据库Id") + @Column(name = "database_id") private Integer dataBaseId; @ApiModelProperty(value = "描述") + @Column(name = "description") private String description; @ApiModelProperty(value = "授权人Id,管理员") + @Column(name = "authorized_id") private Long authorizedId; @ApiModelProperty(value = "审批人Id,教师") + @Column(name = "approver_id") private Long approverId; @ApiModelProperty(value = "创建时间") + @Column(name = "create_time") private String createTime; @ApiModelProperty(value = "状态,0表示已向老师发送申请但未同意,1表示老师同意并且已向管理员发送申请但未授权,2表示管理员审批成功整个流程完成") + @Column(name = "status") private Integer status; + + @ApiModelProperty(value = "审批时间") + @Column(name = "approve_time") private String approveTime; @ApiModelProperty(value = "授权时间") + @Column(name = "authorized_time") private String authorizedTime; + + + + } diff --git a/java/src/com/wtb/javatool/service/IApplyService.java b/java/src/com/wtb/javatool/service/IApplyService.java index ecb3b2ad5bfaf093686c3fbea264ed962a650a76..155186671add6192a680ecfc78bcb4ccd7311b58 100644 --- a/java/src/com/wtb/javatool/service/IApplyService.java +++ b/java/src/com/wtb/javatool/service/IApplyService.java @@ -3,6 +3,8 @@ package com.wtb.javatool.service; import com.wtb.javatool.common.Result; import com.wtb.javatool.entity.ApplyBuild; +import java.util.List; + public interface IApplyService { /** @@ -20,4 +22,6 @@ public interface IApplyService { Integer approveApply(ApplyBuild applyBuild); Integer authorizedApply(ApplyBuild applyBuild); + + List listAllSelfApply(); } diff --git a/java/src/com/wtb/javatool/service/impl/ApplyServiceImpl.java b/java/src/com/wtb/javatool/service/impl/ApplyServiceImpl.java index 716284efc16a45f64691831a9356aa2fa0017ad3..4ad41366837074532123dfc628dfc48e8e647819 100644 --- a/java/src/com/wtb/javatool/service/impl/ApplyServiceImpl.java +++ b/java/src/com/wtb/javatool/service/impl/ApplyServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.persistence.criteria.CriteriaBuilder; +import java.util.List; import java.util.Objects; @Service @@ -45,6 +46,11 @@ public class ApplyServiceImpl implements IApplyService { return integer; } + @Override + public List listAllSelfApply() { + return applyMapper.listAllSelfApply(); + } + @Override @Transactional(rollbackFor = Exception.class) diff --git a/java/src/com/wtb/javatool/vo/ApplyBuildDto.java b/java/src/com/wtb/javatool/vo/ApplyBuildDto.java new file mode 100644 index 0000000000000000000000000000000000000000..76b87b2a79e1f5fa4d4f83f7b040d420cece4583 --- /dev/null +++ b/java/src/com/wtb/javatool/vo/ApplyBuildDto.java @@ -0,0 +1,12 @@ +package com.wtb.javatool.vo; + +import com.wtb.javatool.entity.ApplyBuild; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +@ApiModel(value = "ApplyBuildDto",description="学生自建数据库申请dto") +public class ApplyBuildDto extends ApplyBuild { +} diff --git a/java/src/com/wtb/javatool/vo/DishDto.java b/java/src/com/wtb/javatool/vo/DishDto.java index bd3199fe6d77b834aad8ed68071473beec8fb03e..44e77ca8c91f67ba5faa12d5ddf3f53265345300 100644 --- a/java/src/com/wtb/javatool/vo/DishDto.java +++ b/java/src/com/wtb/javatool/vo/DishDto.java @@ -12,16 +12,16 @@ import java.math.BigDecimal; @ApiModel(value = "DishDto",description="菜品dto") public class DishDto extends Dish { - /** - * - */ - private static final long serialVersionUID = 7992875521541792694L; + /** + * + */ + private static final long serialVersionUID = 7992875521541792694L; - public DishDto(String name, BigDecimal price, String description) { - super(name, price, description); - } - - public DishDto() { - super(); - } -} + public DishDto(String name, BigDecimal price, String description) { + super(name, price, description); + } + + public DishDto() { + super(); + } +} \ No newline at end of file diff --git a/java/src/mappers/ApplyMapper.xml b/java/src/mappers/ApplyMapper.xml index 68d6a65fc04627e9e3f41ca43d36c4f1fe1737aa..bcfa51b2e93e271ebcd850724be3b90250735dd1 100644 --- a/java/src/mappers/ApplyMapper.xml +++ b/java/src/mappers/ApplyMapper.xml @@ -4,6 +4,27 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + INSERT INTO apply_build(user_id,class_id,database_id,description,approver_id,status,create_time) VALUES(#{userId},#{classId},#{dataBaseId},#{description},#{approverId},#{status},#{createTime}) @@ -26,4 +47,9 @@ WHERE id = #{id} + + + diff --git a/java/tempResources/config.properties b/java/tempResources/config.properties index 86df0c4993b44d3e3bf933dc89df896d078a8fe9..3f7884172b3f5940016af573d433b230a8a31834 100644 --- a/java/tempResources/config.properties +++ b/java/tempResources/config.properties @@ -21,10 +21,10 @@ HTTP_LONG_CONNECTION_TIMEOUT_SECOND=60 #JDBC_USERNAME=root #JDBC_PASSWORD=root -JDBC_DRIVER=com.mysql.jdbc.Driver -JDBC_URL=jdbc\:mysql\://localhost\:3306/dish?useUnicode\=true&characterEncoding\=UTF-8&serverTimezone\=UTC +JDBC_DRIVER=com.mysql.cj.jdbc.Driver +JDBC_URL=jdbc\:mysql\://localhost\:3306/nobuff?useUnicode\=true&characterEncoding\=UTF-8&serverTimezone\=UTC JDBC_USERNAME=root -JDBC_PASSWORD=root123 +JDBC_PASSWORD=123456 MONGODB_IP=localhost MONGODB_PORT=27017 diff --git a/java/web/WEB-INF/web.xml b/java/web/WEB-INF/web.xml new file mode 100644 index 0000000000000000000000000000000000000000..d80081d1318531b6c30eaf0d748bf80a0b2e042a --- /dev/null +++ b/java/web/WEB-INF/web.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/vite/node_modules/.vite/deps/@ant-design_icons-vue.js b/vite/node_modules/.vite/deps/@ant-design_icons-vue.js index f8829a15b9ea67c98cd3c15ae2424a29532e61c4..6733743e1a04b62c0983daccd3c9b8ec8c461e54 100644 --- a/vite/node_modules/.vite/deps/@ant-design_icons-vue.js +++ b/vite/node_modules/.vite/deps/@ant-design_icons-vue.js @@ -792,8 +792,8 @@ import { create, getTwoToneColor, setTwoToneColor -} from "./chunk-NFZ5NDKV.js"; -import "./chunk-ZY5X6FX7.js"; +} from "./chunk-6722IHQS.js"; +import "./chunk-5DF355KD.js"; import "./chunk-DC5AMYBS.js"; export { AccountBookFilled_default as AccountBookFilled, diff --git a/vite/node_modules/.vite/deps/_metadata.json b/vite/node_modules/.vite/deps/_metadata.json index 88f0e2bc7ef756a3586236c2a9735b581f50f3d9..a33b31b2c2080438309432b828eaadfe0dee1c7b 100644 --- a/vite/node_modules/.vite/deps/_metadata.json +++ b/vite/node_modules/.vite/deps/_metadata.json @@ -1,109 +1,100 @@ { - "hash": "677ffacd", - "configHash": "03b0633d", + "hash": "04641d3a", + "configHash": "d16ee94e", "lockfileHash": "041b0202", - "browserHash": "1a4705df", + "browserHash": "c7bc0511", "optimized": { "@ant-design/icons-vue": { "src": "../../@ant-design/icons-vue/es/index.js", "file": "@ant-design_icons-vue.js", - "fileHash": "13e08434", + "fileHash": "9b2c412d", "needsInterop": false }, "ant-design-vue": { "src": "../../ant-design-vue/es/index.js", "file": "ant-design-vue.js", - "fileHash": "734e4939", + "fileHash": "f553dc32", "needsInterop": false }, "ant-design-vue/es/locale/zh_CN": { "src": "../../ant-design-vue/es/locale/zh_CN.js", "file": "ant-design-vue_es_locale_zh_CN.js", - "fileHash": "095b135e", + "fileHash": "a685f21e", "needsInterop": false }, "axios": { "src": "../../axios/index.js", "file": "axios.js", - "fileHash": "792b2e56", + "fileHash": "4ec19dcf", "needsInterop": false }, - "chart.js": { - "src": "../../chart.js/dist/chart.js", - "file": "chart__js.js", - "fileHash": "edfcf76a", + "chart.js/auto": { + "src": "../../chart.js/auto/auto.js", + "file": "chart__js_auto.js", + "fileHash": "87023985", "needsInterop": false }, "dayjs": { "src": "../../dayjs/dayjs.min.js", "file": "dayjs.js", - "fileHash": "520f4948", + "fileHash": "8a1f62b5", "needsInterop": true }, "lodash": { "src": "../../lodash/lodash.js", "file": "lodash.js", - "fileHash": "175a1096", + "fileHash": "556839d5", "needsInterop": true }, "pinia": { "src": "../../pinia/dist/pinia.mjs", "file": "pinia.js", - "fileHash": "51063cdd", + "fileHash": "35954738", "needsInterop": false }, "qs": { "src": "../../qs/lib/index.js", "file": "qs.js", - "fileHash": "979ee08e", + "fileHash": "16df2389", "needsInterop": true }, "vue": { "src": "../../vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "f67870bf", + "fileHash": "2592ae95", "needsInterop": false }, "vue-router": { "src": "../../vue-router/dist/vue-router.mjs", "file": "vue-router.js", - "fileHash": "64649eac", + "fileHash": "4daf45b3", "needsInterop": false }, "ant-design-vue/es": { "src": "../../ant-design-vue/es/index.js", "file": "ant-design-vue_es.js", - "fileHash": "14d290b1", - "needsInterop": false - }, - "chart.js/auto": { - "src": "../../chart.js/auto/auto.js", - "file": "chart__js_auto.js", - "fileHash": "e496059d", + "fileHash": "f2cee5d4", "needsInterop": false } }, "chunks": { - "chunk-DTNR33MA": { - "file": "chunk-DTNR33MA.js" - }, - "chunk-MUV3MZRB": { - "file": "chunk-MUV3MZRB.js" + "chunk-FJHKNN7M": { + "file": "chunk-FJHKNN7M.js" }, - "chunk-NFZ5NDKV": { - "file": "chunk-NFZ5NDKV.js" + "chunk-6722IHQS": { + "file": "chunk-6722IHQS.js" }, - "chunk-ZBUPDRX3": { - "file": "chunk-ZBUPDRX3.js" + "chunk-C5LNZFVI": { + "file": "chunk-C5LNZFVI.js" }, "chunk-CM2AK5IQ": { "file": "chunk-CM2AK5IQ.js" }, - "chunk-PBJIO4MK": { - "file": "chunk-PBJIO4MK.js" + "chunk-TL63CAVM": { + "file": "chunk-TL63CAVM.js" }, - "chunk-ZY5X6FX7": { - "file": "chunk-ZY5X6FX7.js" + "chunk-5DF355KD": { + "file": "chunk-5DF355KD.js" }, "chunk-DC5AMYBS": { "file": "chunk-DC5AMYBS.js" diff --git a/vite/node_modules/.vite/deps/ant-design-vue.js b/vite/node_modules/.vite/deps/ant-design-vue.js index c5f08833df33c7cc2d169adca2d8ed4044633bbe..8895bfa179f1c49be0abc226b977cdd14c87e7f7 100644 --- a/vite/node_modules/.vite/deps/ant-design-vue.js +++ b/vite/node_modules/.vite/deps/ant-design-vue.js @@ -158,11 +158,11 @@ import { useStyleRegister, version_default, watermark_default -} from "./chunk-MUV3MZRB.js"; -import "./chunk-NFZ5NDKV.js"; -import "./chunk-ZBUPDRX3.js"; +} from "./chunk-FJHKNN7M.js"; +import "./chunk-6722IHQS.js"; +import "./chunk-C5LNZFVI.js"; import "./chunk-CM2AK5IQ.js"; -import "./chunk-ZY5X6FX7.js"; +import "./chunk-5DF355KD.js"; import "./chunk-DC5AMYBS.js"; export { affix_default as Affix, diff --git a/vite/node_modules/.vite/deps/ant-design-vue_es.js b/vite/node_modules/.vite/deps/ant-design-vue_es.js index df1f4a31c8a2018f6ae869bcd2405cb07dbea054..b06cbe36b8e7c3d4466924f184eafbd40639a987 100644 --- a/vite/node_modules/.vite/deps/ant-design-vue_es.js +++ b/vite/node_modules/.vite/deps/ant-design-vue_es.js @@ -158,11 +158,11 @@ import { useStyleRegister, version_default, watermark_default -} from "./chunk-MUV3MZRB.js"; -import "./chunk-NFZ5NDKV.js"; -import "./chunk-ZBUPDRX3.js"; +} from "./chunk-FJHKNN7M.js"; +import "./chunk-6722IHQS.js"; +import "./chunk-C5LNZFVI.js"; import "./chunk-CM2AK5IQ.js"; -import "./chunk-ZY5X6FX7.js"; +import "./chunk-5DF355KD.js"; import "./chunk-DC5AMYBS.js"; export { affix_default as Affix, diff --git a/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js b/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js index c2fb83643f60206384541b378e02b64cd5a1af71..cdc03eb9f4a86ab130f8b53528efc3f7718d5818 100644 --- a/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js +++ b/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js @@ -1,7 +1,7 @@ import { _extends, zh_CN_default -} from "./chunk-ZBUPDRX3.js"; +} from "./chunk-C5LNZFVI.js"; import "./chunk-DC5AMYBS.js"; // node_modules/ant-design-vue/es/vc-picker/locale/zh_CN.js diff --git a/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map b/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map index 28594360c94b803a820ce901a57a7b39867e56ad..8f34b068336e73c2e09803994239eaa96daee7dd 100644 --- a/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map +++ b/vite/node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../ant-design-vue/es/vc-picker/locale/zh_CN.js", "../../ant-design-vue/es/time-picker/locale/zh_CN.js", "../../ant-design-vue/es/date-picker/locale/zh_CN.js", "../../ant-design-vue/es/calendar/locale/zh_CN.js", "../../ant-design-vue/es/locale/zh_CN.js"], - "sourcesContent": ["const locale = {\n locale: 'zh_CN',\n today: '今天',\n now: '此刻',\n backToToday: '返回今天',\n ok: '确定',\n timeSelect: '选择时间',\n dateSelect: '选择日期',\n weekSelect: '选择周',\n clear: '清除',\n month: '月',\n year: '年',\n previousMonth: '上个月 (翻页上键)',\n nextMonth: '下个月 (翻页下键)',\n monthSelect: '选择月份',\n yearSelect: '选择年份',\n decadeSelect: '选择年代',\n yearFormat: 'YYYY年',\n dayFormat: 'D日',\n dateFormat: 'YYYY年M月D日',\n dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',\n previousYear: '上一年 (Control键加左方向键)',\n nextYear: '下一年 (Control键加右方向键)',\n previousDecade: '上一年代',\n nextDecade: '下一年代',\n previousCentury: '上一世纪',\n nextCentury: '下一世纪'\n};\nexport default locale;", "const locale = {\n placeholder: '请选择时间',\n rangePlaceholder: ['开始时间', '结束时间']\n};\nexport default locale;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from '../../vc-picker/locale/zh_CN';\nimport TimePickerLocale from '../../time-picker/locale/zh_CN';\n// 统一合并为完整的 Locale\nconst locale = {\n lang: _extends({\n placeholder: '请选择日期',\n yearPlaceholder: '请选择年份',\n quarterPlaceholder: '请选择季度',\n monthPlaceholder: '请选择月份',\n weekPlaceholder: '请选择周',\n rangePlaceholder: ['开始日期', '结束日期'],\n rangeYearPlaceholder: ['开始年份', '结束年份'],\n rangeMonthPlaceholder: ['开始月份', '结束月份'],\n rangeQuarterPlaceholder: ['开始季度', '结束季度'],\n rangeWeekPlaceholder: ['开始周', '结束周']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n};\n// should add whitespace between char in Button\nlocale.lang.ok = '确定';\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;", "import zhCN from '../../date-picker/locale/zh_CN';\nexport default zhCN;", "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/zh_CN';\nimport DatePicker from '../date-picker/locale/zh_CN';\nimport TimePicker from '../time-picker/locale/zh_CN';\nimport Calendar from '../calendar/locale/zh_CN';\nconst typeTemplate = '${label}不是一个有效的${type}';\nconst localeValues = {\n locale: 'zh-cn',\n Pagination,\n DatePicker,\n TimePicker,\n Calendar,\n // locales for all components\n global: {\n placeholder: '请选择'\n },\n Table: {\n filterTitle: '筛选',\n filterConfirm: '确定',\n filterReset: '重置',\n filterEmptyText: '无筛选项',\n filterCheckall: '全选',\n filterSearchPlaceholder: '在筛选项中搜索',\n selectAll: '全选当页',\n selectInvert: '反选当页',\n selectNone: '清空所有',\n selectionAll: '全选所有',\n sortTitle: '排序',\n expand: '展开行',\n collapse: '关闭行',\n triggerDesc: '点击降序',\n triggerAsc: '点击升序',\n cancelSort: '取消排序'\n },\n Tour: {\n Next: '下一步',\n Previous: '上一步',\n Finish: '结束导览'\n },\n Modal: {\n okText: '确定',\n cancelText: '取消',\n justOkText: '知道了'\n },\n Popconfirm: {\n cancelText: '取消',\n okText: '确定'\n },\n Transfer: {\n searchPlaceholder: '请输入搜索内容',\n itemUnit: '项',\n itemsUnit: '项',\n remove: '删除',\n selectCurrent: '全选当页',\n removeCurrent: '删除当页',\n selectAll: '全选所有',\n removeAll: '删除全部',\n selectInvert: '反选当页'\n },\n Upload: {\n uploading: '文件上传中',\n removeFile: '删除文件',\n uploadError: '上传错误',\n previewFile: '预览文件',\n downloadFile: '下载文件'\n },\n Empty: {\n description: '暂无数据'\n },\n Icon: {\n icon: '图标'\n },\n Text: {\n edit: '编辑',\n copy: '复制',\n copied: '复制成功',\n expand: '展开'\n },\n PageHeader: {\n back: '返回'\n },\n Form: {\n optional: '(可选)',\n defaultValidateMessages: {\n default: '字段验证错误${label}',\n required: '请输入${label}',\n enum: '${label}必须是其中一个[${enum}]',\n whitespace: '${label}不能为空字符',\n date: {\n format: '${label}日期格式无效',\n parse: '${label}不能转换为日期',\n invalid: '${label}是一个无效日期'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label}须为${len}个字符',\n min: '${label}最少${min}个字符',\n max: '${label}最多${max}个字符',\n range: '${label}须在${min}-${max}字符之间'\n },\n number: {\n len: '${label}必须等于${len}',\n min: '${label}最小值为${min}',\n max: '${label}最大值为${max}',\n range: '${label}须在${min}-${max}之间'\n },\n array: {\n len: '须为${len}个${label}',\n min: '最少${min}个${label}',\n max: '最多${max}个${label}',\n range: '${label}数量须在${min}-${max}之间'\n },\n pattern: {\n mismatch: '${label}与模式不匹配${pattern}'\n }\n }\n },\n Image: {\n preview: '预览'\n },\n QRCode: {\n expired: '二维码已过期',\n refresh: '点击刷新',\n scanned: '已扫描'\n }\n};\nexport default localeValues;"], + "sourcesContent": ["const locale = {\r\n locale: 'zh_CN',\r\n today: '今天',\r\n now: '此刻',\r\n backToToday: '返回今天',\r\n ok: '确定',\r\n timeSelect: '选择时间',\r\n dateSelect: '选择日期',\r\n weekSelect: '选择周',\r\n clear: '清除',\r\n month: '月',\r\n year: '年',\r\n previousMonth: '上个月 (翻页上键)',\r\n nextMonth: '下个月 (翻页下键)',\r\n monthSelect: '选择月份',\r\n yearSelect: '选择年份',\r\n decadeSelect: '选择年代',\r\n yearFormat: 'YYYY年',\r\n dayFormat: 'D日',\r\n dateFormat: 'YYYY年M月D日',\r\n dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',\r\n previousYear: '上一年 (Control键加左方向键)',\r\n nextYear: '下一年 (Control键加右方向键)',\r\n previousDecade: '上一年代',\r\n nextDecade: '下一年代',\r\n previousCentury: '上一世纪',\r\n nextCentury: '下一世纪'\r\n};\r\nexport default locale;", "const locale = {\r\n placeholder: '请选择时间',\r\n rangePlaceholder: ['开始时间', '结束时间']\r\n};\r\nexport default locale;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport CalendarLocale from '../../vc-picker/locale/zh_CN';\r\nimport TimePickerLocale from '../../time-picker/locale/zh_CN';\r\n// 统一合并为完整的 Locale\r\nconst locale = {\r\n lang: _extends({\r\n placeholder: '请选择日期',\r\n yearPlaceholder: '请选择年份',\r\n quarterPlaceholder: '请选择季度',\r\n monthPlaceholder: '请选择月份',\r\n weekPlaceholder: '请选择周',\r\n rangePlaceholder: ['开始日期', '结束日期'],\r\n rangeYearPlaceholder: ['开始年份', '结束年份'],\r\n rangeMonthPlaceholder: ['开始月份', '结束月份'],\r\n rangeQuarterPlaceholder: ['开始季度', '结束季度'],\r\n rangeWeekPlaceholder: ['开始周', '结束周']\r\n }, CalendarLocale),\r\n timePickerLocale: _extends({}, TimePickerLocale)\r\n};\r\n// should add whitespace between char in Button\r\nlocale.lang.ok = '确定';\r\n// All settings at:\r\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\r\nexport default locale;", "import zhCN from '../../date-picker/locale/zh_CN';\r\nexport default zhCN;", "/* eslint-disable no-template-curly-in-string */\r\nimport Pagination from '../vc-pagination/locale/zh_CN';\r\nimport DatePicker from '../date-picker/locale/zh_CN';\r\nimport TimePicker from '../time-picker/locale/zh_CN';\r\nimport Calendar from '../calendar/locale/zh_CN';\r\nconst typeTemplate = '${label}不是一个有效的${type}';\r\nconst localeValues = {\r\n locale: 'zh-cn',\r\n Pagination,\r\n DatePicker,\r\n TimePicker,\r\n Calendar,\r\n // locales for all components\r\n global: {\r\n placeholder: '请选择'\r\n },\r\n Table: {\r\n filterTitle: '筛选',\r\n filterConfirm: '确定',\r\n filterReset: '重置',\r\n filterEmptyText: '无筛选项',\r\n filterCheckall: '全选',\r\n filterSearchPlaceholder: '在筛选项中搜索',\r\n selectAll: '全选当页',\r\n selectInvert: '反选当页',\r\n selectNone: '清空所有',\r\n selectionAll: '全选所有',\r\n sortTitle: '排序',\r\n expand: '展开行',\r\n collapse: '关闭行',\r\n triggerDesc: '点击降序',\r\n triggerAsc: '点击升序',\r\n cancelSort: '取消排序'\r\n },\r\n Tour: {\r\n Next: '下一步',\r\n Previous: '上一步',\r\n Finish: '结束导览'\r\n },\r\n Modal: {\r\n okText: '确定',\r\n cancelText: '取消',\r\n justOkText: '知道了'\r\n },\r\n Popconfirm: {\r\n cancelText: '取消',\r\n okText: '确定'\r\n },\r\n Transfer: {\r\n searchPlaceholder: '请输入搜索内容',\r\n itemUnit: '项',\r\n itemsUnit: '项',\r\n remove: '删除',\r\n selectCurrent: '全选当页',\r\n removeCurrent: '删除当页',\r\n selectAll: '全选所有',\r\n removeAll: '删除全部',\r\n selectInvert: '反选当页'\r\n },\r\n Upload: {\r\n uploading: '文件上传中',\r\n removeFile: '删除文件',\r\n uploadError: '上传错误',\r\n previewFile: '预览文件',\r\n downloadFile: '下载文件'\r\n },\r\n Empty: {\r\n description: '暂无数据'\r\n },\r\n Icon: {\r\n icon: '图标'\r\n },\r\n Text: {\r\n edit: '编辑',\r\n copy: '复制',\r\n copied: '复制成功',\r\n expand: '展开'\r\n },\r\n PageHeader: {\r\n back: '返回'\r\n },\r\n Form: {\r\n optional: '(可选)',\r\n defaultValidateMessages: {\r\n default: '字段验证错误${label}',\r\n required: '请输入${label}',\r\n enum: '${label}必须是其中一个[${enum}]',\r\n whitespace: '${label}不能为空字符',\r\n date: {\r\n format: '${label}日期格式无效',\r\n parse: '${label}不能转换为日期',\r\n invalid: '${label}是一个无效日期'\r\n },\r\n types: {\r\n string: typeTemplate,\r\n method: typeTemplate,\r\n array: typeTemplate,\r\n object: typeTemplate,\r\n number: typeTemplate,\r\n date: typeTemplate,\r\n boolean: typeTemplate,\r\n integer: typeTemplate,\r\n float: typeTemplate,\r\n regexp: typeTemplate,\r\n email: typeTemplate,\r\n url: typeTemplate,\r\n hex: typeTemplate\r\n },\r\n string: {\r\n len: '${label}须为${len}个字符',\r\n min: '${label}最少${min}个字符',\r\n max: '${label}最多${max}个字符',\r\n range: '${label}须在${min}-${max}字符之间'\r\n },\r\n number: {\r\n len: '${label}必须等于${len}',\r\n min: '${label}最小值为${min}',\r\n max: '${label}最大值为${max}',\r\n range: '${label}须在${min}-${max}之间'\r\n },\r\n array: {\r\n len: '须为${len}个${label}',\r\n min: '最少${min}个${label}',\r\n max: '最多${max}个${label}',\r\n range: '${label}数量须在${min}-${max}之间'\r\n },\r\n pattern: {\r\n mismatch: '${label}与模式不匹配${pattern}'\r\n }\r\n }\r\n },\r\n Image: {\r\n preview: '预览'\r\n },\r\n QRCode: {\r\n expired: '二维码已过期',\r\n refresh: '点击刷新',\r\n scanned: '已扫描'\r\n }\r\n};\r\nexport default localeValues;"], "mappings": "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", "names": ["zh_CN_default", "locale", "zh_CN_default", "locale", "zh_CN_default", "zh_CN_default", "zh_CN_default"] } diff --git a/vite/node_modules/.vite/deps/axios.js.map b/vite/node_modules/.vite/deps/axios.js.map index 1a1b8070e554a1895f066adedcdf3a7746e31cd2..5dedd307e0585c03ed69d521899d85ef7927eb39 100644 --- a/vite/node_modules/.vite/deps/axios.js.map +++ b/vite/node_modules/.vite/deps/axios.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../axios/lib/helpers/bind.js", "../../axios/lib/utils.js", "../../axios/lib/core/AxiosError.js", "../../axios/lib/helpers/null.js", "../../axios/lib/helpers/toFormData.js", "../../axios/lib/helpers/AxiosURLSearchParams.js", "../../axios/lib/helpers/buildURL.js", "../../axios/lib/core/InterceptorManager.js", "../../axios/lib/defaults/transitional.js", "../../axios/lib/platform/browser/classes/URLSearchParams.js", "../../axios/lib/platform/browser/classes/FormData.js", "../../axios/lib/platform/browser/classes/Blob.js", "../../axios/lib/platform/browser/index.js", "../../axios/lib/platform/common/utils.js", "../../axios/lib/platform/index.js", "../../axios/lib/helpers/toURLEncodedForm.js", "../../axios/lib/helpers/formDataToJSON.js", "../../axios/lib/defaults/index.js", "../../axios/lib/helpers/parseHeaders.js", "../../axios/lib/core/AxiosHeaders.js", "../../axios/lib/core/transformData.js", "../../axios/lib/cancel/isCancel.js", "../../axios/lib/cancel/CanceledError.js", "../../axios/lib/core/settle.js", "../../axios/lib/helpers/parseProtocol.js", "../../axios/lib/helpers/speedometer.js", "../../axios/lib/helpers/throttle.js", "../../axios/lib/helpers/progressEventReducer.js", "../../axios/lib/helpers/isURLSameOrigin.js", "../../axios/lib/helpers/cookies.js", "../../axios/lib/helpers/isAbsoluteURL.js", "../../axios/lib/helpers/combineURLs.js", "../../axios/lib/core/buildFullPath.js", "../../axios/lib/core/mergeConfig.js", "../../axios/lib/helpers/resolveConfig.js", "../../axios/lib/adapters/xhr.js", "../../axios/lib/helpers/composeSignals.js", "../../axios/lib/helpers/trackStream.js", "../../axios/lib/adapters/fetch.js", "../../axios/lib/adapters/adapters.js", "../../axios/lib/core/dispatchRequest.js", "../../axios/lib/env/data.js", "../../axios/lib/helpers/validator.js", "../../axios/lib/core/Axios.js", "../../axios/lib/cancel/CancelToken.js", "../../axios/lib/helpers/spread.js", "../../axios/lib/helpers/isAxiosError.js", "../../axios/lib/helpers/HttpStatusCode.js", "../../axios/lib/axios.js", "../../axios/index.js"], - "sourcesContent": ["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n", "import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n", "import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n", "import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "export const VERSION = \"1.7.7\";", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"], + "sourcesContent": ["'use strict';\r\n\r\nexport default function bind(fn, thisArg) {\r\n return function wrap() {\r\n return fn.apply(thisArg, arguments);\r\n };\r\n}\r\n", "'use strict';\r\n\r\nimport bind from './helpers/bind.js';\r\n\r\n// utils is a library of generic helper functions non-specific to axios\r\n\r\nconst {toString} = Object.prototype;\r\nconst {getPrototypeOf} = Object;\r\n\r\nconst kindOf = (cache => thing => {\r\n const str = toString.call(thing);\r\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\r\n})(Object.create(null));\r\n\r\nconst kindOfTest = (type) => {\r\n type = type.toLowerCase();\r\n return (thing) => kindOf(thing) === type\r\n}\r\n\r\nconst typeOfTest = type => thing => typeof thing === type;\r\n\r\n/**\r\n * Determine if a value is an Array\r\n *\r\n * @param {Object} val The value to test\r\n *\r\n * @returns {boolean} True if value is an Array, otherwise false\r\n */\r\nconst {isArray} = Array;\r\n\r\n/**\r\n * Determine if a value is undefined\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if the value is undefined, otherwise false\r\n */\r\nconst isUndefined = typeOfTest('undefined');\r\n\r\n/**\r\n * Determine if a value is a Buffer\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a Buffer, otherwise false\r\n */\r\nfunction isBuffer(val) {\r\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\r\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\r\n}\r\n\r\n/**\r\n * Determine if a value is an ArrayBuffer\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\r\n */\r\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\r\n\r\n\r\n/**\r\n * Determine if a value is a view on an ArrayBuffer\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\r\n */\r\nfunction isArrayBufferView(val) {\r\n let result;\r\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\r\n result = ArrayBuffer.isView(val);\r\n } else {\r\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Determine if a value is a String\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a String, otherwise false\r\n */\r\nconst isString = typeOfTest('string');\r\n\r\n/**\r\n * Determine if a value is a Function\r\n *\r\n * @param {*} val The value to test\r\n * @returns {boolean} True if value is a Function, otherwise false\r\n */\r\nconst isFunction = typeOfTest('function');\r\n\r\n/**\r\n * Determine if a value is a Number\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a Number, otherwise false\r\n */\r\nconst isNumber = typeOfTest('number');\r\n\r\n/**\r\n * Determine if a value is an Object\r\n *\r\n * @param {*} thing The value to test\r\n *\r\n * @returns {boolean} True if value is an Object, otherwise false\r\n */\r\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\r\n\r\n/**\r\n * Determine if a value is a Boolean\r\n *\r\n * @param {*} thing The value to test\r\n * @returns {boolean} True if value is a Boolean, otherwise false\r\n */\r\nconst isBoolean = thing => thing === true || thing === false;\r\n\r\n/**\r\n * Determine if a value is a plain Object\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a plain Object, otherwise false\r\n */\r\nconst isPlainObject = (val) => {\r\n if (kindOf(val) !== 'object') {\r\n return false;\r\n }\r\n\r\n const prototype = getPrototypeOf(val);\r\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\r\n}\r\n\r\n/**\r\n * Determine if a value is a Date\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a Date, otherwise false\r\n */\r\nconst isDate = kindOfTest('Date');\r\n\r\n/**\r\n * Determine if a value is a File\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a File, otherwise false\r\n */\r\nconst isFile = kindOfTest('File');\r\n\r\n/**\r\n * Determine if a value is a Blob\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a Blob, otherwise false\r\n */\r\nconst isBlob = kindOfTest('Blob');\r\n\r\n/**\r\n * Determine if a value is a FileList\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a File, otherwise false\r\n */\r\nconst isFileList = kindOfTest('FileList');\r\n\r\n/**\r\n * Determine if a value is a Stream\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a Stream, otherwise false\r\n */\r\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\r\n\r\n/**\r\n * Determine if a value is a FormData\r\n *\r\n * @param {*} thing The value to test\r\n *\r\n * @returns {boolean} True if value is an FormData, otherwise false\r\n */\r\nconst isFormData = (thing) => {\r\n let kind;\r\n return thing && (\r\n (typeof FormData === 'function' && thing instanceof FormData) || (\r\n isFunction(thing.append) && (\r\n (kind = kindOf(thing)) === 'formdata' ||\r\n // detect form-data instance\r\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\r\n )\r\n )\r\n )\r\n}\r\n\r\n/**\r\n * Determine if a value is a URLSearchParams object\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\r\n */\r\nconst isURLSearchParams = kindOfTest('URLSearchParams');\r\n\r\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\r\n\r\n/**\r\n * Trim excess whitespace off the beginning and end of a string\r\n *\r\n * @param {String} str The String to trim\r\n *\r\n * @returns {String} The String freed of excess whitespace\r\n */\r\nconst trim = (str) => str.trim ?\r\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n\r\n/**\r\n * Iterate over an Array or an Object invoking a function for each item.\r\n *\r\n * If `obj` is an Array callback will be called passing\r\n * the value, index, and complete array for each item.\r\n *\r\n * If 'obj' is an Object callback will be called passing\r\n * the value, key, and complete object for each property.\r\n *\r\n * @param {Object|Array} obj The object to iterate\r\n * @param {Function} fn The callback to invoke for each item\r\n *\r\n * @param {Boolean} [allOwnKeys = false]\r\n * @returns {any}\r\n */\r\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\r\n // Don't bother if no value provided\r\n if (obj === null || typeof obj === 'undefined') {\r\n return;\r\n }\r\n\r\n let i;\r\n let l;\r\n\r\n // Force an array if not already something iterable\r\n if (typeof obj !== 'object') {\r\n /*eslint no-param-reassign:0*/\r\n obj = [obj];\r\n }\r\n\r\n if (isArray(obj)) {\r\n // Iterate over array values\r\n for (i = 0, l = obj.length; i < l; i++) {\r\n fn.call(null, obj[i], i, obj);\r\n }\r\n } else {\r\n // Iterate over object keys\r\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\r\n const len = keys.length;\r\n let key;\r\n\r\n for (i = 0; i < len; i++) {\r\n key = keys[i];\r\n fn.call(null, obj[key], key, obj);\r\n }\r\n }\r\n}\r\n\r\nfunction findKey(obj, key) {\r\n key = key.toLowerCase();\r\n const keys = Object.keys(obj);\r\n let i = keys.length;\r\n let _key;\r\n while (i-- > 0) {\r\n _key = keys[i];\r\n if (key === _key.toLowerCase()) {\r\n return _key;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nconst _global = (() => {\r\n /*eslint no-undef:0*/\r\n if (typeof globalThis !== \"undefined\") return globalThis;\r\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\r\n})();\r\n\r\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\r\n\r\n/**\r\n * Accepts varargs expecting each argument to be an object, then\r\n * immutably merges the properties of each object and returns result.\r\n *\r\n * When multiple objects contain the same key the later object in\r\n * the arguments list will take precedence.\r\n *\r\n * Example:\r\n *\r\n * ```js\r\n * var result = merge({foo: 123}, {foo: 456});\r\n * console.log(result.foo); // outputs 456\r\n * ```\r\n *\r\n * @param {Object} obj1 Object to merge\r\n *\r\n * @returns {Object} Result of all merge properties\r\n */\r\nfunction merge(/* obj1, obj2, obj3, ... */) {\r\n const {caseless} = isContextDefined(this) && this || {};\r\n const result = {};\r\n const assignValue = (val, key) => {\r\n const targetKey = caseless && findKey(result, key) || key;\r\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\r\n result[targetKey] = merge(result[targetKey], val);\r\n } else if (isPlainObject(val)) {\r\n result[targetKey] = merge({}, val);\r\n } else if (isArray(val)) {\r\n result[targetKey] = val.slice();\r\n } else {\r\n result[targetKey] = val;\r\n }\r\n }\r\n\r\n for (let i = 0, l = arguments.length; i < l; i++) {\r\n arguments[i] && forEach(arguments[i], assignValue);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Extends object a by mutably adding to it the properties of object b.\r\n *\r\n * @param {Object} a The object to be extended\r\n * @param {Object} b The object to copy properties from\r\n * @param {Object} thisArg The object to bind function to\r\n *\r\n * @param {Boolean} [allOwnKeys]\r\n * @returns {Object} The resulting value of object a\r\n */\r\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\r\n forEach(b, (val, key) => {\r\n if (thisArg && isFunction(val)) {\r\n a[key] = bind(val, thisArg);\r\n } else {\r\n a[key] = val;\r\n }\r\n }, {allOwnKeys});\r\n return a;\r\n}\r\n\r\n/**\r\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\r\n *\r\n * @param {string} content with BOM\r\n *\r\n * @returns {string} content value without BOM\r\n */\r\nconst stripBOM = (content) => {\r\n if (content.charCodeAt(0) === 0xFEFF) {\r\n content = content.slice(1);\r\n }\r\n return content;\r\n}\r\n\r\n/**\r\n * Inherit the prototype methods from one constructor into another\r\n * @param {function} constructor\r\n * @param {function} superConstructor\r\n * @param {object} [props]\r\n * @param {object} [descriptors]\r\n *\r\n * @returns {void}\r\n */\r\nconst inherits = (constructor, superConstructor, props, descriptors) => {\r\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\r\n constructor.prototype.constructor = constructor;\r\n Object.defineProperty(constructor, 'super', {\r\n value: superConstructor.prototype\r\n });\r\n props && Object.assign(constructor.prototype, props);\r\n}\r\n\r\n/**\r\n * Resolve object with deep prototype chain to a flat object\r\n * @param {Object} sourceObj source object\r\n * @param {Object} [destObj]\r\n * @param {Function|Boolean} [filter]\r\n * @param {Function} [propFilter]\r\n *\r\n * @returns {Object}\r\n */\r\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\r\n let props;\r\n let i;\r\n let prop;\r\n const merged = {};\r\n\r\n destObj = destObj || {};\r\n // eslint-disable-next-line no-eq-null,eqeqeq\r\n if (sourceObj == null) return destObj;\r\n\r\n do {\r\n props = Object.getOwnPropertyNames(sourceObj);\r\n i = props.length;\r\n while (i-- > 0) {\r\n prop = props[i];\r\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\r\n destObj[prop] = sourceObj[prop];\r\n merged[prop] = true;\r\n }\r\n }\r\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\r\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\r\n\r\n return destObj;\r\n}\r\n\r\n/**\r\n * Determines whether a string ends with the characters of a specified string\r\n *\r\n * @param {String} str\r\n * @param {String} searchString\r\n * @param {Number} [position= 0]\r\n *\r\n * @returns {boolean}\r\n */\r\nconst endsWith = (str, searchString, position) => {\r\n str = String(str);\r\n if (position === undefined || position > str.length) {\r\n position = str.length;\r\n }\r\n position -= searchString.length;\r\n const lastIndex = str.indexOf(searchString, position);\r\n return lastIndex !== -1 && lastIndex === position;\r\n}\r\n\r\n\r\n/**\r\n * Returns new array from array like object or null if failed\r\n *\r\n * @param {*} [thing]\r\n *\r\n * @returns {?Array}\r\n */\r\nconst toArray = (thing) => {\r\n if (!thing) return null;\r\n if (isArray(thing)) return thing;\r\n let i = thing.length;\r\n if (!isNumber(i)) return null;\r\n const arr = new Array(i);\r\n while (i-- > 0) {\r\n arr[i] = thing[i];\r\n }\r\n return arr;\r\n}\r\n\r\n/**\r\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\r\n * thing passed in is an instance of Uint8Array\r\n *\r\n * @param {TypedArray}\r\n *\r\n * @returns {Array}\r\n */\r\n// eslint-disable-next-line func-names\r\nconst isTypedArray = (TypedArray => {\r\n // eslint-disable-next-line func-names\r\n return thing => {\r\n return TypedArray && thing instanceof TypedArray;\r\n };\r\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\r\n\r\n/**\r\n * For each entry in the object, call the function with the key and value.\r\n *\r\n * @param {Object} obj - The object to iterate over.\r\n * @param {Function} fn - The function to call for each entry.\r\n *\r\n * @returns {void}\r\n */\r\nconst forEachEntry = (obj, fn) => {\r\n const generator = obj && obj[Symbol.iterator];\r\n\r\n const iterator = generator.call(obj);\r\n\r\n let result;\r\n\r\n while ((result = iterator.next()) && !result.done) {\r\n const pair = result.value;\r\n fn.call(obj, pair[0], pair[1]);\r\n }\r\n}\r\n\r\n/**\r\n * It takes a regular expression and a string, and returns an array of all the matches\r\n *\r\n * @param {string} regExp - The regular expression to match against.\r\n * @param {string} str - The string to search.\r\n *\r\n * @returns {Array}\r\n */\r\nconst matchAll = (regExp, str) => {\r\n let matches;\r\n const arr = [];\r\n\r\n while ((matches = regExp.exec(str)) !== null) {\r\n arr.push(matches);\r\n }\r\n\r\n return arr;\r\n}\r\n\r\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\r\nconst isHTMLForm = kindOfTest('HTMLFormElement');\r\n\r\nconst toCamelCase = str => {\r\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\r\n function replacer(m, p1, p2) {\r\n return p1.toUpperCase() + p2;\r\n }\r\n );\r\n};\r\n\r\n/* Creating a function that will check if an object has a property. */\r\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\r\n\r\n/**\r\n * Determine if a value is a RegExp object\r\n *\r\n * @param {*} val The value to test\r\n *\r\n * @returns {boolean} True if value is a RegExp object, otherwise false\r\n */\r\nconst isRegExp = kindOfTest('RegExp');\r\n\r\nconst reduceDescriptors = (obj, reducer) => {\r\n const descriptors = Object.getOwnPropertyDescriptors(obj);\r\n const reducedDescriptors = {};\r\n\r\n forEach(descriptors, (descriptor, name) => {\r\n let ret;\r\n if ((ret = reducer(descriptor, name, obj)) !== false) {\r\n reducedDescriptors[name] = ret || descriptor;\r\n }\r\n });\r\n\r\n Object.defineProperties(obj, reducedDescriptors);\r\n}\r\n\r\n/**\r\n * Makes all methods read-only\r\n * @param {Object} obj\r\n */\r\n\r\nconst freezeMethods = (obj) => {\r\n reduceDescriptors(obj, (descriptor, name) => {\r\n // skip restricted props in strict mode\r\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\r\n return false;\r\n }\r\n\r\n const value = obj[name];\r\n\r\n if (!isFunction(value)) return;\r\n\r\n descriptor.enumerable = false;\r\n\r\n if ('writable' in descriptor) {\r\n descriptor.writable = false;\r\n return;\r\n }\r\n\r\n if (!descriptor.set) {\r\n descriptor.set = () => {\r\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\r\n };\r\n }\r\n });\r\n}\r\n\r\nconst toObjectSet = (arrayOrString, delimiter) => {\r\n const obj = {};\r\n\r\n const define = (arr) => {\r\n arr.forEach(value => {\r\n obj[value] = true;\r\n });\r\n }\r\n\r\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\r\n\r\n return obj;\r\n}\r\n\r\nconst noop = () => {}\r\n\r\nconst toFiniteNumber = (value, defaultValue) => {\r\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\r\n}\r\n\r\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\r\n\r\nconst DIGIT = '0123456789';\r\n\r\nconst ALPHABET = {\r\n DIGIT,\r\n ALPHA,\r\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\r\n}\r\n\r\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\r\n let str = '';\r\n const {length} = alphabet;\r\n while (size--) {\r\n str += alphabet[Math.random() * length|0]\r\n }\r\n\r\n return str;\r\n}\r\n\r\n/**\r\n * If the thing is a FormData object, return true, otherwise return false.\r\n *\r\n * @param {unknown} thing - The thing to check.\r\n *\r\n * @returns {boolean}\r\n */\r\nfunction isSpecCompliantForm(thing) {\r\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\r\n}\r\n\r\nconst toJSONObject = (obj) => {\r\n const stack = new Array(10);\r\n\r\n const visit = (source, i) => {\r\n\r\n if (isObject(source)) {\r\n if (stack.indexOf(source) >= 0) {\r\n return;\r\n }\r\n\r\n if(!('toJSON' in source)) {\r\n stack[i] = source;\r\n const target = isArray(source) ? [] : {};\r\n\r\n forEach(source, (value, key) => {\r\n const reducedValue = visit(value, i + 1);\r\n !isUndefined(reducedValue) && (target[key] = reducedValue);\r\n });\r\n\r\n stack[i] = undefined;\r\n\r\n return target;\r\n }\r\n }\r\n\r\n return source;\r\n }\r\n\r\n return visit(obj, 0);\r\n}\r\n\r\nconst isAsyncFn = kindOfTest('AsyncFunction');\r\n\r\nconst isThenable = (thing) =>\r\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\r\n\r\n// original code\r\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\r\n\r\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\r\n if (setImmediateSupported) {\r\n return setImmediate;\r\n }\r\n\r\n return postMessageSupported ? ((token, callbacks) => {\r\n _global.addEventListener(\"message\", ({source, data}) => {\r\n if (source === _global && data === token) {\r\n callbacks.length && callbacks.shift()();\r\n }\r\n }, false);\r\n\r\n return (cb) => {\r\n callbacks.push(cb);\r\n _global.postMessage(token, \"*\");\r\n }\r\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\r\n})(\r\n typeof setImmediate === 'function',\r\n isFunction(_global.postMessage)\r\n);\r\n\r\nconst asap = typeof queueMicrotask !== 'undefined' ?\r\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\r\n\r\n// *********************\r\n\r\nexport default {\r\n isArray,\r\n isArrayBuffer,\r\n isBuffer,\r\n isFormData,\r\n isArrayBufferView,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isObject,\r\n isPlainObject,\r\n isReadableStream,\r\n isRequest,\r\n isResponse,\r\n isHeaders,\r\n isUndefined,\r\n isDate,\r\n isFile,\r\n isBlob,\r\n isRegExp,\r\n isFunction,\r\n isStream,\r\n isURLSearchParams,\r\n isTypedArray,\r\n isFileList,\r\n forEach,\r\n merge,\r\n extend,\r\n trim,\r\n stripBOM,\r\n inherits,\r\n toFlatObject,\r\n kindOf,\r\n kindOfTest,\r\n endsWith,\r\n toArray,\r\n forEachEntry,\r\n matchAll,\r\n isHTMLForm,\r\n hasOwnProperty,\r\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\r\n reduceDescriptors,\r\n freezeMethods,\r\n toObjectSet,\r\n toCamelCase,\r\n noop,\r\n toFiniteNumber,\r\n findKey,\r\n global: _global,\r\n isContextDefined,\r\n ALPHABET,\r\n generateString,\r\n isSpecCompliantForm,\r\n toJSONObject,\r\n isAsyncFn,\r\n isThenable,\r\n setImmediate: _setImmediate,\r\n asap\r\n};\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\n\r\n/**\r\n * Create an Error with the specified message, config, error code, request and response.\r\n *\r\n * @param {string} message The error message.\r\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\r\n * @param {Object} [config] The config.\r\n * @param {Object} [request] The request.\r\n * @param {Object} [response] The response.\r\n *\r\n * @returns {Error} The created error.\r\n */\r\nfunction AxiosError(message, code, config, request, response) {\r\n Error.call(this);\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, this.constructor);\r\n } else {\r\n this.stack = (new Error()).stack;\r\n }\r\n\r\n this.message = message;\r\n this.name = 'AxiosError';\r\n code && (this.code = code);\r\n config && (this.config = config);\r\n request && (this.request = request);\r\n if (response) {\r\n this.response = response;\r\n this.status = response.status ? response.status : null;\r\n }\r\n}\r\n\r\nutils.inherits(AxiosError, Error, {\r\n toJSON: function toJSON() {\r\n return {\r\n // Standard\r\n message: this.message,\r\n name: this.name,\r\n // Microsoft\r\n description: this.description,\r\n number: this.number,\r\n // Mozilla\r\n fileName: this.fileName,\r\n lineNumber: this.lineNumber,\r\n columnNumber: this.columnNumber,\r\n stack: this.stack,\r\n // Axios\r\n config: utils.toJSONObject(this.config),\r\n code: this.code,\r\n status: this.status\r\n };\r\n }\r\n});\r\n\r\nconst prototype = AxiosError.prototype;\r\nconst descriptors = {};\r\n\r\n[\r\n 'ERR_BAD_OPTION_VALUE',\r\n 'ERR_BAD_OPTION',\r\n 'ECONNABORTED',\r\n 'ETIMEDOUT',\r\n 'ERR_NETWORK',\r\n 'ERR_FR_TOO_MANY_REDIRECTS',\r\n 'ERR_DEPRECATED',\r\n 'ERR_BAD_RESPONSE',\r\n 'ERR_BAD_REQUEST',\r\n 'ERR_CANCELED',\r\n 'ERR_NOT_SUPPORT',\r\n 'ERR_INVALID_URL'\r\n// eslint-disable-next-line func-names\r\n].forEach(code => {\r\n descriptors[code] = {value: code};\r\n});\r\n\r\nObject.defineProperties(AxiosError, descriptors);\r\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\r\n\r\n// eslint-disable-next-line func-names\r\nAxiosError.from = (error, code, config, request, response, customProps) => {\r\n const axiosError = Object.create(prototype);\r\n\r\n utils.toFlatObject(error, axiosError, function filter(obj) {\r\n return obj !== Error.prototype;\r\n }, prop => {\r\n return prop !== 'isAxiosError';\r\n });\r\n\r\n AxiosError.call(axiosError, error.message, code, config, request, response);\r\n\r\n axiosError.cause = error;\r\n\r\n axiosError.name = error.name;\r\n\r\n customProps && Object.assign(axiosError, customProps);\r\n\r\n return axiosError;\r\n};\r\n\r\nexport default AxiosError;\r\n", "// eslint-disable-next-line strict\r\nexport default null;\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport AxiosError from '../core/AxiosError.js';\r\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\r\nimport PlatformFormData from '../platform/node/classes/FormData.js';\r\n\r\n/**\r\n * Determines if the given thing is a array or js object.\r\n *\r\n * @param {string} thing - The object or array to be visited.\r\n *\r\n * @returns {boolean}\r\n */\r\nfunction isVisitable(thing) {\r\n return utils.isPlainObject(thing) || utils.isArray(thing);\r\n}\r\n\r\n/**\r\n * It removes the brackets from the end of a string\r\n *\r\n * @param {string} key - The key of the parameter.\r\n *\r\n * @returns {string} the key without the brackets.\r\n */\r\nfunction removeBrackets(key) {\r\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\r\n}\r\n\r\n/**\r\n * It takes a path, a key, and a boolean, and returns a string\r\n *\r\n * @param {string} path - The path to the current key.\r\n * @param {string} key - The key of the current object being iterated over.\r\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\r\n *\r\n * @returns {string} The path to the current key.\r\n */\r\nfunction renderKey(path, key, dots) {\r\n if (!path) return key;\r\n return path.concat(key).map(function each(token, i) {\r\n // eslint-disable-next-line no-param-reassign\r\n token = removeBrackets(token);\r\n return !dots && i ? '[' + token + ']' : token;\r\n }).join(dots ? '.' : '');\r\n}\r\n\r\n/**\r\n * If the array is an array and none of its elements are visitable, then it's a flat array.\r\n *\r\n * @param {Array} arr - The array to check\r\n *\r\n * @returns {boolean}\r\n */\r\nfunction isFlatArray(arr) {\r\n return utils.isArray(arr) && !arr.some(isVisitable);\r\n}\r\n\r\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\r\n return /^is[A-Z]/.test(prop);\r\n});\r\n\r\n/**\r\n * Convert a data object to FormData\r\n *\r\n * @param {Object} obj\r\n * @param {?Object} [formData]\r\n * @param {?Object} [options]\r\n * @param {Function} [options.visitor]\r\n * @param {Boolean} [options.metaTokens = true]\r\n * @param {Boolean} [options.dots = false]\r\n * @param {?Boolean} [options.indexes = false]\r\n *\r\n * @returns {Object}\r\n **/\r\n\r\n/**\r\n * It converts an object into a FormData object\r\n *\r\n * @param {Object} obj - The object to convert to form data.\r\n * @param {string} formData - The FormData object to append to.\r\n * @param {Object} options\r\n *\r\n * @returns\r\n */\r\nfunction toFormData(obj, formData, options) {\r\n if (!utils.isObject(obj)) {\r\n throw new TypeError('target must be an object');\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n formData = formData || new (PlatformFormData || FormData)();\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n options = utils.toFlatObject(options, {\r\n metaTokens: true,\r\n dots: false,\r\n indexes: false\r\n }, false, function defined(option, source) {\r\n // eslint-disable-next-line no-eq-null,eqeqeq\r\n return !utils.isUndefined(source[option]);\r\n });\r\n\r\n const metaTokens = options.metaTokens;\r\n // eslint-disable-next-line no-use-before-define\r\n const visitor = options.visitor || defaultVisitor;\r\n const dots = options.dots;\r\n const indexes = options.indexes;\r\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\r\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\r\n\r\n if (!utils.isFunction(visitor)) {\r\n throw new TypeError('visitor must be a function');\r\n }\r\n\r\n function convertValue(value) {\r\n if (value === null) return '';\r\n\r\n if (utils.isDate(value)) {\r\n return value.toISOString();\r\n }\r\n\r\n if (!useBlob && utils.isBlob(value)) {\r\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\r\n }\r\n\r\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\r\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Default visitor.\r\n *\r\n * @param {*} value\r\n * @param {String|Number} key\r\n * @param {Array} path\r\n * @this {FormData}\r\n *\r\n * @returns {boolean} return true to visit the each prop of the value recursively\r\n */\r\n function defaultVisitor(value, key, path) {\r\n let arr = value;\r\n\r\n if (value && !path && typeof value === 'object') {\r\n if (utils.endsWith(key, '{}')) {\r\n // eslint-disable-next-line no-param-reassign\r\n key = metaTokens ? key : key.slice(0, -2);\r\n // eslint-disable-next-line no-param-reassign\r\n value = JSON.stringify(value);\r\n } else if (\r\n (utils.isArray(value) && isFlatArray(value)) ||\r\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\r\n )) {\r\n // eslint-disable-next-line no-param-reassign\r\n key = removeBrackets(key);\r\n\r\n arr.forEach(function each(el, index) {\r\n !(utils.isUndefined(el) || el === null) && formData.append(\r\n // eslint-disable-next-line no-nested-ternary\r\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\r\n convertValue(el)\r\n );\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (isVisitable(value)) {\r\n return true;\r\n }\r\n\r\n formData.append(renderKey(path, key, dots), convertValue(value));\r\n\r\n return false;\r\n }\r\n\r\n const stack = [];\r\n\r\n const exposedHelpers = Object.assign(predicates, {\r\n defaultVisitor,\r\n convertValue,\r\n isVisitable\r\n });\r\n\r\n function build(value, path) {\r\n if (utils.isUndefined(value)) return;\r\n\r\n if (stack.indexOf(value) !== -1) {\r\n throw Error('Circular reference detected in ' + path.join('.'));\r\n }\r\n\r\n stack.push(value);\r\n\r\n utils.forEach(value, function each(el, key) {\r\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\r\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\r\n );\r\n\r\n if (result === true) {\r\n build(el, path ? path.concat(key) : [key]);\r\n }\r\n });\r\n\r\n stack.pop();\r\n }\r\n\r\n if (!utils.isObject(obj)) {\r\n throw new TypeError('data must be an object');\r\n }\r\n\r\n build(obj);\r\n\r\n return formData;\r\n}\r\n\r\nexport default toFormData;\r\n", "'use strict';\r\n\r\nimport toFormData from './toFormData.js';\r\n\r\n/**\r\n * It encodes a string by replacing all characters that are not in the unreserved set with\r\n * their percent-encoded equivalents\r\n *\r\n * @param {string} str - The string to encode.\r\n *\r\n * @returns {string} The encoded string.\r\n */\r\nfunction encode(str) {\r\n const charMap = {\r\n '!': '%21',\r\n \"'\": '%27',\r\n '(': '%28',\r\n ')': '%29',\r\n '~': '%7E',\r\n '%20': '+',\r\n '%00': '\\x00'\r\n };\r\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\r\n return charMap[match];\r\n });\r\n}\r\n\r\n/**\r\n * It takes a params object and converts it to a FormData object\r\n *\r\n * @param {Object} params - The parameters to be converted to a FormData object.\r\n * @param {Object} options - The options object passed to the Axios constructor.\r\n *\r\n * @returns {void}\r\n */\r\nfunction AxiosURLSearchParams(params, options) {\r\n this._pairs = [];\r\n\r\n params && toFormData(params, this, options);\r\n}\r\n\r\nconst prototype = AxiosURLSearchParams.prototype;\r\n\r\nprototype.append = function append(name, value) {\r\n this._pairs.push([name, value]);\r\n};\r\n\r\nprototype.toString = function toString(encoder) {\r\n const _encode = encoder ? function(value) {\r\n return encoder.call(this, value, encode);\r\n } : encode;\r\n\r\n return this._pairs.map(function each(pair) {\r\n return _encode(pair[0]) + '=' + _encode(pair[1]);\r\n }, '').join('&');\r\n};\r\n\r\nexport default AxiosURLSearchParams;\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\r\n\r\n/**\r\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\r\n * URI encoded counterparts\r\n *\r\n * @param {string} val The value to be encoded.\r\n *\r\n * @returns {string} The encoded value.\r\n */\r\nfunction encode(val) {\r\n return encodeURIComponent(val).\r\n replace(/%3A/gi, ':').\r\n replace(/%24/g, '$').\r\n replace(/%2C/gi, ',').\r\n replace(/%20/g, '+').\r\n replace(/%5B/gi, '[').\r\n replace(/%5D/gi, ']');\r\n}\r\n\r\n/**\r\n * Build a URL by appending params to the end\r\n *\r\n * @param {string} url The base of the url (e.g., http://www.google.com)\r\n * @param {object} [params] The params to be appended\r\n * @param {?object} options\r\n *\r\n * @returns {string} The formatted url\r\n */\r\nexport default function buildURL(url, params, options) {\r\n /*eslint no-param-reassign:0*/\r\n if (!params) {\r\n return url;\r\n }\r\n \r\n const _encode = options && options.encode || encode;\r\n\r\n const serializeFn = options && options.serialize;\r\n\r\n let serializedParams;\r\n\r\n if (serializeFn) {\r\n serializedParams = serializeFn(params, options);\r\n } else {\r\n serializedParams = utils.isURLSearchParams(params) ?\r\n params.toString() :\r\n new AxiosURLSearchParams(params, options).toString(_encode);\r\n }\r\n\r\n if (serializedParams) {\r\n const hashmarkIndex = url.indexOf(\"#\");\r\n\r\n if (hashmarkIndex !== -1) {\r\n url = url.slice(0, hashmarkIndex);\r\n }\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\r\n }\r\n\r\n return url;\r\n}\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\n\r\nclass InterceptorManager {\r\n constructor() {\r\n this.handlers = [];\r\n }\r\n\r\n /**\r\n * Add a new interceptor to the stack\r\n *\r\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\r\n * @param {Function} rejected The function to handle `reject` for a `Promise`\r\n *\r\n * @return {Number} An ID used to remove interceptor later\r\n */\r\n use(fulfilled, rejected, options) {\r\n this.handlers.push({\r\n fulfilled,\r\n rejected,\r\n synchronous: options ? options.synchronous : false,\r\n runWhen: options ? options.runWhen : null\r\n });\r\n return this.handlers.length - 1;\r\n }\r\n\r\n /**\r\n * Remove an interceptor from the stack\r\n *\r\n * @param {Number} id The ID that was returned by `use`\r\n *\r\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\r\n */\r\n eject(id) {\r\n if (this.handlers[id]) {\r\n this.handlers[id] = null;\r\n }\r\n }\r\n\r\n /**\r\n * Clear all interceptors from the stack\r\n *\r\n * @returns {void}\r\n */\r\n clear() {\r\n if (this.handlers) {\r\n this.handlers = [];\r\n }\r\n }\r\n\r\n /**\r\n * Iterate over all the registered interceptors\r\n *\r\n * This method is particularly useful for skipping over any\r\n * interceptors that may have become `null` calling `eject`.\r\n *\r\n * @param {Function} fn The function to call for each interceptor\r\n *\r\n * @returns {void}\r\n */\r\n forEach(fn) {\r\n utils.forEach(this.handlers, function forEachHandler(h) {\r\n if (h !== null) {\r\n fn(h);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default InterceptorManager;\r\n", "'use strict';\r\n\r\nexport default {\r\n silentJSONParsing: true,\r\n forcedJSONParsing: true,\r\n clarifyTimeoutError: false\r\n};\r\n", "'use strict';\r\n\r\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\r\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\r\n", "'use strict';\r\n\r\nexport default typeof FormData !== 'undefined' ? FormData : null;\r\n", "'use strict'\r\n\r\nexport default typeof Blob !== 'undefined' ? Blob : null\r\n", "import URLSearchParams from './classes/URLSearchParams.js'\r\nimport FormData from './classes/FormData.js'\r\nimport Blob from './classes/Blob.js'\r\n\r\nexport default {\r\n isBrowser: true,\r\n classes: {\r\n URLSearchParams,\r\n FormData,\r\n Blob\r\n },\r\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\r\n};\r\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\r\n\r\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\r\n\r\n/**\r\n * Determine if we're running in a standard browser environment\r\n *\r\n * This allows axios to run in a web worker, and react-native.\r\n * Both environments support XMLHttpRequest, but not fully standard globals.\r\n *\r\n * web workers:\r\n * typeof window -> undefined\r\n * typeof document -> undefined\r\n *\r\n * react-native:\r\n * navigator.product -> 'ReactNative'\r\n * nativescript\r\n * navigator.product -> 'NativeScript' or 'NS'\r\n *\r\n * @returns {boolean}\r\n */\r\nconst hasStandardBrowserEnv = hasBrowserEnv &&\r\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\r\n\r\n/**\r\n * Determine if we're running in a standard browser webWorker environment\r\n *\r\n * Although the `isStandardBrowserEnv` method indicates that\r\n * `allows axios to run in a web worker`, the WebWorker will still be\r\n * filtered out due to its judgment standard\r\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\r\n * This leads to a problem when axios post `FormData` in webWorker\r\n */\r\nconst hasStandardBrowserWebWorkerEnv = (() => {\r\n return (\r\n typeof WorkerGlobalScope !== 'undefined' &&\r\n // eslint-disable-next-line no-undef\r\n self instanceof WorkerGlobalScope &&\r\n typeof self.importScripts === 'function'\r\n );\r\n})();\r\n\r\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\r\n\r\nexport {\r\n hasBrowserEnv,\r\n hasStandardBrowserWebWorkerEnv,\r\n hasStandardBrowserEnv,\r\n _navigator as navigator,\r\n origin\r\n}\r\n", "import platform from './node/index.js';\r\nimport * as utils from './common/utils.js';\r\n\r\nexport default {\r\n ...utils,\r\n ...platform\r\n}\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport toFormData from './toFormData.js';\r\nimport platform from '../platform/index.js';\r\n\r\nexport default function toURLEncodedForm(data, options) {\r\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\r\n visitor: function(value, key, path, helpers) {\r\n if (platform.isNode && utils.isBuffer(value)) {\r\n this.append(key, value.toString('base64'));\r\n return false;\r\n }\r\n\r\n return helpers.defaultVisitor.apply(this, arguments);\r\n }\r\n }, options));\r\n}\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\n\r\n/**\r\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\r\n *\r\n * @param {string} name - The name of the property to get.\r\n *\r\n * @returns An array of strings.\r\n */\r\nfunction parsePropPath(name) {\r\n // foo[x][y][z]\r\n // foo.x.y.z\r\n // foo-x-y-z\r\n // foo x y z\r\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\r\n return match[0] === '[]' ? '' : match[1] || match[0];\r\n });\r\n}\r\n\r\n/**\r\n * Convert an array to an object.\r\n *\r\n * @param {Array} arr - The array to convert to an object.\r\n *\r\n * @returns An object with the same keys and values as the array.\r\n */\r\nfunction arrayToObject(arr) {\r\n const obj = {};\r\n const keys = Object.keys(arr);\r\n let i;\r\n const len = keys.length;\r\n let key;\r\n for (i = 0; i < len; i++) {\r\n key = keys[i];\r\n obj[key] = arr[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * It takes a FormData object and returns a JavaScript object\r\n *\r\n * @param {string} formData The FormData object to convert to JSON.\r\n *\r\n * @returns {Object | null} The converted object.\r\n */\r\nfunction formDataToJSON(formData) {\r\n function buildPath(path, value, target, index) {\r\n let name = path[index++];\r\n\r\n if (name === '__proto__') return true;\r\n\r\n const isNumericKey = Number.isFinite(+name);\r\n const isLast = index >= path.length;\r\n name = !name && utils.isArray(target) ? target.length : name;\r\n\r\n if (isLast) {\r\n if (utils.hasOwnProp(target, name)) {\r\n target[name] = [target[name], value];\r\n } else {\r\n target[name] = value;\r\n }\r\n\r\n return !isNumericKey;\r\n }\r\n\r\n if (!target[name] || !utils.isObject(target[name])) {\r\n target[name] = [];\r\n }\r\n\r\n const result = buildPath(path, value, target[name], index);\r\n\r\n if (result && utils.isArray(target[name])) {\r\n target[name] = arrayToObject(target[name]);\r\n }\r\n\r\n return !isNumericKey;\r\n }\r\n\r\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\r\n const obj = {};\r\n\r\n utils.forEachEntry(formData, (name, value) => {\r\n buildPath(parsePropPath(name), value, obj, 0);\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default formDataToJSON;\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport AxiosError from '../core/AxiosError.js';\r\nimport transitionalDefaults from './transitional.js';\r\nimport toFormData from '../helpers/toFormData.js';\r\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\r\nimport platform from '../platform/index.js';\r\nimport formDataToJSON from '../helpers/formDataToJSON.js';\r\n\r\n/**\r\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\r\n * of the input\r\n *\r\n * @param {any} rawValue - The value to be stringified.\r\n * @param {Function} parser - A function that parses a string into a JavaScript object.\r\n * @param {Function} encoder - A function that takes a value and returns a string.\r\n *\r\n * @returns {string} A stringified version of the rawValue.\r\n */\r\nfunction stringifySafely(rawValue, parser, encoder) {\r\n if (utils.isString(rawValue)) {\r\n try {\r\n (parser || JSON.parse)(rawValue);\r\n return utils.trim(rawValue);\r\n } catch (e) {\r\n if (e.name !== 'SyntaxError') {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n return (encoder || JSON.stringify)(rawValue);\r\n}\r\n\r\nconst defaults = {\r\n\r\n transitional: transitionalDefaults,\r\n\r\n adapter: ['xhr', 'http', 'fetch'],\r\n\r\n transformRequest: [function transformRequest(data, headers) {\r\n const contentType = headers.getContentType() || '';\r\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\r\n const isObjectPayload = utils.isObject(data);\r\n\r\n if (isObjectPayload && utils.isHTMLForm(data)) {\r\n data = new FormData(data);\r\n }\r\n\r\n const isFormData = utils.isFormData(data);\r\n\r\n if (isFormData) {\r\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\r\n }\r\n\r\n if (utils.isArrayBuffer(data) ||\r\n utils.isBuffer(data) ||\r\n utils.isStream(data) ||\r\n utils.isFile(data) ||\r\n utils.isBlob(data) ||\r\n utils.isReadableStream(data)\r\n ) {\r\n return data;\r\n }\r\n if (utils.isArrayBufferView(data)) {\r\n return data.buffer;\r\n }\r\n if (utils.isURLSearchParams(data)) {\r\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\r\n return data.toString();\r\n }\r\n\r\n let isFileList;\r\n\r\n if (isObjectPayload) {\r\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\r\n return toURLEncodedForm(data, this.formSerializer).toString();\r\n }\r\n\r\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\r\n const _FormData = this.env && this.env.FormData;\r\n\r\n return toFormData(\r\n isFileList ? {'files[]': data} : data,\r\n _FormData && new _FormData(),\r\n this.formSerializer\r\n );\r\n }\r\n }\r\n\r\n if (isObjectPayload || hasJSONContentType ) {\r\n headers.setContentType('application/json', false);\r\n return stringifySafely(data);\r\n }\r\n\r\n return data;\r\n }],\r\n\r\n transformResponse: [function transformResponse(data) {\r\n const transitional = this.transitional || defaults.transitional;\r\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\r\n const JSONRequested = this.responseType === 'json';\r\n\r\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\r\n return data;\r\n }\r\n\r\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\r\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\r\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\r\n\r\n try {\r\n return JSON.parse(data);\r\n } catch (e) {\r\n if (strictJSONParsing) {\r\n if (e.name === 'SyntaxError') {\r\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\r\n }\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n }],\r\n\r\n /**\r\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\r\n * timeout is not created.\r\n */\r\n timeout: 0,\r\n\r\n xsrfCookieName: 'XSRF-TOKEN',\r\n xsrfHeaderName: 'X-XSRF-TOKEN',\r\n\r\n maxContentLength: -1,\r\n maxBodyLength: -1,\r\n\r\n env: {\r\n FormData: platform.classes.FormData,\r\n Blob: platform.classes.Blob\r\n },\r\n\r\n validateStatus: function validateStatus(status) {\r\n return status >= 200 && status < 300;\r\n },\r\n\r\n headers: {\r\n common: {\r\n 'Accept': 'application/json, text/plain, */*',\r\n 'Content-Type': undefined\r\n }\r\n }\r\n};\r\n\r\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\r\n defaults.headers[method] = {};\r\n});\r\n\r\nexport default defaults;\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\n\r\n// RawAxiosHeaders whose duplicates are ignored by node\r\n// c.f. https://nodejs.org/api/http.html#http_message_headers\r\nconst ignoreDuplicateOf = utils.toObjectSet([\r\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\r\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\r\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\r\n 'referer', 'retry-after', 'user-agent'\r\n]);\r\n\r\n/**\r\n * Parse headers into an object\r\n *\r\n * ```\r\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\r\n * Content-Type: application/json\r\n * Connection: keep-alive\r\n * Transfer-Encoding: chunked\r\n * ```\r\n *\r\n * @param {String} rawHeaders Headers needing to be parsed\r\n *\r\n * @returns {Object} Headers parsed into an object\r\n */\r\nexport default rawHeaders => {\r\n const parsed = {};\r\n let key;\r\n let val;\r\n let i;\r\n\r\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\r\n i = line.indexOf(':');\r\n key = line.substring(0, i).trim().toLowerCase();\r\n val = line.substring(i + 1).trim();\r\n\r\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\r\n return;\r\n }\r\n\r\n if (key === 'set-cookie') {\r\n if (parsed[key]) {\r\n parsed[key].push(val);\r\n } else {\r\n parsed[key] = [val];\r\n }\r\n } else {\r\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\r\n }\r\n });\r\n\r\n return parsed;\r\n};\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport parseHeaders from '../helpers/parseHeaders.js';\r\n\r\nconst $internals = Symbol('internals');\r\n\r\nfunction normalizeHeader(header) {\r\n return header && String(header).trim().toLowerCase();\r\n}\r\n\r\nfunction normalizeValue(value) {\r\n if (value === false || value == null) {\r\n return value;\r\n }\r\n\r\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\r\n}\r\n\r\nfunction parseTokens(str) {\r\n const tokens = Object.create(null);\r\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\r\n let match;\r\n\r\n while ((match = tokensRE.exec(str))) {\r\n tokens[match[1]] = match[2];\r\n }\r\n\r\n return tokens;\r\n}\r\n\r\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\r\n\r\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\r\n if (utils.isFunction(filter)) {\r\n return filter.call(this, value, header);\r\n }\r\n\r\n if (isHeaderNameFilter) {\r\n value = header;\r\n }\r\n\r\n if (!utils.isString(value)) return;\r\n\r\n if (utils.isString(filter)) {\r\n return value.indexOf(filter) !== -1;\r\n }\r\n\r\n if (utils.isRegExp(filter)) {\r\n return filter.test(value);\r\n }\r\n}\r\n\r\nfunction formatHeader(header) {\r\n return header.trim()\r\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\r\n return char.toUpperCase() + str;\r\n });\r\n}\r\n\r\nfunction buildAccessors(obj, header) {\r\n const accessorName = utils.toCamelCase(' ' + header);\r\n\r\n ['get', 'set', 'has'].forEach(methodName => {\r\n Object.defineProperty(obj, methodName + accessorName, {\r\n value: function(arg1, arg2, arg3) {\r\n return this[methodName].call(this, header, arg1, arg2, arg3);\r\n },\r\n configurable: true\r\n });\r\n });\r\n}\r\n\r\nclass AxiosHeaders {\r\n constructor(headers) {\r\n headers && this.set(headers);\r\n }\r\n\r\n set(header, valueOrRewrite, rewrite) {\r\n const self = this;\r\n\r\n function setHeader(_value, _header, _rewrite) {\r\n const lHeader = normalizeHeader(_header);\r\n\r\n if (!lHeader) {\r\n throw new Error('header name must be a non-empty string');\r\n }\r\n\r\n const key = utils.findKey(self, lHeader);\r\n\r\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\r\n self[key || _header] = normalizeValue(_value);\r\n }\r\n }\r\n\r\n const setHeaders = (headers, _rewrite) =>\r\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\r\n\r\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\r\n setHeaders(header, valueOrRewrite)\r\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\r\n setHeaders(parseHeaders(header), valueOrRewrite);\r\n } else if (utils.isHeaders(header)) {\r\n for (const [key, value] of header.entries()) {\r\n setHeader(value, key, rewrite);\r\n }\r\n } else {\r\n header != null && setHeader(valueOrRewrite, header, rewrite);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n get(header, parser) {\r\n header = normalizeHeader(header);\r\n\r\n if (header) {\r\n const key = utils.findKey(this, header);\r\n\r\n if (key) {\r\n const value = this[key];\r\n\r\n if (!parser) {\r\n return value;\r\n }\r\n\r\n if (parser === true) {\r\n return parseTokens(value);\r\n }\r\n\r\n if (utils.isFunction(parser)) {\r\n return parser.call(this, value, key);\r\n }\r\n\r\n if (utils.isRegExp(parser)) {\r\n return parser.exec(value);\r\n }\r\n\r\n throw new TypeError('parser must be boolean|regexp|function');\r\n }\r\n }\r\n }\r\n\r\n has(header, matcher) {\r\n header = normalizeHeader(header);\r\n\r\n if (header) {\r\n const key = utils.findKey(this, header);\r\n\r\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n delete(header, matcher) {\r\n const self = this;\r\n let deleted = false;\r\n\r\n function deleteHeader(_header) {\r\n _header = normalizeHeader(_header);\r\n\r\n if (_header) {\r\n const key = utils.findKey(self, _header);\r\n\r\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\r\n delete self[key];\r\n\r\n deleted = true;\r\n }\r\n }\r\n }\r\n\r\n if (utils.isArray(header)) {\r\n header.forEach(deleteHeader);\r\n } else {\r\n deleteHeader(header);\r\n }\r\n\r\n return deleted;\r\n }\r\n\r\n clear(matcher) {\r\n const keys = Object.keys(this);\r\n let i = keys.length;\r\n let deleted = false;\r\n\r\n while (i--) {\r\n const key = keys[i];\r\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\r\n delete this[key];\r\n deleted = true;\r\n }\r\n }\r\n\r\n return deleted;\r\n }\r\n\r\n normalize(format) {\r\n const self = this;\r\n const headers = {};\r\n\r\n utils.forEach(this, (value, header) => {\r\n const key = utils.findKey(headers, header);\r\n\r\n if (key) {\r\n self[key] = normalizeValue(value);\r\n delete self[header];\r\n return;\r\n }\r\n\r\n const normalized = format ? formatHeader(header) : String(header).trim();\r\n\r\n if (normalized !== header) {\r\n delete self[header];\r\n }\r\n\r\n self[normalized] = normalizeValue(value);\r\n\r\n headers[normalized] = true;\r\n });\r\n\r\n return this;\r\n }\r\n\r\n concat(...targets) {\r\n return this.constructor.concat(this, ...targets);\r\n }\r\n\r\n toJSON(asStrings) {\r\n const obj = Object.create(null);\r\n\r\n utils.forEach(this, (value, header) => {\r\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n [Symbol.iterator]() {\r\n return Object.entries(this.toJSON())[Symbol.iterator]();\r\n }\r\n\r\n toString() {\r\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\r\n }\r\n\r\n get [Symbol.toStringTag]() {\r\n return 'AxiosHeaders';\r\n }\r\n\r\n static from(thing) {\r\n return thing instanceof this ? thing : new this(thing);\r\n }\r\n\r\n static concat(first, ...targets) {\r\n const computed = new this(first);\r\n\r\n targets.forEach((target) => computed.set(target));\r\n\r\n return computed;\r\n }\r\n\r\n static accessor(header) {\r\n const internals = this[$internals] = (this[$internals] = {\r\n accessors: {}\r\n });\r\n\r\n const accessors = internals.accessors;\r\n const prototype = this.prototype;\r\n\r\n function defineAccessor(_header) {\r\n const lHeader = normalizeHeader(_header);\r\n\r\n if (!accessors[lHeader]) {\r\n buildAccessors(prototype, _header);\r\n accessors[lHeader] = true;\r\n }\r\n }\r\n\r\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\r\n\r\n return this;\r\n }\r\n}\r\n\r\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\r\n\r\n// reserved names hotfix\r\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\r\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\r\n return {\r\n get: () => value,\r\n set(headerValue) {\r\n this[mapped] = headerValue;\r\n }\r\n }\r\n});\r\n\r\nutils.freezeMethods(AxiosHeaders);\r\n\r\nexport default AxiosHeaders;\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\nimport defaults from '../defaults/index.js';\r\nimport AxiosHeaders from '../core/AxiosHeaders.js';\r\n\r\n/**\r\n * Transform the data for a request or a response\r\n *\r\n * @param {Array|Function} fns A single function or Array of functions\r\n * @param {?Object} response The response object\r\n *\r\n * @returns {*} The resulting transformed data\r\n */\r\nexport default function transformData(fns, response) {\r\n const config = this || defaults;\r\n const context = response || config;\r\n const headers = AxiosHeaders.from(context.headers);\r\n let data = context.data;\r\n\r\n utils.forEach(fns, function transform(fn) {\r\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\r\n });\r\n\r\n headers.normalize();\r\n\r\n return data;\r\n}\r\n", "'use strict';\r\n\r\nexport default function isCancel(value) {\r\n return !!(value && value.__CANCEL__);\r\n}\r\n", "'use strict';\r\n\r\nimport AxiosError from '../core/AxiosError.js';\r\nimport utils from '../utils.js';\r\n\r\n/**\r\n * A `CanceledError` is an object that is thrown when an operation is canceled.\r\n *\r\n * @param {string=} message The message.\r\n * @param {Object=} config The config.\r\n * @param {Object=} request The request.\r\n *\r\n * @returns {CanceledError} The created error.\r\n */\r\nfunction CanceledError(message, config, request) {\r\n // eslint-disable-next-line no-eq-null,eqeqeq\r\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\r\n this.name = 'CanceledError';\r\n}\r\n\r\nutils.inherits(CanceledError, AxiosError, {\r\n __CANCEL__: true\r\n});\r\n\r\nexport default CanceledError;\r\n", "'use strict';\r\n\r\nimport AxiosError from './AxiosError.js';\r\n\r\n/**\r\n * Resolve or reject a Promise based on response status.\r\n *\r\n * @param {Function} resolve A function that resolves the promise.\r\n * @param {Function} reject A function that rejects the promise.\r\n * @param {object} response The response.\r\n *\r\n * @returns {object} The response.\r\n */\r\nexport default function settle(resolve, reject, response) {\r\n const validateStatus = response.config.validateStatus;\r\n if (!response.status || !validateStatus || validateStatus(response.status)) {\r\n resolve(response);\r\n } else {\r\n reject(new AxiosError(\r\n 'Request failed with status code ' + response.status,\r\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\r\n response.config,\r\n response.request,\r\n response\r\n ));\r\n }\r\n}\r\n", "'use strict';\r\n\r\nexport default function parseProtocol(url) {\r\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\r\n return match && match[1] || '';\r\n}\r\n", "'use strict';\r\n\r\n/**\r\n * Calculate data maxRate\r\n * @param {Number} [samplesCount= 10]\r\n * @param {Number} [min= 1000]\r\n * @returns {Function}\r\n */\r\nfunction speedometer(samplesCount, min) {\r\n samplesCount = samplesCount || 10;\r\n const bytes = new Array(samplesCount);\r\n const timestamps = new Array(samplesCount);\r\n let head = 0;\r\n let tail = 0;\r\n let firstSampleTS;\r\n\r\n min = min !== undefined ? min : 1000;\r\n\r\n return function push(chunkLength) {\r\n const now = Date.now();\r\n\r\n const startedAt = timestamps[tail];\r\n\r\n if (!firstSampleTS) {\r\n firstSampleTS = now;\r\n }\r\n\r\n bytes[head] = chunkLength;\r\n timestamps[head] = now;\r\n\r\n let i = tail;\r\n let bytesCount = 0;\r\n\r\n while (i !== head) {\r\n bytesCount += bytes[i++];\r\n i = i % samplesCount;\r\n }\r\n\r\n head = (head + 1) % samplesCount;\r\n\r\n if (head === tail) {\r\n tail = (tail + 1) % samplesCount;\r\n }\r\n\r\n if (now - firstSampleTS < min) {\r\n return;\r\n }\r\n\r\n const passed = startedAt && now - startedAt;\r\n\r\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\r\n };\r\n}\r\n\r\nexport default speedometer;\r\n", "/**\r\n * Throttle decorator\r\n * @param {Function} fn\r\n * @param {Number} freq\r\n * @return {Function}\r\n */\r\nfunction throttle(fn, freq) {\r\n let timestamp = 0;\r\n let threshold = 1000 / freq;\r\n let lastArgs;\r\n let timer;\r\n\r\n const invoke = (args, now = Date.now()) => {\r\n timestamp = now;\r\n lastArgs = null;\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n fn.apply(null, args);\r\n }\r\n\r\n const throttled = (...args) => {\r\n const now = Date.now();\r\n const passed = now - timestamp;\r\n if ( passed >= threshold) {\r\n invoke(args, now);\r\n } else {\r\n lastArgs = args;\r\n if (!timer) {\r\n timer = setTimeout(() => {\r\n timer = null;\r\n invoke(lastArgs)\r\n }, threshold - passed);\r\n }\r\n }\r\n }\r\n\r\n const flush = () => lastArgs && invoke(lastArgs);\r\n\r\n return [throttled, flush];\r\n}\r\n\r\nexport default throttle;\r\n", "import speedometer from \"./speedometer.js\";\r\nimport throttle from \"./throttle.js\";\r\nimport utils from \"../utils.js\";\r\n\r\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\r\n let bytesNotified = 0;\r\n const _speedometer = speedometer(50, 250);\r\n\r\n return throttle(e => {\r\n const loaded = e.loaded;\r\n const total = e.lengthComputable ? e.total : undefined;\r\n const progressBytes = loaded - bytesNotified;\r\n const rate = _speedometer(progressBytes);\r\n const inRange = loaded <= total;\r\n\r\n bytesNotified = loaded;\r\n\r\n const data = {\r\n loaded,\r\n total,\r\n progress: total ? (loaded / total) : undefined,\r\n bytes: progressBytes,\r\n rate: rate ? rate : undefined,\r\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\r\n event: e,\r\n lengthComputable: total != null,\r\n [isDownloadStream ? 'download' : 'upload']: true\r\n };\r\n\r\n listener(data);\r\n }, freq);\r\n}\r\n\r\nexport const progressEventDecorator = (total, throttled) => {\r\n const lengthComputable = total != null;\r\n\r\n return [(loaded) => throttled[0]({\r\n lengthComputable,\r\n total,\r\n loaded\r\n }), throttled[1]];\r\n}\r\n\r\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\nimport platform from '../platform/index.js';\r\n\r\nexport default platform.hasStandardBrowserEnv ?\r\n\r\n// Standard browser envs have full support of the APIs needed to test\r\n// whether the request URL is of the same origin as current location.\r\n (function standardBrowserEnv() {\r\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\r\n const urlParsingNode = document.createElement('a');\r\n let originURL;\r\n\r\n /**\r\n * Parse a URL to discover its components\r\n *\r\n * @param {String} url The URL to be parsed\r\n * @returns {Object}\r\n */\r\n function resolveURL(url) {\r\n let href = url;\r\n\r\n if (msie) {\r\n // IE needs attribute set twice to normalize properties\r\n urlParsingNode.setAttribute('href', href);\r\n href = urlParsingNode.href;\r\n }\r\n\r\n urlParsingNode.setAttribute('href', href);\r\n\r\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\r\n return {\r\n href: urlParsingNode.href,\r\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\r\n host: urlParsingNode.host,\r\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\r\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\r\n hostname: urlParsingNode.hostname,\r\n port: urlParsingNode.port,\r\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\r\n urlParsingNode.pathname :\r\n '/' + urlParsingNode.pathname\r\n };\r\n }\r\n\r\n originURL = resolveURL(window.location.href);\r\n\r\n /**\r\n * Determine if a URL shares the same origin as the current location\r\n *\r\n * @param {String} requestURL The URL to test\r\n * @returns {boolean} True if URL shares the same origin, otherwise false\r\n */\r\n return function isURLSameOrigin(requestURL) {\r\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\r\n return (parsed.protocol === originURL.protocol &&\r\n parsed.host === originURL.host);\r\n };\r\n })() :\r\n\r\n // Non standard browser envs (web workers, react-native) lack needed support.\r\n (function nonStandardBrowserEnv() {\r\n return function isURLSameOrigin() {\r\n return true;\r\n };\r\n })();\r\n", "import utils from './../utils.js';\r\nimport platform from '../platform/index.js';\r\n\r\nexport default platform.hasStandardBrowserEnv ?\r\n\r\n // Standard browser envs support document.cookie\r\n {\r\n write(name, value, expires, path, domain, secure) {\r\n const cookie = [name + '=' + encodeURIComponent(value)];\r\n\r\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\r\n\r\n utils.isString(path) && cookie.push('path=' + path);\r\n\r\n utils.isString(domain) && cookie.push('domain=' + domain);\r\n\r\n secure === true && cookie.push('secure');\r\n\r\n document.cookie = cookie.join('; ');\r\n },\r\n\r\n read(name) {\r\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\r\n return (match ? decodeURIComponent(match[3]) : null);\r\n },\r\n\r\n remove(name) {\r\n this.write(name, '', Date.now() - 86400000);\r\n }\r\n }\r\n\r\n :\r\n\r\n // Non-standard browser env (web workers, react-native) lack needed support.\r\n {\r\n write() {},\r\n read() {\r\n return null;\r\n },\r\n remove() {}\r\n };\r\n\r\n", "'use strict';\r\n\r\n/**\r\n * Determines whether the specified URL is absolute\r\n *\r\n * @param {string} url The URL to test\r\n *\r\n * @returns {boolean} True if the specified URL is absolute, otherwise false\r\n */\r\nexport default function isAbsoluteURL(url) {\r\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\r\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\r\n // by any combination of letters, digits, plus, period, or hyphen.\r\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\r\n}\r\n", "'use strict';\r\n\r\n/**\r\n * Creates a new URL by combining the specified URLs\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} relativeURL The relative URL\r\n *\r\n * @returns {string} The combined URL\r\n */\r\nexport default function combineURLs(baseURL, relativeURL) {\r\n return relativeURL\r\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\r\n : baseURL;\r\n}\r\n", "'use strict';\r\n\r\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\r\nimport combineURLs from '../helpers/combineURLs.js';\r\n\r\n/**\r\n * Creates a new URL by combining the baseURL with the requestedURL,\r\n * only when the requestedURL is not already an absolute URL.\r\n * If the requestURL is absolute, this function returns the requestedURL untouched.\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} requestedURL Absolute or relative URL to combine\r\n *\r\n * @returns {string} The combined full path\r\n */\r\nexport default function buildFullPath(baseURL, requestedURL) {\r\n if (baseURL && !isAbsoluteURL(requestedURL)) {\r\n return combineURLs(baseURL, requestedURL);\r\n }\r\n return requestedURL;\r\n}\r\n", "'use strict';\r\n\r\nimport utils from '../utils.js';\r\nimport AxiosHeaders from \"./AxiosHeaders.js\";\r\n\r\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\r\n\r\n/**\r\n * Config-specific merge-function which creates a new config-object\r\n * by merging two configuration objects together.\r\n *\r\n * @param {Object} config1\r\n * @param {Object} config2\r\n *\r\n * @returns {Object} New object resulting from merging config2 to config1\r\n */\r\nexport default function mergeConfig(config1, config2) {\r\n // eslint-disable-next-line no-param-reassign\r\n config2 = config2 || {};\r\n const config = {};\r\n\r\n function getMergedValue(target, source, caseless) {\r\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\r\n return utils.merge.call({caseless}, target, source);\r\n } else if (utils.isPlainObject(source)) {\r\n return utils.merge({}, source);\r\n } else if (utils.isArray(source)) {\r\n return source.slice();\r\n }\r\n return source;\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n function mergeDeepProperties(a, b, caseless) {\r\n if (!utils.isUndefined(b)) {\r\n return getMergedValue(a, b, caseless);\r\n } else if (!utils.isUndefined(a)) {\r\n return getMergedValue(undefined, a, caseless);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n function valueFromConfig2(a, b) {\r\n if (!utils.isUndefined(b)) {\r\n return getMergedValue(undefined, b);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n function defaultToConfig2(a, b) {\r\n if (!utils.isUndefined(b)) {\r\n return getMergedValue(undefined, b);\r\n } else if (!utils.isUndefined(a)) {\r\n return getMergedValue(undefined, a);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n function mergeDirectKeys(a, b, prop) {\r\n if (prop in config2) {\r\n return getMergedValue(a, b);\r\n } else if (prop in config1) {\r\n return getMergedValue(undefined, a);\r\n }\r\n }\r\n\r\n const mergeMap = {\r\n url: valueFromConfig2,\r\n method: valueFromConfig2,\r\n data: valueFromConfig2,\r\n baseURL: defaultToConfig2,\r\n transformRequest: defaultToConfig2,\r\n transformResponse: defaultToConfig2,\r\n paramsSerializer: defaultToConfig2,\r\n timeout: defaultToConfig2,\r\n timeoutMessage: defaultToConfig2,\r\n withCredentials: defaultToConfig2,\r\n withXSRFToken: defaultToConfig2,\r\n adapter: defaultToConfig2,\r\n responseType: defaultToConfig2,\r\n xsrfCookieName: defaultToConfig2,\r\n xsrfHeaderName: defaultToConfig2,\r\n onUploadProgress: defaultToConfig2,\r\n onDownloadProgress: defaultToConfig2,\r\n decompress: defaultToConfig2,\r\n maxContentLength: defaultToConfig2,\r\n maxBodyLength: defaultToConfig2,\r\n beforeRedirect: defaultToConfig2,\r\n transport: defaultToConfig2,\r\n httpAgent: defaultToConfig2,\r\n httpsAgent: defaultToConfig2,\r\n cancelToken: defaultToConfig2,\r\n socketPath: defaultToConfig2,\r\n responseEncoding: defaultToConfig2,\r\n validateStatus: mergeDirectKeys,\r\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\r\n };\r\n\r\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\r\n const merge = mergeMap[prop] || mergeDeepProperties;\r\n const configValue = merge(config1[prop], config2[prop], prop);\r\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\r\n });\r\n\r\n return config;\r\n}\r\n", "import platform from \"../platform/index.js\";\r\nimport utils from \"../utils.js\";\r\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\r\nimport cookies from \"./cookies.js\";\r\nimport buildFullPath from \"../core/buildFullPath.js\";\r\nimport mergeConfig from \"../core/mergeConfig.js\";\r\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\r\nimport buildURL from \"./buildURL.js\";\r\n\r\nexport default (config) => {\r\n const newConfig = mergeConfig({}, config);\r\n\r\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\r\n\r\n newConfig.headers = headers = AxiosHeaders.from(headers);\r\n\r\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\r\n\r\n // HTTP basic authentication\r\n if (auth) {\r\n headers.set('Authorization', 'Basic ' +\r\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\r\n );\r\n }\r\n\r\n let contentType;\r\n\r\n if (utils.isFormData(data)) {\r\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\r\n headers.setContentType(undefined); // Let the browser set it\r\n } else if ((contentType = headers.getContentType()) !== false) {\r\n // fix semicolon duplication issue for ReactNative FormData implementation\r\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\r\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\r\n }\r\n }\r\n\r\n // Add xsrf header\r\n // This is only done if running in a standard browser environment.\r\n // Specifically not if we're in a web worker, or react-native.\r\n\r\n if (platform.hasStandardBrowserEnv) {\r\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\r\n\r\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\r\n // Add xsrf header\r\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\r\n\r\n if (xsrfValue) {\r\n headers.set(xsrfHeaderName, xsrfValue);\r\n }\r\n }\r\n }\r\n\r\n return newConfig;\r\n}\r\n\r\n", "import utils from './../utils.js';\r\nimport settle from './../core/settle.js';\r\nimport transitionalDefaults from '../defaults/transitional.js';\r\nimport AxiosError from '../core/AxiosError.js';\r\nimport CanceledError from '../cancel/CanceledError.js';\r\nimport parseProtocol from '../helpers/parseProtocol.js';\r\nimport platform from '../platform/index.js';\r\nimport AxiosHeaders from '../core/AxiosHeaders.js';\r\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\r\nimport resolveConfig from \"../helpers/resolveConfig.js\";\r\n\r\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\r\n\r\nexport default isXHRAdapterSupported && function (config) {\r\n return new Promise(function dispatchXhrRequest(resolve, reject) {\r\n const _config = resolveConfig(config);\r\n let requestData = _config.data;\r\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\r\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\r\n let onCanceled;\r\n let uploadThrottled, downloadThrottled;\r\n let flushUpload, flushDownload;\r\n\r\n function done() {\r\n flushUpload && flushUpload(); // flush events\r\n flushDownload && flushDownload(); // flush events\r\n\r\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\r\n\r\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\r\n }\r\n\r\n let request = new XMLHttpRequest();\r\n\r\n request.open(_config.method.toUpperCase(), _config.url, true);\r\n\r\n // Set the request timeout in MS\r\n request.timeout = _config.timeout;\r\n\r\n function onloadend() {\r\n if (!request) {\r\n return;\r\n }\r\n // Prepare the response\r\n const responseHeaders = AxiosHeaders.from(\r\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\r\n );\r\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\r\n request.responseText : request.response;\r\n const response = {\r\n data: responseData,\r\n status: request.status,\r\n statusText: request.statusText,\r\n headers: responseHeaders,\r\n config,\r\n request\r\n };\r\n\r\n settle(function _resolve(value) {\r\n resolve(value);\r\n done();\r\n }, function _reject(err) {\r\n reject(err);\r\n done();\r\n }, response);\r\n\r\n // Clean up request\r\n request = null;\r\n }\r\n\r\n if ('onloadend' in request) {\r\n // Use onloadend if available\r\n request.onloadend = onloadend;\r\n } else {\r\n // Listen for ready state to emulate onloadend\r\n request.onreadystatechange = function handleLoad() {\r\n if (!request || request.readyState !== 4) {\r\n return;\r\n }\r\n\r\n // The request errored out and we didn't get a response, this will be\r\n // handled by onerror instead\r\n // With one exception: request that using file: protocol, most browsers\r\n // will return status as 0 even though it's a successful request\r\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\r\n return;\r\n }\r\n // readystate handler is calling before onerror or ontimeout handlers,\r\n // so we should call onloadend on the next 'tick'\r\n setTimeout(onloadend);\r\n };\r\n }\r\n\r\n // Handle browser request cancellation (as opposed to a manual cancellation)\r\n request.onabort = function handleAbort() {\r\n if (!request) {\r\n return;\r\n }\r\n\r\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Handle low level network errors\r\n request.onerror = function handleError() {\r\n // Real errors are hidden from us by the browser\r\n // onerror should only fire if it's a network error\r\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Handle timeout\r\n request.ontimeout = function handleTimeout() {\r\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\r\n const transitional = _config.transitional || transitionalDefaults;\r\n if (_config.timeoutErrorMessage) {\r\n timeoutErrorMessage = _config.timeoutErrorMessage;\r\n }\r\n reject(new AxiosError(\r\n timeoutErrorMessage,\r\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\r\n config,\r\n request));\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Remove Content-Type if data is undefined\r\n requestData === undefined && requestHeaders.setContentType(null);\r\n\r\n // Add headers to the request\r\n if ('setRequestHeader' in request) {\r\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\r\n request.setRequestHeader(key, val);\r\n });\r\n }\r\n\r\n // Add withCredentials to request if needed\r\n if (!utils.isUndefined(_config.withCredentials)) {\r\n request.withCredentials = !!_config.withCredentials;\r\n }\r\n\r\n // Add responseType to request if needed\r\n if (responseType && responseType !== 'json') {\r\n request.responseType = _config.responseType;\r\n }\r\n\r\n // Handle progress if needed\r\n if (onDownloadProgress) {\r\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\r\n request.addEventListener('progress', downloadThrottled);\r\n }\r\n\r\n // Not all browsers support upload events\r\n if (onUploadProgress && request.upload) {\r\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\r\n\r\n request.upload.addEventListener('progress', uploadThrottled);\r\n\r\n request.upload.addEventListener('loadend', flushUpload);\r\n }\r\n\r\n if (_config.cancelToken || _config.signal) {\r\n // Handle cancellation\r\n // eslint-disable-next-line func-names\r\n onCanceled = cancel => {\r\n if (!request) {\r\n return;\r\n }\r\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\r\n request.abort();\r\n request = null;\r\n };\r\n\r\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\r\n if (_config.signal) {\r\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\r\n }\r\n }\r\n\r\n const protocol = parseProtocol(_config.url);\r\n\r\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\r\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\r\n return;\r\n }\r\n\r\n\r\n // Send the request\r\n request.send(requestData || null);\r\n });\r\n}\r\n", "import CanceledError from \"../cancel/CanceledError.js\";\r\nimport AxiosError from \"../core/AxiosError.js\";\r\nimport utils from '../utils.js';\r\n\r\nconst composeSignals = (signals, timeout) => {\r\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\r\n\r\n if (timeout || length) {\r\n let controller = new AbortController();\r\n\r\n let aborted;\r\n\r\n const onabort = function (reason) {\r\n if (!aborted) {\r\n aborted = true;\r\n unsubscribe();\r\n const err = reason instanceof Error ? reason : this.reason;\r\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\r\n }\r\n }\r\n\r\n let timer = timeout && setTimeout(() => {\r\n timer = null;\r\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\r\n }, timeout)\r\n\r\n const unsubscribe = () => {\r\n if (signals) {\r\n timer && clearTimeout(timer);\r\n timer = null;\r\n signals.forEach(signal => {\r\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\r\n });\r\n signals = null;\r\n }\r\n }\r\n\r\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\r\n\r\n const {signal} = controller;\r\n\r\n signal.unsubscribe = () => utils.asap(unsubscribe);\r\n\r\n return signal;\r\n }\r\n}\r\n\r\nexport default composeSignals;\r\n", "\r\nexport const streamChunk = function* (chunk, chunkSize) {\r\n let len = chunk.byteLength;\r\n\r\n if (!chunkSize || len < chunkSize) {\r\n yield chunk;\r\n return;\r\n }\r\n\r\n let pos = 0;\r\n let end;\r\n\r\n while (pos < len) {\r\n end = pos + chunkSize;\r\n yield chunk.slice(pos, end);\r\n pos = end;\r\n }\r\n}\r\n\r\nexport const readBytes = async function* (iterable, chunkSize) {\r\n for await (const chunk of readStream(iterable)) {\r\n yield* streamChunk(chunk, chunkSize);\r\n }\r\n}\r\n\r\nconst readStream = async function* (stream) {\r\n if (stream[Symbol.asyncIterator]) {\r\n yield* stream;\r\n return;\r\n }\r\n\r\n const reader = stream.getReader();\r\n try {\r\n for (;;) {\r\n const {done, value} = await reader.read();\r\n if (done) {\r\n break;\r\n }\r\n yield value;\r\n }\r\n } finally {\r\n await reader.cancel();\r\n }\r\n}\r\n\r\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\r\n const iterator = readBytes(stream, chunkSize);\r\n\r\n let bytes = 0;\r\n let done;\r\n let _onFinish = (e) => {\r\n if (!done) {\r\n done = true;\r\n onFinish && onFinish(e);\r\n }\r\n }\r\n\r\n return new ReadableStream({\r\n async pull(controller) {\r\n try {\r\n const {done, value} = await iterator.next();\r\n\r\n if (done) {\r\n _onFinish();\r\n controller.close();\r\n return;\r\n }\r\n\r\n let len = value.byteLength;\r\n if (onProgress) {\r\n let loadedBytes = bytes += len;\r\n onProgress(loadedBytes);\r\n }\r\n controller.enqueue(new Uint8Array(value));\r\n } catch (err) {\r\n _onFinish(err);\r\n throw err;\r\n }\r\n },\r\n cancel(reason) {\r\n _onFinish(reason);\r\n return iterator.return();\r\n }\r\n }, {\r\n highWaterMark: 2\r\n })\r\n}\r\n", "import platform from \"../platform/index.js\";\r\nimport utils from \"../utils.js\";\r\nimport AxiosError from \"../core/AxiosError.js\";\r\nimport composeSignals from \"../helpers/composeSignals.js\";\r\nimport {trackStream} from \"../helpers/trackStream.js\";\r\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\r\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\r\nimport resolveConfig from \"../helpers/resolveConfig.js\";\r\nimport settle from \"../core/settle.js\";\r\n\r\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\r\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\r\n\r\n// used only inside the fetch adapter\r\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\r\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\r\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\r\n);\r\n\r\nconst test = (fn, ...args) => {\r\n try {\r\n return !!fn(...args);\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\r\n let duplexAccessed = false;\r\n\r\n const hasContentType = new Request(platform.origin, {\r\n body: new ReadableStream(),\r\n method: 'POST',\r\n get duplex() {\r\n duplexAccessed = true;\r\n return 'half';\r\n },\r\n }).headers.has('Content-Type');\r\n\r\n return duplexAccessed && !hasContentType;\r\n});\r\n\r\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\r\n\r\nconst supportsResponseStream = isReadableStreamSupported &&\r\n test(() => utils.isReadableStream(new Response('').body));\r\n\r\n\r\nconst resolvers = {\r\n stream: supportsResponseStream && ((res) => res.body)\r\n};\r\n\r\nisFetchSupported && (((res) => {\r\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\r\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\r\n (_, config) => {\r\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\r\n })\r\n });\r\n})(new Response));\r\n\r\nconst getBodyLength = async (body) => {\r\n if (body == null) {\r\n return 0;\r\n }\r\n\r\n if(utils.isBlob(body)) {\r\n return body.size;\r\n }\r\n\r\n if(utils.isSpecCompliantForm(body)) {\r\n const _request = new Request(platform.origin, {\r\n method: 'POST',\r\n body,\r\n });\r\n return (await _request.arrayBuffer()).byteLength;\r\n }\r\n\r\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\r\n return body.byteLength;\r\n }\r\n\r\n if(utils.isURLSearchParams(body)) {\r\n body = body + '';\r\n }\r\n\r\n if(utils.isString(body)) {\r\n return (await encodeText(body)).byteLength;\r\n }\r\n}\r\n\r\nconst resolveBodyLength = async (headers, body) => {\r\n const length = utils.toFiniteNumber(headers.getContentLength());\r\n\r\n return length == null ? getBodyLength(body) : length;\r\n}\r\n\r\nexport default isFetchSupported && (async (config) => {\r\n let {\r\n url,\r\n method,\r\n data,\r\n signal,\r\n cancelToken,\r\n timeout,\r\n onDownloadProgress,\r\n onUploadProgress,\r\n responseType,\r\n headers,\r\n withCredentials = 'same-origin',\r\n fetchOptions\r\n } = resolveConfig(config);\r\n\r\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\r\n\r\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\r\n\r\n let request;\r\n\r\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\r\n composedSignal.unsubscribe();\r\n });\r\n\r\n let requestContentLength;\r\n\r\n try {\r\n if (\r\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\r\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\r\n ) {\r\n let _request = new Request(url, {\r\n method: 'POST',\r\n body: data,\r\n duplex: \"half\"\r\n });\r\n\r\n let contentTypeHeader;\r\n\r\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\r\n headers.setContentType(contentTypeHeader)\r\n }\r\n\r\n if (_request.body) {\r\n const [onProgress, flush] = progressEventDecorator(\r\n requestContentLength,\r\n progressEventReducer(asyncDecorator(onUploadProgress))\r\n );\r\n\r\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\r\n }\r\n }\r\n\r\n if (!utils.isString(withCredentials)) {\r\n withCredentials = withCredentials ? 'include' : 'omit';\r\n }\r\n\r\n // Cloudflare Workers throws when credentials are defined\r\n // see https://github.com/cloudflare/workerd/issues/902\r\n const isCredentialsSupported = \"credentials\" in Request.prototype;\r\n request = new Request(url, {\r\n ...fetchOptions,\r\n signal: composedSignal,\r\n method: method.toUpperCase(),\r\n headers: headers.normalize().toJSON(),\r\n body: data,\r\n duplex: \"half\",\r\n credentials: isCredentialsSupported ? withCredentials : undefined\r\n });\r\n\r\n let response = await fetch(request);\r\n\r\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\r\n\r\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\r\n const options = {};\r\n\r\n ['status', 'statusText', 'headers'].forEach(prop => {\r\n options[prop] = response[prop];\r\n });\r\n\r\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\r\n\r\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\r\n responseContentLength,\r\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\r\n ) || [];\r\n\r\n response = new Response(\r\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\r\n flush && flush();\r\n unsubscribe && unsubscribe();\r\n }),\r\n options\r\n );\r\n }\r\n\r\n responseType = responseType || 'text';\r\n\r\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\r\n\r\n !isStreamResponse && unsubscribe && unsubscribe();\r\n\r\n return await new Promise((resolve, reject) => {\r\n settle(resolve, reject, {\r\n data: responseData,\r\n headers: AxiosHeaders.from(response.headers),\r\n status: response.status,\r\n statusText: response.statusText,\r\n config,\r\n request\r\n })\r\n })\r\n } catch (err) {\r\n unsubscribe && unsubscribe();\r\n\r\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\r\n throw Object.assign(\r\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\r\n {\r\n cause: err.cause || err\r\n }\r\n )\r\n }\r\n\r\n throw AxiosError.from(err, err && err.code, config, request);\r\n }\r\n});\r\n\r\n\r\n", "import utils from '../utils.js';\r\nimport httpAdapter from './http.js';\r\nimport xhrAdapter from './xhr.js';\r\nimport fetchAdapter from './fetch.js';\r\nimport AxiosError from \"../core/AxiosError.js\";\r\n\r\nconst knownAdapters = {\r\n http: httpAdapter,\r\n xhr: xhrAdapter,\r\n fetch: fetchAdapter\r\n}\r\n\r\nutils.forEach(knownAdapters, (fn, value) => {\r\n if (fn) {\r\n try {\r\n Object.defineProperty(fn, 'name', {value});\r\n } catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n Object.defineProperty(fn, 'adapterName', {value});\r\n }\r\n});\r\n\r\nconst renderReason = (reason) => `- ${reason}`;\r\n\r\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\r\n\r\nexport default {\r\n getAdapter: (adapters) => {\r\n adapters = utils.isArray(adapters) ? adapters : [adapters];\r\n\r\n const {length} = adapters;\r\n let nameOrAdapter;\r\n let adapter;\r\n\r\n const rejectedReasons = {};\r\n\r\n for (let i = 0; i < length; i++) {\r\n nameOrAdapter = adapters[i];\r\n let id;\r\n\r\n adapter = nameOrAdapter;\r\n\r\n if (!isResolvedHandle(nameOrAdapter)) {\r\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\r\n\r\n if (adapter === undefined) {\r\n throw new AxiosError(`Unknown adapter '${id}'`);\r\n }\r\n }\r\n\r\n if (adapter) {\r\n break;\r\n }\r\n\r\n rejectedReasons[id || '#' + i] = adapter;\r\n }\r\n\r\n if (!adapter) {\r\n\r\n const reasons = Object.entries(rejectedReasons)\r\n .map(([id, state]) => `adapter ${id} ` +\r\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\r\n );\r\n\r\n let s = length ?\r\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\r\n 'as no adapter specified';\r\n\r\n throw new AxiosError(\r\n `There is no suitable adapter to dispatch the request ` + s,\r\n 'ERR_NOT_SUPPORT'\r\n );\r\n }\r\n\r\n return adapter;\r\n },\r\n adapters: knownAdapters\r\n}\r\n", "'use strict';\r\n\r\nimport transformData from './transformData.js';\r\nimport isCancel from '../cancel/isCancel.js';\r\nimport defaults from '../defaults/index.js';\r\nimport CanceledError from '../cancel/CanceledError.js';\r\nimport AxiosHeaders from '../core/AxiosHeaders.js';\r\nimport adapters from \"../adapters/adapters.js\";\r\n\r\n/**\r\n * Throws a `CanceledError` if cancellation has been requested.\r\n *\r\n * @param {Object} config The config that is to be used for the request\r\n *\r\n * @returns {void}\r\n */\r\nfunction throwIfCancellationRequested(config) {\r\n if (config.cancelToken) {\r\n config.cancelToken.throwIfRequested();\r\n }\r\n\r\n if (config.signal && config.signal.aborted) {\r\n throw new CanceledError(null, config);\r\n }\r\n}\r\n\r\n/**\r\n * Dispatch a request to the server using the configured adapter.\r\n *\r\n * @param {object} config The config that is to be used for the request\r\n *\r\n * @returns {Promise} The Promise to be fulfilled\r\n */\r\nexport default function dispatchRequest(config) {\r\n throwIfCancellationRequested(config);\r\n\r\n config.headers = AxiosHeaders.from(config.headers);\r\n\r\n // Transform request data\r\n config.data = transformData.call(\r\n config,\r\n config.transformRequest\r\n );\r\n\r\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\r\n config.headers.setContentType('application/x-www-form-urlencoded', false);\r\n }\r\n\r\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\r\n\r\n return adapter(config).then(function onAdapterResolution(response) {\r\n throwIfCancellationRequested(config);\r\n\r\n // Transform response data\r\n response.data = transformData.call(\r\n config,\r\n config.transformResponse,\r\n response\r\n );\r\n\r\n response.headers = AxiosHeaders.from(response.headers);\r\n\r\n return response;\r\n }, function onAdapterRejection(reason) {\r\n if (!isCancel(reason)) {\r\n throwIfCancellationRequested(config);\r\n\r\n // Transform response data\r\n if (reason && reason.response) {\r\n reason.response.data = transformData.call(\r\n config,\r\n config.transformResponse,\r\n reason.response\r\n );\r\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\r\n }\r\n }\r\n\r\n return Promise.reject(reason);\r\n });\r\n}\r\n", "export const VERSION = \"1.7.7\";", "'use strict';\r\n\r\nimport {VERSION} from '../env/data.js';\r\nimport AxiosError from '../core/AxiosError.js';\r\n\r\nconst validators = {};\r\n\r\n// eslint-disable-next-line func-names\r\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\r\n validators[type] = function validator(thing) {\r\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\r\n };\r\n});\r\n\r\nconst deprecatedWarnings = {};\r\n\r\n/**\r\n * Transitional option validator\r\n *\r\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\r\n * @param {string?} version - deprecated version / removed since version\r\n * @param {string?} message - some message with additional info\r\n *\r\n * @returns {function}\r\n */\r\nvalidators.transitional = function transitional(validator, version, message) {\r\n function formatMessage(opt, desc) {\r\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\r\n }\r\n\r\n // eslint-disable-next-line func-names\r\n return (value, opt, opts) => {\r\n if (validator === false) {\r\n throw new AxiosError(\r\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\r\n AxiosError.ERR_DEPRECATED\r\n );\r\n }\r\n\r\n if (version && !deprecatedWarnings[opt]) {\r\n deprecatedWarnings[opt] = true;\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n formatMessage(\r\n opt,\r\n ' has been deprecated since v' + version + ' and will be removed in the near future'\r\n )\r\n );\r\n }\r\n\r\n return validator ? validator(value, opt, opts) : true;\r\n };\r\n};\r\n\r\n/**\r\n * Assert object's properties type\r\n *\r\n * @param {object} options\r\n * @param {object} schema\r\n * @param {boolean?} allowUnknown\r\n *\r\n * @returns {object}\r\n */\r\n\r\nfunction assertOptions(options, schema, allowUnknown) {\r\n if (typeof options !== 'object') {\r\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\r\n }\r\n const keys = Object.keys(options);\r\n let i = keys.length;\r\n while (i-- > 0) {\r\n const opt = keys[i];\r\n const validator = schema[opt];\r\n if (validator) {\r\n const value = options[opt];\r\n const result = value === undefined || validator(value, opt, options);\r\n if (result !== true) {\r\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\r\n }\r\n continue;\r\n }\r\n if (allowUnknown !== true) {\r\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\r\n }\r\n }\r\n}\r\n\r\nexport default {\r\n assertOptions,\r\n validators\r\n};\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\nimport buildURL from '../helpers/buildURL.js';\r\nimport InterceptorManager from './InterceptorManager.js';\r\nimport dispatchRequest from './dispatchRequest.js';\r\nimport mergeConfig from './mergeConfig.js';\r\nimport buildFullPath from './buildFullPath.js';\r\nimport validator from '../helpers/validator.js';\r\nimport AxiosHeaders from './AxiosHeaders.js';\r\n\r\nconst validators = validator.validators;\r\n\r\n/**\r\n * Create a new instance of Axios\r\n *\r\n * @param {Object} instanceConfig The default config for the instance\r\n *\r\n * @return {Axios} A new instance of Axios\r\n */\r\nclass Axios {\r\n constructor(instanceConfig) {\r\n this.defaults = instanceConfig;\r\n this.interceptors = {\r\n request: new InterceptorManager(),\r\n response: new InterceptorManager()\r\n };\r\n }\r\n\r\n /**\r\n * Dispatch a request\r\n *\r\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\r\n * @param {?Object} config\r\n *\r\n * @returns {Promise} The Promise to be fulfilled\r\n */\r\n async request(configOrUrl, config) {\r\n try {\r\n return await this._request(configOrUrl, config);\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n let dummy;\r\n\r\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\r\n\r\n // slice off the Error: ... line\r\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\r\n try {\r\n if (!err.stack) {\r\n err.stack = stack;\r\n // match without the 2 top stack lines\r\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\r\n err.stack += '\\n' + stack\r\n }\r\n } catch (e) {\r\n // ignore the case where \"stack\" is an un-writable property\r\n }\r\n }\r\n\r\n throw err;\r\n }\r\n }\r\n\r\n _request(configOrUrl, config) {\r\n /*eslint no-param-reassign:0*/\r\n // Allow for axios('example/url'[, config]) a la fetch API\r\n if (typeof configOrUrl === 'string') {\r\n config = config || {};\r\n config.url = configOrUrl;\r\n } else {\r\n config = configOrUrl || {};\r\n }\r\n\r\n config = mergeConfig(this.defaults, config);\r\n\r\n const {transitional, paramsSerializer, headers} = config;\r\n\r\n if (transitional !== undefined) {\r\n validator.assertOptions(transitional, {\r\n silentJSONParsing: validators.transitional(validators.boolean),\r\n forcedJSONParsing: validators.transitional(validators.boolean),\r\n clarifyTimeoutError: validators.transitional(validators.boolean)\r\n }, false);\r\n }\r\n\r\n if (paramsSerializer != null) {\r\n if (utils.isFunction(paramsSerializer)) {\r\n config.paramsSerializer = {\r\n serialize: paramsSerializer\r\n }\r\n } else {\r\n validator.assertOptions(paramsSerializer, {\r\n encode: validators.function,\r\n serialize: validators.function\r\n }, true);\r\n }\r\n }\r\n\r\n // Set config.method\r\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\r\n\r\n // Flatten headers\r\n let contextHeaders = headers && utils.merge(\r\n headers.common,\r\n headers[config.method]\r\n );\r\n\r\n headers && utils.forEach(\r\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\r\n (method) => {\r\n delete headers[method];\r\n }\r\n );\r\n\r\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\r\n\r\n // filter out skipped interceptors\r\n const requestInterceptorChain = [];\r\n let synchronousRequestInterceptors = true;\r\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\r\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\r\n return;\r\n }\r\n\r\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\r\n\r\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n const responseInterceptorChain = [];\r\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\r\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n let promise;\r\n let i = 0;\r\n let len;\r\n\r\n if (!synchronousRequestInterceptors) {\r\n const chain = [dispatchRequest.bind(this), undefined];\r\n chain.unshift.apply(chain, requestInterceptorChain);\r\n chain.push.apply(chain, responseInterceptorChain);\r\n len = chain.length;\r\n\r\n promise = Promise.resolve(config);\r\n\r\n while (i < len) {\r\n promise = promise.then(chain[i++], chain[i++]);\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n len = requestInterceptorChain.length;\r\n\r\n let newConfig = config;\r\n\r\n i = 0;\r\n\r\n while (i < len) {\r\n const onFulfilled = requestInterceptorChain[i++];\r\n const onRejected = requestInterceptorChain[i++];\r\n try {\r\n newConfig = onFulfilled(newConfig);\r\n } catch (error) {\r\n onRejected.call(this, error);\r\n break;\r\n }\r\n }\r\n\r\n try {\r\n promise = dispatchRequest.call(this, newConfig);\r\n } catch (error) {\r\n return Promise.reject(error);\r\n }\r\n\r\n i = 0;\r\n len = responseInterceptorChain.length;\r\n\r\n while (i < len) {\r\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n getUri(config) {\r\n config = mergeConfig(this.defaults, config);\r\n const fullPath = buildFullPath(config.baseURL, config.url);\r\n return buildURL(fullPath, config.params, config.paramsSerializer);\r\n }\r\n}\r\n\r\n// Provide aliases for supported request methods\r\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\r\n /*eslint func-names:0*/\r\n Axios.prototype[method] = function(url, config) {\r\n return this.request(mergeConfig(config || {}, {\r\n method,\r\n url,\r\n data: (config || {}).data\r\n }));\r\n };\r\n});\r\n\r\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\r\n /*eslint func-names:0*/\r\n\r\n function generateHTTPMethod(isForm) {\r\n return function httpMethod(url, data, config) {\r\n return this.request(mergeConfig(config || {}, {\r\n method,\r\n headers: isForm ? {\r\n 'Content-Type': 'multipart/form-data'\r\n } : {},\r\n url,\r\n data\r\n }));\r\n };\r\n }\r\n\r\n Axios.prototype[method] = generateHTTPMethod();\r\n\r\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\r\n});\r\n\r\nexport default Axios;\r\n", "'use strict';\r\n\r\nimport CanceledError from './CanceledError.js';\r\n\r\n/**\r\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\r\n *\r\n * @param {Function} executor The executor function.\r\n *\r\n * @returns {CancelToken}\r\n */\r\nclass CancelToken {\r\n constructor(executor) {\r\n if (typeof executor !== 'function') {\r\n throw new TypeError('executor must be a function.');\r\n }\r\n\r\n let resolvePromise;\r\n\r\n this.promise = new Promise(function promiseExecutor(resolve) {\r\n resolvePromise = resolve;\r\n });\r\n\r\n const token = this;\r\n\r\n // eslint-disable-next-line func-names\r\n this.promise.then(cancel => {\r\n if (!token._listeners) return;\r\n\r\n let i = token._listeners.length;\r\n\r\n while (i-- > 0) {\r\n token._listeners[i](cancel);\r\n }\r\n token._listeners = null;\r\n });\r\n\r\n // eslint-disable-next-line func-names\r\n this.promise.then = onfulfilled => {\r\n let _resolve;\r\n // eslint-disable-next-line func-names\r\n const promise = new Promise(resolve => {\r\n token.subscribe(resolve);\r\n _resolve = resolve;\r\n }).then(onfulfilled);\r\n\r\n promise.cancel = function reject() {\r\n token.unsubscribe(_resolve);\r\n };\r\n\r\n return promise;\r\n };\r\n\r\n executor(function cancel(message, config, request) {\r\n if (token.reason) {\r\n // Cancellation has already been requested\r\n return;\r\n }\r\n\r\n token.reason = new CanceledError(message, config, request);\r\n resolvePromise(token.reason);\r\n });\r\n }\r\n\r\n /**\r\n * Throws a `CanceledError` if cancellation has been requested.\r\n */\r\n throwIfRequested() {\r\n if (this.reason) {\r\n throw this.reason;\r\n }\r\n }\r\n\r\n /**\r\n * Subscribe to the cancel signal\r\n */\r\n\r\n subscribe(listener) {\r\n if (this.reason) {\r\n listener(this.reason);\r\n return;\r\n }\r\n\r\n if (this._listeners) {\r\n this._listeners.push(listener);\r\n } else {\r\n this._listeners = [listener];\r\n }\r\n }\r\n\r\n /**\r\n * Unsubscribe from the cancel signal\r\n */\r\n\r\n unsubscribe(listener) {\r\n if (!this._listeners) {\r\n return;\r\n }\r\n const index = this._listeners.indexOf(listener);\r\n if (index !== -1) {\r\n this._listeners.splice(index, 1);\r\n }\r\n }\r\n\r\n toAbortSignal() {\r\n const controller = new AbortController();\r\n\r\n const abort = (err) => {\r\n controller.abort(err);\r\n };\r\n\r\n this.subscribe(abort);\r\n\r\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\r\n\r\n return controller.signal;\r\n }\r\n\r\n /**\r\n * Returns an object that contains a new `CancelToken` and a function that, when called,\r\n * cancels the `CancelToken`.\r\n */\r\n static source() {\r\n let cancel;\r\n const token = new CancelToken(function executor(c) {\r\n cancel = c;\r\n });\r\n return {\r\n token,\r\n cancel\r\n };\r\n }\r\n}\r\n\r\nexport default CancelToken;\r\n", "'use strict';\r\n\r\n/**\r\n * Syntactic sugar for invoking a function and expanding an array for arguments.\r\n *\r\n * Common use case would be to use `Function.prototype.apply`.\r\n *\r\n * ```js\r\n * function f(x, y, z) {}\r\n * var args = [1, 2, 3];\r\n * f.apply(null, args);\r\n * ```\r\n *\r\n * With `spread` this example can be re-written.\r\n *\r\n * ```js\r\n * spread(function(x, y, z) {})([1, 2, 3]);\r\n * ```\r\n *\r\n * @param {Function} callback\r\n *\r\n * @returns {Function}\r\n */\r\nexport default function spread(callback) {\r\n return function wrap(arr) {\r\n return callback.apply(null, arr);\r\n };\r\n}\r\n", "'use strict';\r\n\r\nimport utils from './../utils.js';\r\n\r\n/**\r\n * Determines whether the payload is an error thrown by Axios\r\n *\r\n * @param {*} payload The value to test\r\n *\r\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\r\n */\r\nexport default function isAxiosError(payload) {\r\n return utils.isObject(payload) && (payload.isAxiosError === true);\r\n}\r\n", "const HttpStatusCode = {\r\n Continue: 100,\r\n SwitchingProtocols: 101,\r\n Processing: 102,\r\n EarlyHints: 103,\r\n Ok: 200,\r\n Created: 201,\r\n Accepted: 202,\r\n NonAuthoritativeInformation: 203,\r\n NoContent: 204,\r\n ResetContent: 205,\r\n PartialContent: 206,\r\n MultiStatus: 207,\r\n AlreadyReported: 208,\r\n ImUsed: 226,\r\n MultipleChoices: 300,\r\n MovedPermanently: 301,\r\n Found: 302,\r\n SeeOther: 303,\r\n NotModified: 304,\r\n UseProxy: 305,\r\n Unused: 306,\r\n TemporaryRedirect: 307,\r\n PermanentRedirect: 308,\r\n BadRequest: 400,\r\n Unauthorized: 401,\r\n PaymentRequired: 402,\r\n Forbidden: 403,\r\n NotFound: 404,\r\n MethodNotAllowed: 405,\r\n NotAcceptable: 406,\r\n ProxyAuthenticationRequired: 407,\r\n RequestTimeout: 408,\r\n Conflict: 409,\r\n Gone: 410,\r\n LengthRequired: 411,\r\n PreconditionFailed: 412,\r\n PayloadTooLarge: 413,\r\n UriTooLong: 414,\r\n UnsupportedMediaType: 415,\r\n RangeNotSatisfiable: 416,\r\n ExpectationFailed: 417,\r\n ImATeapot: 418,\r\n MisdirectedRequest: 421,\r\n UnprocessableEntity: 422,\r\n Locked: 423,\r\n FailedDependency: 424,\r\n TooEarly: 425,\r\n UpgradeRequired: 426,\r\n PreconditionRequired: 428,\r\n TooManyRequests: 429,\r\n RequestHeaderFieldsTooLarge: 431,\r\n UnavailableForLegalReasons: 451,\r\n InternalServerError: 500,\r\n NotImplemented: 501,\r\n BadGateway: 502,\r\n ServiceUnavailable: 503,\r\n GatewayTimeout: 504,\r\n HttpVersionNotSupported: 505,\r\n VariantAlsoNegotiates: 506,\r\n InsufficientStorage: 507,\r\n LoopDetected: 508,\r\n NotExtended: 510,\r\n NetworkAuthenticationRequired: 511,\r\n};\r\n\r\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\r\n HttpStatusCode[value] = key;\r\n});\r\n\r\nexport default HttpStatusCode;\r\n", "'use strict';\r\n\r\nimport utils from './utils.js';\r\nimport bind from './helpers/bind.js';\r\nimport Axios from './core/Axios.js';\r\nimport mergeConfig from './core/mergeConfig.js';\r\nimport defaults from './defaults/index.js';\r\nimport formDataToJSON from './helpers/formDataToJSON.js';\r\nimport CanceledError from './cancel/CanceledError.js';\r\nimport CancelToken from './cancel/CancelToken.js';\r\nimport isCancel from './cancel/isCancel.js';\r\nimport {VERSION} from './env/data.js';\r\nimport toFormData from './helpers/toFormData.js';\r\nimport AxiosError from './core/AxiosError.js';\r\nimport spread from './helpers/spread.js';\r\nimport isAxiosError from './helpers/isAxiosError.js';\r\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\r\nimport adapters from './adapters/adapters.js';\r\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\r\n\r\n/**\r\n * Create an instance of Axios\r\n *\r\n * @param {Object} defaultConfig The default config for the instance\r\n *\r\n * @returns {Axios} A new instance of Axios\r\n */\r\nfunction createInstance(defaultConfig) {\r\n const context = new Axios(defaultConfig);\r\n const instance = bind(Axios.prototype.request, context);\r\n\r\n // Copy axios.prototype to instance\r\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\r\n\r\n // Copy context to instance\r\n utils.extend(instance, context, null, {allOwnKeys: true});\r\n\r\n // Factory for creating new instances\r\n instance.create = function create(instanceConfig) {\r\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\r\n };\r\n\r\n return instance;\r\n}\r\n\r\n// Create the default instance to be exported\r\nconst axios = createInstance(defaults);\r\n\r\n// Expose Axios class to allow class inheritance\r\naxios.Axios = Axios;\r\n\r\n// Expose Cancel & CancelToken\r\naxios.CanceledError = CanceledError;\r\naxios.CancelToken = CancelToken;\r\naxios.isCancel = isCancel;\r\naxios.VERSION = VERSION;\r\naxios.toFormData = toFormData;\r\n\r\n// Expose AxiosError class\r\naxios.AxiosError = AxiosError;\r\n\r\n// alias for CanceledError for backward compatibility\r\naxios.Cancel = axios.CanceledError;\r\n\r\n// Expose all/spread\r\naxios.all = function all(promises) {\r\n return Promise.all(promises);\r\n};\r\n\r\naxios.spread = spread;\r\n\r\n// Expose isAxiosError\r\naxios.isAxiosError = isAxiosError;\r\n\r\n// Expose mergeConfig\r\naxios.mergeConfig = mergeConfig;\r\n\r\naxios.AxiosHeaders = AxiosHeaders;\r\n\r\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\r\n\r\naxios.getAdapter = adapters.getAdapter;\r\n\r\naxios.HttpStatusCode = HttpStatusCode;\r\n\r\naxios.default = axios;\r\n\r\n// this module should only have a default export\r\nexport default axios\r\n", "import axios from './lib/axios.js';\r\n\r\n// This module is intended to unwrap Axios default export as named.\r\n// Keep top-level export same with static properties\r\n// so that it can keep same with es module or cjs\r\nconst {\r\n Axios,\r\n AxiosError,\r\n CanceledError,\r\n isCancel,\r\n CancelToken,\r\n VERSION,\r\n all,\r\n Cancel,\r\n isAxiosError,\r\n spread,\r\n toFormData,\r\n AxiosHeaders,\r\n HttpStatusCode,\r\n formToJSON,\r\n getAdapter,\r\n mergeConfig\r\n} = axios;\r\n\r\nexport {\r\n axios as default,\r\n Axios,\r\n AxiosError,\r\n CanceledError,\r\n isCancel,\r\n CancelToken,\r\n VERSION,\r\n all,\r\n Cancel,\r\n isAxiosError,\r\n spread,\r\n toFormData,\r\n AxiosHeaders,\r\n HttpStatusCode,\r\n formToJSON,\r\n getAdapter,\r\n mergeConfig\r\n}\r\n"], "mappings": "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", "names": ["prototype", "descriptors", "filter", "hasOwnProperty", "filter", "prototype", "toString", "encode", "isFormData", "isFileList", "transitional", "filter", "self", "prototype", "validateStatus", "merge", "transitional", "signal", "done", "res", "validators", "transitional", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "mergeConfig"] } diff --git a/vite/node_modules/.vite/deps/chart__js.js b/vite/node_modules/.vite/deps/chart__js.js deleted file mode 100644 index 70fa0622c2e7513c1af0adc9a1f821b083aae97b..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chart__js.js +++ /dev/null @@ -1,100 +0,0 @@ -import { - Animation, - Animations, - ArcElement, - BarController, - BarElement, - BasePlatform, - BasicPlatform, - BubbleController, - CategoryScale, - Chart, - DatasetController, - DomPlatform, - DoughnutController, - Element, - Interaction, - LineController, - LineElement, - LinearScale, - LogarithmicScale, - PieController, - PointElement, - PolarAreaController, - RadarController, - RadialLinearScale, - Scale, - ScatterController, - Ticks, - TimeScale, - TimeSeriesScale, - _detectPlatform, - adapters, - animator, - controllers, - defaults, - elements, - index, - layouts, - plugin_colors, - plugin_decimation, - plugin_legend, - plugin_subtitle, - plugin_title, - plugin_tooltip, - plugins, - registerables, - registry, - scales -} from "./chunk-DTNR33MA.js"; -import "./chunk-DC5AMYBS.js"; -export { - Animation, - Animations, - ArcElement, - BarController, - BarElement, - BasePlatform, - BasicPlatform, - BubbleController, - CategoryScale, - Chart, - plugin_colors as Colors, - DatasetController, - plugin_decimation as Decimation, - DomPlatform, - DoughnutController, - Element, - index as Filler, - Interaction, - plugin_legend as Legend, - LineController, - LineElement, - LinearScale, - LogarithmicScale, - PieController, - PointElement, - PolarAreaController, - RadarController, - RadialLinearScale, - Scale, - ScatterController, - plugin_subtitle as SubTitle, - Ticks, - TimeScale, - TimeSeriesScale, - plugin_title as Title, - plugin_tooltip as Tooltip, - adapters as _adapters, - _detectPlatform, - animator, - controllers, - defaults, - elements, - layouts, - plugins, - registerables, - registry, - scales -}; -//# sourceMappingURL=chart__js.js.map diff --git a/vite/node_modules/.vite/deps/chart__js.js.map b/vite/node_modules/.vite/deps/chart__js.js.map deleted file mode 100644 index 98652118b6862120fb1a693020ad8654fe85851d..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chart__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/vite/node_modules/.vite/deps/chart__js_auto.js b/vite/node_modules/.vite/deps/chart__js_auto.js index b97a738d8eeeb1eb4471842ab860ca959498d7e5..9232eed34daaa257fe642ae5bb54f42a41fe774f 100644 --- a/vite/node_modules/.vite/deps/chart__js_auto.js +++ b/vite/node_modules/.vite/deps/chart__js_auto.js @@ -1,53 +1,14465 @@ import { - Animation, - Animations, - ArcElement, + __publicField +} from "./chunk-DC5AMYBS.js"; + +// node_modules/@kurkle/color/dist/color.esm.js +function round(v) { + return v + 0.5 | 0; +} +var lim = (v, l, h) => Math.max(Math.min(v, h), l); +function p2b(v) { + return lim(round(v * 2.55), 0, 255); +} +function n2b(v) { + return lim(round(v * 255), 0, 255); +} +function b2n(v) { + return lim(round(v / 2.55) / 100, 0, 1); +} +function n2p(v) { + return lim(round(v * 100), 0, 100); +} +var map$1 = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15 }; +var hex = [..."0123456789ABCDEF"]; +var h1 = (b) => hex[b & 15]; +var h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15]; +var eq = (b) => (b & 240) >> 4 === (b & 15); +var isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a); +function hexParse(str) { + var len = str.length; + var ret; + if (str[0] === "#") { + if (len === 4 || len === 5) { + ret = { + r: 255 & map$1[str[1]] * 17, + g: 255 & map$1[str[2]] * 17, + b: 255 & map$1[str[3]] * 17, + a: len === 5 ? map$1[str[4]] * 17 : 255 + }; + } else if (len === 7 || len === 9) { + ret = { + r: map$1[str[1]] << 4 | map$1[str[2]], + g: map$1[str[3]] << 4 | map$1[str[4]], + b: map$1[str[5]] << 4 | map$1[str[6]], + a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255 + }; + } + } + return ret; +} +var alpha = (a, f) => a < 255 ? f(a) : ""; +function hexString(v) { + var f = isShort(v) ? h1 : h2; + return v ? "#" + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : void 0; +} +var HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/; +function hsl2rgbn(h, s, l) { + const a = s * Math.min(l, 1 - l); + const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + return [f(0), f(8), f(4)]; +} +function hsv2rgbn(h, s, v) { + const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0); + return [f(5), f(3), f(1)]; +} +function hwb2rgbn(h, w, b) { + const rgb = hsl2rgbn(h, 1, 0.5); + let i; + if (w + b > 1) { + i = 1 / (w + b); + w *= i; + b *= i; + } + for (i = 0; i < 3; i++) { + rgb[i] *= 1 - w - b; + rgb[i] += w; + } + return rgb; +} +function hueValue(r, g, b, d, max) { + if (r === max) { + return (g - b) / d + (g < b ? 6 : 0); + } + if (g === max) { + return (b - r) / d + 2; + } + return (r - g) / d + 4; +} +function rgb2hsl(v) { + const range = 255; + const r = v.r / range; + const g = v.g / range; + const b = v.b / range; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + const l = (max + min) / 2; + let h, s, d; + if (max !== min) { + d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + h = hueValue(r, g, b, d, max); + h = h * 60 + 0.5; + } + return [h | 0, s || 0, l]; +} +function calln(f, a, b, c) { + return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b); +} +function hsl2rgb(h, s, l) { + return calln(hsl2rgbn, h, s, l); +} +function hwb2rgb(h, w, b) { + return calln(hwb2rgbn, h, w, b); +} +function hsv2rgb(h, s, v) { + return calln(hsv2rgbn, h, s, v); +} +function hue(h) { + return (h % 360 + 360) % 360; +} +function hueParse(str) { + const m = HUE_RE.exec(str); + let a = 255; + let v; + if (!m) { + return; + } + if (m[5] !== v) { + a = m[6] ? p2b(+m[5]) : n2b(+m[5]); + } + const h = hue(+m[2]); + const p1 = +m[3] / 100; + const p2 = +m[4] / 100; + if (m[1] === "hwb") { + v = hwb2rgb(h, p1, p2); + } else if (m[1] === "hsv") { + v = hsv2rgb(h, p1, p2); + } else { + v = hsl2rgb(h, p1, p2); + } + return { + r: v[0], + g: v[1], + b: v[2], + a + }; +} +function rotate(v, deg) { + var h = rgb2hsl(v); + h[0] = hue(h[0] + deg); + h = hsl2rgb(h); + v.r = h[0]; + v.g = h[1]; + v.b = h[2]; +} +function hslString(v) { + if (!v) { + return; + } + const a = rgb2hsl(v); + const h = a[0]; + const s = n2p(a[1]); + const l = n2p(a[2]); + return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`; +} +var map = { + x: "dark", + Z: "light", + Y: "re", + X: "blu", + W: "gr", + V: "medium", + U: "slate", + A: "ee", + T: "ol", + S: "or", + B: "ra", + C: "lateg", + D: "ights", + R: "in", + Q: "turquois", + E: "hi", + P: "ro", + O: "al", + N: "le", + M: "de", + L: "yello", + F: "en", + K: "ch", + G: "arks", + H: "ea", + I: "ightg", + J: "wh" +}; +var names$1 = { + OiceXe: "f0f8ff", + antiquewEte: "faebd7", + aqua: "ffff", + aquamarRe: "7fffd4", + azuY: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "0", + blanKedOmond: "ffebcd", + Xe: "ff", + XeviTet: "8a2be2", + bPwn: "a52a2a", + burlywood: "deb887", + caMtXe: "5f9ea0", + KartYuse: "7fff00", + KocTate: "d2691e", + cSO: "ff7f50", + cSnflowerXe: "6495ed", + cSnsilk: "fff8dc", + crimson: "dc143c", + cyan: "ffff", + xXe: "8b", + xcyan: "8b8b", + xgTMnPd: "b8860b", + xWay: "a9a9a9", + xgYF: "6400", + xgYy: "a9a9a9", + xkhaki: "bdb76b", + xmagFta: "8b008b", + xTivegYF: "556b2f", + xSange: "ff8c00", + xScEd: "9932cc", + xYd: "8b0000", + xsOmon: "e9967a", + xsHgYF: "8fbc8f", + xUXe: "483d8b", + xUWay: "2f4f4f", + xUgYy: "2f4f4f", + xQe: "ced1", + xviTet: "9400d3", + dAppRk: "ff1493", + dApskyXe: "bfff", + dimWay: "696969", + dimgYy: "696969", + dodgerXe: "1e90ff", + fiYbrick: "b22222", + flSOwEte: "fffaf0", + foYstWAn: "228b22", + fuKsia: "ff00ff", + gaRsbSo: "dcdcdc", + ghostwEte: "f8f8ff", + gTd: "ffd700", + gTMnPd: "daa520", + Way: "808080", + gYF: "8000", + gYFLw: "adff2f", + gYy: "808080", + honeyMw: "f0fff0", + hotpRk: "ff69b4", + RdianYd: "cd5c5c", + Rdigo: "4b0082", + ivSy: "fffff0", + khaki: "f0e68c", + lavFMr: "e6e6fa", + lavFMrXsh: "fff0f5", + lawngYF: "7cfc00", + NmoncEffon: "fffacd", + ZXe: "add8e6", + ZcSO: "f08080", + Zcyan: "e0ffff", + ZgTMnPdLw: "fafad2", + ZWay: "d3d3d3", + ZgYF: "90ee90", + ZgYy: "d3d3d3", + ZpRk: "ffb6c1", + ZsOmon: "ffa07a", + ZsHgYF: "20b2aa", + ZskyXe: "87cefa", + ZUWay: "778899", + ZUgYy: "778899", + ZstAlXe: "b0c4de", + ZLw: "ffffe0", + lime: "ff00", + limegYF: "32cd32", + lRF: "faf0e6", + magFta: "ff00ff", + maPon: "800000", + VaquamarRe: "66cdaa", + VXe: "cd", + VScEd: "ba55d3", + VpurpN: "9370db", + VsHgYF: "3cb371", + VUXe: "7b68ee", + VsprRggYF: "fa9a", + VQe: "48d1cc", + VviTetYd: "c71585", + midnightXe: "191970", + mRtcYam: "f5fffa", + mistyPse: "ffe4e1", + moccasR: "ffe4b5", + navajowEte: "ffdead", + navy: "80", + Tdlace: "fdf5e6", + Tive: "808000", + TivedBb: "6b8e23", + Sange: "ffa500", + SangeYd: "ff4500", + ScEd: "da70d6", + pOegTMnPd: "eee8aa", + pOegYF: "98fb98", + pOeQe: "afeeee", + pOeviTetYd: "db7093", + papayawEp: "ffefd5", + pHKpuff: "ffdab9", + peru: "cd853f", + pRk: "ffc0cb", + plum: "dda0dd", + powMrXe: "b0e0e6", + purpN: "800080", + YbeccapurpN: "663399", + Yd: "ff0000", + Psybrown: "bc8f8f", + PyOXe: "4169e1", + saddNbPwn: "8b4513", + sOmon: "fa8072", + sandybPwn: "f4a460", + sHgYF: "2e8b57", + sHshell: "fff5ee", + siFna: "a0522d", + silver: "c0c0c0", + skyXe: "87ceeb", + UXe: "6a5acd", + UWay: "708090", + UgYy: "708090", + snow: "fffafa", + sprRggYF: "ff7f", + stAlXe: "4682b4", + tan: "d2b48c", + teO: "8080", + tEstN: "d8bfd8", + tomato: "ff6347", + Qe: "40e0d0", + viTet: "ee82ee", + JHt: "f5deb3", + wEte: "ffffff", + wEtesmoke: "f5f5f5", + Lw: "ffff00", + LwgYF: "9acd32" +}; +function unpack() { + const unpacked = {}; + const keys = Object.keys(names$1); + const tkeys = Object.keys(map); + let i, j, k, ok, nk; + for (i = 0; i < keys.length; i++) { + ok = nk = keys[i]; + for (j = 0; j < tkeys.length; j++) { + k = tkeys[j]; + nk = nk.replace(k, map[k]); + } + k = parseInt(names$1[ok], 16); + unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255]; + } + return unpacked; +} +var names; +function nameParse(str) { + if (!names) { + names = unpack(); + names.transparent = [0, 0, 0, 0]; + } + const a = names[str.toLowerCase()]; + return a && { + r: a[0], + g: a[1], + b: a[2], + a: a.length === 4 ? a[3] : 255 + }; +} +var RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/; +function rgbParse(str) { + const m = RGB_RE.exec(str); + let a = 255; + let r, g, b; + if (!m) { + return; + } + if (m[7] !== r) { + const v = +m[7]; + a = m[8] ? p2b(v) : lim(v * 255, 0, 255); + } + r = +m[1]; + g = +m[3]; + b = +m[5]; + r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255)); + g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255)); + b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255)); + return { + r, + g, + b, + a + }; +} +function rgbString(v) { + return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`); +} +var to = (v) => v <= 31308e-7 ? v * 12.92 : Math.pow(v, 1 / 2.4) * 1.055 - 0.055; +var from = (v) => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); +function interpolate(rgb1, rgb2, t) { + const r = from(b2n(rgb1.r)); + const g = from(b2n(rgb1.g)); + const b = from(b2n(rgb1.b)); + return { + r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))), + g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))), + b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))), + a: rgb1.a + t * (rgb2.a - rgb1.a) + }; +} +function modHSL(v, i, ratio) { + if (v) { + let tmp = rgb2hsl(v); + tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1)); + tmp = hsl2rgb(tmp); + v.r = tmp[0]; + v.g = tmp[1]; + v.b = tmp[2]; + } +} +function clone(v, proto) { + return v ? Object.assign(proto || {}, v) : v; +} +function fromObject(input) { + var v = { r: 0, g: 0, b: 0, a: 255 }; + if (Array.isArray(input)) { + if (input.length >= 3) { + v = { r: input[0], g: input[1], b: input[2], a: 255 }; + if (input.length > 3) { + v.a = n2b(input[3]); + } + } + } else { + v = clone(input, { r: 0, g: 0, b: 0, a: 1 }); + v.a = n2b(v.a); + } + return v; +} +function functionParse(str) { + if (str.charAt(0) === "r") { + return rgbParse(str); + } + return hueParse(str); +} +var Color = class _Color { + constructor(input) { + if (input instanceof _Color) { + return input; + } + const type = typeof input; + let v; + if (type === "object") { + v = fromObject(input); + } else if (type === "string") { + v = hexParse(input) || nameParse(input) || functionParse(input); + } + this._rgb = v; + this._valid = !!v; + } + get valid() { + return this._valid; + } + get rgb() { + var v = clone(this._rgb); + if (v) { + v.a = b2n(v.a); + } + return v; + } + set rgb(obj) { + this._rgb = fromObject(obj); + } + rgbString() { + return this._valid ? rgbString(this._rgb) : void 0; + } + hexString() { + return this._valid ? hexString(this._rgb) : void 0; + } + hslString() { + return this._valid ? hslString(this._rgb) : void 0; + } + mix(color2, weight) { + if (color2) { + const c1 = this.rgb; + const c2 = color2.rgb; + let w2; + const p = weight === w2 ? 0.5 : weight; + const w = 2 * p - 1; + const a = c1.a - c2.a; + const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2; + w2 = 1 - w1; + c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5; + c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5; + c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5; + c1.a = p * c1.a + (1 - p) * c2.a; + this.rgb = c1; + } + return this; + } + interpolate(color2, t) { + if (color2) { + this._rgb = interpolate(this._rgb, color2._rgb, t); + } + return this; + } + clone() { + return new _Color(this.rgb); + } + alpha(a) { + this._rgb.a = n2b(a); + return this; + } + clearer(ratio) { + const rgb = this._rgb; + rgb.a *= 1 - ratio; + return this; + } + greyscale() { + const rgb = this._rgb; + const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11); + rgb.r = rgb.g = rgb.b = val; + return this; + } + opaquer(ratio) { + const rgb = this._rgb; + rgb.a *= 1 + ratio; + return this; + } + negate() { + const v = this._rgb; + v.r = 255 - v.r; + v.g = 255 - v.g; + v.b = 255 - v.b; + return this; + } + lighten(ratio) { + modHSL(this._rgb, 2, ratio); + return this; + } + darken(ratio) { + modHSL(this._rgb, 2, -ratio); + return this; + } + saturate(ratio) { + modHSL(this._rgb, 1, ratio); + return this; + } + desaturate(ratio) { + modHSL(this._rgb, 1, -ratio); + return this; + } + rotate(deg) { + rotate(this._rgb, deg); + return this; + } +}; + +// node_modules/chart.js/dist/chunks/helpers.dataset.js +function noop() { +} +var uid = /* @__PURE__ */ (() => { + let id = 0; + return () => id++; +})(); +function isNullOrUndef(value) { + return value === null || value === void 0; +} +function isArray(value) { + if (Array.isArray && Array.isArray(value)) { + return true; + } + const type = Object.prototype.toString.call(value); + if (type.slice(0, 7) === "[object" && type.slice(-6) === "Array]") { + return true; + } + return false; +} +function isObject(value) { + return value !== null && Object.prototype.toString.call(value) === "[object Object]"; +} +function isNumberFinite(value) { + return (typeof value === "number" || value instanceof Number) && isFinite(+value); +} +function finiteOrDefault(value, defaultValue) { + return isNumberFinite(value) ? value : defaultValue; +} +function valueOrDefault(value, defaultValue) { + return typeof value === "undefined" ? defaultValue : value; +} +var toPercentage = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 : +value / dimension; +var toDimension = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 * dimension : +value; +function callback(fn, args, thisArg) { + if (fn && typeof fn.call === "function") { + return fn.apply(thisArg, args); + } +} +function each(loopable, fn, thisArg, reverse) { + let i, len, keys; + if (isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } + } + } else if (isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); + } + } +} +function _elementsEqual(a0, a1) { + let i, ilen, v0, v1; + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; + if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) { + return false; + } + } + return true; +} +function clone2(source) { + if (isArray(source)) { + return source.map(clone2); + } + if (isObject(source)) { + const target = /* @__PURE__ */ Object.create(null); + const keys = Object.keys(source); + const klen = keys.length; + let k = 0; + for (; k < klen; ++k) { + target[keys[k]] = clone2(source[keys[k]]); + } + return target; + } + return source; +} +function isValidKey(key) { + return [ + "__proto__", + "prototype", + "constructor" + ].indexOf(key) === -1; +} +function _merger(key, target, source, options) { + if (!isValidKey(key)) { + return; + } + const tval = target[key]; + const sval = source[key]; + if (isObject(tval) && isObject(sval)) { + merge(tval, sval, options); + } else { + target[key] = clone2(sval); + } +} +function merge(target, source, options) { + const sources = isArray(source) ? source : [ + source + ]; + const ilen = sources.length; + if (!isObject(target)) { + return target; + } + options = options || {}; + const merger = options.merger || _merger; + let current; + for (let i = 0; i < ilen; ++i) { + current = sources[i]; + if (!isObject(current)) { + continue; + } + const keys = Object.keys(current); + for (let k = 0, klen = keys.length; k < klen; ++k) { + merger(keys[k], target, current, options); + } + } + return target; +} +function mergeIf(target, source) { + return merge(target, source, { + merger: _mergerIf + }); +} +function _mergerIf(key, target, source) { + if (!isValidKey(key)) { + return; + } + const tval = target[key]; + const sval = source[key]; + if (isObject(tval) && isObject(sval)) { + mergeIf(tval, sval); + } else if (!Object.prototype.hasOwnProperty.call(target, key)) { + target[key] = clone2(sval); + } +} +var keyResolvers = { + // Chart.helpers.core resolveObjectKey should resolve empty key to root object + "": (v) => v, + // default resolvers + x: (o) => o.x, + y: (o) => o.y +}; +function _splitKey(key) { + const parts = key.split("."); + const keys = []; + let tmp = ""; + for (const part of parts) { + tmp += part; + if (tmp.endsWith("\\")) { + tmp = tmp.slice(0, -1) + "."; + } else { + keys.push(tmp); + tmp = ""; + } + } + return keys; +} +function _getKeyResolver(key) { + const keys = _splitKey(key); + return (obj) => { + for (const k of keys) { + if (k === "") { + break; + } + obj = obj && obj[k]; + } + return obj; + }; +} +function resolveObjectKey(obj, key) { + const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key)); + return resolver(obj); +} +function _capitalize(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} +var defined = (value) => typeof value !== "undefined"; +var isFunction = (value) => typeof value === "function"; +var setsEqual = (a, b) => { + if (a.size !== b.size) { + return false; + } + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + return true; +}; +function _isClickEvent(e) { + return e.type === "mouseup" || e.type === "click" || e.type === "contextmenu"; +} +var PI = Math.PI; +var TAU = 2 * PI; +var PITAU = TAU + PI; +var INFINITY = Number.POSITIVE_INFINITY; +var RAD_PER_DEG = PI / 180; +var HALF_PI = PI / 2; +var QUARTER_PI = PI / 4; +var TWO_THIRDS_PI = PI * 2 / 3; +var log10 = Math.log10; +var sign = Math.sign; +function almostEquals(x, y, epsilon) { + return Math.abs(x - y) < epsilon; +} +function niceNum(range) { + const roundedRange = Math.round(range); + range = almostEquals(range, roundedRange, range / 1e3) ? roundedRange : range; + const niceRange = Math.pow(10, Math.floor(log10(range))); + const fraction = range / niceRange; + const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10; + return niceFraction * niceRange; +} +function _factorize(value) { + const result = []; + const sqrt = Math.sqrt(value); + let i; + for (i = 1; i < sqrt; i++) { + if (value % i === 0) { + result.push(i); + result.push(value / i); + } + } + if (sqrt === (sqrt | 0)) { + result.push(sqrt); + } + result.sort((a, b) => a - b).pop(); + return result; +} +function isNonPrimitive(n) { + return typeof n === "symbol" || typeof n === "object" && n !== null && !(Symbol.toPrimitive in n || "toString" in n || "valueOf" in n); +} +function isNumber(n) { + return !isNonPrimitive(n) && !isNaN(parseFloat(n)) && isFinite(n); +} +function almostWhole(x, epsilon) { + const rounded = Math.round(x); + return rounded - epsilon <= x && rounded + epsilon >= x; +} +function _setMinAndMaxByKey(array, target, property) { + let i, ilen, value; + for (i = 0, ilen = array.length; i < ilen; i++) { + value = array[i][property]; + if (!isNaN(value)) { + target.min = Math.min(target.min, value); + target.max = Math.max(target.max, value); + } + } +} +function toRadians(degrees) { + return degrees * (PI / 180); +} +function toDegrees(radians) { + return radians * (180 / PI); +} +function _decimalPlaces(x) { + if (!isNumberFinite(x)) { + return; + } + let e = 1; + let p = 0; + while (Math.round(x * e) / e !== x) { + e *= 10; + p++; + } + return p; +} +function getAngleFromPoint(centrePoint, anglePoint) { + const distanceFromXCenter = anglePoint.x - centrePoint.x; + const distanceFromYCenter = anglePoint.y - centrePoint.y; + const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + if (angle < -0.5 * PI) { + angle += TAU; + } + return { + angle, + distance: radialDistanceFromCenter + }; +} +function distanceBetweenPoints(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); +} +function _angleDiff(a, b) { + return (a - b + PITAU) % TAU - PI; +} +function _normalizeAngle(a) { + return (a % TAU + TAU) % TAU; +} +function _angleBetween(angle, start, end, sameAngleIsFullCircle) { + const a = _normalizeAngle(angle); + const s = _normalizeAngle(start); + const e = _normalizeAngle(end); + const angleToStart = _normalizeAngle(s - a); + const angleToEnd = _normalizeAngle(e - a); + const startToAngle = _normalizeAngle(a - s); + const endToAngle = _normalizeAngle(a - e); + return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle; +} +function _limitValue(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +function _int16Range(value) { + return _limitValue(value, -32768, 32767); +} +function _isBetween(value, start, end, epsilon = 1e-6) { + return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon; +} +function _lookup(table, value, cmp) { + cmp = cmp || ((index2) => table[index2] < value); + let hi = table.length - 1; + let lo = 0; + let mid; + while (hi - lo > 1) { + mid = lo + hi >> 1; + if (cmp(mid)) { + lo = mid; + } else { + hi = mid; + } + } + return { + lo, + hi + }; +} +var _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? (index2) => { + const ti = table[index2][key]; + return ti < value || ti === value && table[index2 + 1][key] === value; +} : (index2) => table[index2][key] < value); +var _rlookupByKey = (table, key, value) => _lookup(table, value, (index2) => table[index2][key] >= value); +function _filterBetween(values, min, max) { + let start = 0; + let end = values.length; + while (start < end && values[start] < min) { + start++; + } + while (end > start && values[end - 1] > max) { + end--; + } + return start > 0 || end < values.length ? values.slice(start, end) : values; +} +var arrayEvents = [ + "push", + "pop", + "shift", + "splice", + "unshift" +]; +function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; + } + Object.defineProperty(array, "_chartjs", { + configurable: true, + enumerable: false, + value: { + listeners: [ + listener + ] + } + }); + arrayEvents.forEach((key) => { + const method = "_onData" + _capitalize(key); + const base = array[key]; + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value(...args) { + const res = base.apply(this, args); + array._chartjs.listeners.forEach((object) => { + if (typeof object[method] === "function") { + object[method](...args); + } + }); + return res; + } + }); + }); +} +function unlistenArrayEvents(array, listener) { + const stub = array._chartjs; + if (!stub) { + return; + } + const listeners = stub.listeners; + const index2 = listeners.indexOf(listener); + if (index2 !== -1) { + listeners.splice(index2, 1); + } + if (listeners.length > 0) { + return; + } + arrayEvents.forEach((key) => { + delete array[key]; + }); + delete array._chartjs; +} +function _arrayUnique(items) { + const set2 = new Set(items); + if (set2.size === items.length) { + return items; + } + return Array.from(set2); +} +var requestAnimFrame = function() { + if (typeof window === "undefined") { + return function(callback2) { + return callback2(); + }; + } + return window.requestAnimationFrame; +}(); +function throttled(fn, thisArg) { + let argsToUse = []; + let ticking = false; + return function(...args) { + argsToUse = args; + if (!ticking) { + ticking = true; + requestAnimFrame.call(window, () => { + ticking = false; + fn.apply(thisArg, argsToUse); + }); + } + }; +} +function debounce(fn, delay) { + let timeout; + return function(...args) { + if (delay) { + clearTimeout(timeout); + timeout = setTimeout(fn, delay, args); + } else { + fn.apply(this, args); + } + return delay; + }; +} +var _toLeftRightCenter = (align) => align === "start" ? "left" : align === "end" ? "right" : "center"; +var _alignStartEnd = (align, start, end) => align === "start" ? start : align === "end" ? end : (start + end) / 2; +var _textX = (align, left, right, rtl) => { + const check = rtl ? "left" : "right"; + return align === check ? right : align === "center" ? (left + right) / 2 : left; +}; +function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) { + const pointCount = points.length; + let start = 0; + let count = pointCount; + if (meta._sorted) { + const { iScale, vScale, _parsed } = meta; + const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null; + const axis = iScale.axis; + const { min, max, minDefined, maxDefined } = iScale.getUserBounds(); + if (minDefined) { + start = Math.min( + // @ts-expect-error Need to type _parsed + _lookupByKey(_parsed, axis, min).lo, + // @ts-expect-error Need to fix types on _lookupByKey + animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo + ); + if (spanGaps) { + const distanceToDefinedLo = _parsed.slice(0, start + 1).reverse().findIndex((point) => !isNullOrUndef(point[vScale.axis])); + start -= Math.max(0, distanceToDefinedLo); + } + start = _limitValue(start, 0, pointCount - 1); + } + if (maxDefined) { + let end = Math.max( + // @ts-expect-error Need to type _parsed + _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, + // @ts-expect-error Need to fix types on _lookupByKey + animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1 + ); + if (spanGaps) { + const distanceToDefinedHi = _parsed.slice(end - 1).findIndex((point) => !isNullOrUndef(point[vScale.axis])); + end += Math.max(0, distanceToDefinedHi); + } + count = _limitValue(end, start, pointCount) - start; + } else { + count = pointCount - start; + } + } + return { + start, + count + }; +} +function _scaleRangesChanged(meta) { + const { xScale, yScale, _scaleRanges } = meta; + const newRanges = { + xmin: xScale.min, + xmax: xScale.max, + ymin: yScale.min, + ymax: yScale.max + }; + if (!_scaleRanges) { + meta._scaleRanges = newRanges; + return true; + } + const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max; + Object.assign(_scaleRanges, newRanges); + return changed; +} +var atEdge = (t) => t === 0 || t === 1; +var elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p)); +var elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1; +var effects = { + linear: (t) => t, + easeInQuad: (t) => t * t, + easeOutQuad: (t) => -t * (t - 2), + easeInOutQuad: (t) => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1), + easeInCubic: (t) => t * t * t, + easeOutCubic: (t) => (t -= 1) * t * t + 1, + easeInOutCubic: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2), + easeInQuart: (t) => t * t * t * t, + easeOutQuart: (t) => -((t -= 1) * t * t * t - 1), + easeInOutQuart: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2), + easeInQuint: (t) => t * t * t * t * t, + easeOutQuint: (t) => (t -= 1) * t * t * t * t + 1, + easeInOutQuint: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2), + easeInSine: (t) => -Math.cos(t * HALF_PI) + 1, + easeOutSine: (t) => Math.sin(t * HALF_PI), + easeInOutSine: (t) => -0.5 * (Math.cos(PI * t) - 1), + easeInExpo: (t) => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)), + easeOutExpo: (t) => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1, + easeInOutExpo: (t) => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2), + easeInCirc: (t) => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1), + easeOutCirc: (t) => Math.sqrt(1 - (t -= 1) * t), + easeInOutCirc: (t) => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1), + easeInElastic: (t) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3), + easeOutElastic: (t) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3), + easeInOutElastic(t) { + const s = 0.1125; + const p = 0.45; + return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p); + }, + easeInBack(t) { + const s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + easeOutBack(t) { + const s = 1.70158; + return (t -= 1) * t * ((s + 1) * t + s) + 1; + }, + easeInOutBack(t) { + let s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s)); + } + return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2); + }, + easeInBounce: (t) => 1 - effects.easeOutBounce(1 - t), + easeOutBounce(t) { + const m = 7.5625; + const d = 2.75; + if (t < 1 / d) { + return m * t * t; + } + if (t < 2 / d) { + return m * (t -= 1.5 / d) * t + 0.75; + } + if (t < 2.5 / d) { + return m * (t -= 2.25 / d) * t + 0.9375; + } + return m * (t -= 2.625 / d) * t + 0.984375; + }, + easeInOutBounce: (t) => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5 +}; +function isPatternOrGradient(value) { + if (value && typeof value === "object") { + const type = value.toString(); + return type === "[object CanvasPattern]" || type === "[object CanvasGradient]"; + } + return false; +} +function color(value) { + return isPatternOrGradient(value) ? value : new Color(value); +} +function getHoverColor(value) { + return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString(); +} +var numbers = [ + "x", + "y", + "borderWidth", + "radius", + "tension" +]; +var colors = [ + "color", + "borderColor", + "backgroundColor" +]; +function applyAnimationsDefaults(defaults2) { + defaults2.set("animation", { + delay: void 0, + duration: 1e3, + easing: "easeOutQuart", + fn: void 0, + from: void 0, + loop: void 0, + to: void 0, + type: void 0 + }); + defaults2.describe("animation", { + _fallback: false, + _indexable: false, + _scriptable: (name) => name !== "onProgress" && name !== "onComplete" && name !== "fn" + }); + defaults2.set("animations", { + colors: { + type: "color", + properties: colors + }, + numbers: { + type: "number", + properties: numbers + } + }); + defaults2.describe("animations", { + _fallback: "animation" + }); + defaults2.set("transitions", { + active: { + animation: { + duration: 400 + } + }, + resize: { + animation: { + duration: 0 + } + }, + show: { + animations: { + colors: { + from: "transparent" + }, + visible: { + type: "boolean", + duration: 0 + } + } + }, + hide: { + animations: { + colors: { + to: "transparent" + }, + visible: { + type: "boolean", + easing: "linear", + fn: (v) => v | 0 + } + } + } + }); +} +function applyLayoutsDefaults(defaults2) { + defaults2.set("layout", { + autoPadding: true, + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + }); +} +var intlCache = /* @__PURE__ */ new Map(); +function getNumberFormat(locale, options) { + options = options || {}; + const cacheKey = locale + JSON.stringify(options); + let formatter = intlCache.get(cacheKey); + if (!formatter) { + formatter = new Intl.NumberFormat(locale, options); + intlCache.set(cacheKey, formatter); + } + return formatter; +} +function formatNumber(num, locale, options) { + return getNumberFormat(locale, options).format(num); +} +var formatters = { + values(value) { + return isArray(value) ? value : "" + value; + }, + numeric(tickValue, index2, ticks) { + if (tickValue === 0) { + return "0"; + } + const locale = this.chart.options.locale; + let notation; + let delta = tickValue; + if (ticks.length > 1) { + const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value)); + if (maxTick < 1e-4 || maxTick > 1e15) { + notation = "scientific"; + } + delta = calculateDelta(tickValue, ticks); + } + const logDelta = log10(Math.abs(delta)); + const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); + const options = { + notation, + minimumFractionDigits: numDecimal, + maximumFractionDigits: numDecimal + }; + Object.assign(options, this.options.ticks.format); + return formatNumber(tickValue, locale, options); + }, + logarithmic(tickValue, index2, ticks) { + if (tickValue === 0) { + return "0"; + } + const remain = ticks[index2].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue))); + if ([ + 1, + 2, + 3, + 5, + 10, + 15 + ].includes(remain) || index2 > 0.8 * ticks.length) { + return formatters.numeric.call(this, tickValue, index2, ticks); + } + return ""; + } +}; +function calculateDelta(tickValue, ticks) { + let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value; + if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) { + delta = tickValue - Math.floor(tickValue); + } + return delta; +} +var Ticks = { + formatters +}; +function applyScaleDefaults(defaults2) { + defaults2.set("scale", { + display: true, + offset: false, + reverse: false, + beginAtZero: false, + bounds: "ticks", + clip: true, + grace: 0, + grid: { + display: true, + lineWidth: 1, + drawOnChartArea: true, + drawTicks: true, + tickLength: 8, + tickWidth: (_ctx, options) => options.lineWidth, + tickColor: (_ctx, options) => options.color, + offset: false + }, + border: { + display: true, + dash: [], + dashOffset: 0, + width: 1 + }, + title: { + display: false, + text: "", + padding: { + top: 4, + bottom: 4 + } + }, + ticks: { + minRotation: 0, + maxRotation: 50, + mirror: false, + textStrokeWidth: 0, + textStrokeColor: "", + padding: 3, + display: true, + autoSkip: true, + autoSkipPadding: 3, + labelOffset: 0, + callback: Ticks.formatters.values, + minor: {}, + major: {}, + align: "center", + crossAlign: "near", + showLabelBackdrop: false, + backdropColor: "rgba(255, 255, 255, 0.75)", + backdropPadding: 2 + } + }); + defaults2.route("scale.ticks", "color", "", "color"); + defaults2.route("scale.grid", "color", "", "borderColor"); + defaults2.route("scale.border", "color", "", "borderColor"); + defaults2.route("scale.title", "color", "", "color"); + defaults2.describe("scale", { + _fallback: false, + _scriptable: (name) => !name.startsWith("before") && !name.startsWith("after") && name !== "callback" && name !== "parser", + _indexable: (name) => name !== "borderDash" && name !== "tickBorderDash" && name !== "dash" + }); + defaults2.describe("scales", { + _fallback: "scale" + }); + defaults2.describe("scale.ticks", { + _scriptable: (name) => name !== "backdropPadding" && name !== "callback", + _indexable: (name) => name !== "backdropPadding" + }); +} +var overrides = /* @__PURE__ */ Object.create(null); +var descriptors = /* @__PURE__ */ Object.create(null); +function getScope$1(node, key) { + if (!key) { + return node; + } + const keys = key.split("."); + for (let i = 0, n = keys.length; i < n; ++i) { + const k = keys[i]; + node = node[k] || (node[k] = /* @__PURE__ */ Object.create(null)); + } + return node; +} +function set(root, scope, values) { + if (typeof scope === "string") { + return merge(getScope$1(root, scope), values); + } + return merge(getScope$1(root, ""), scope); +} +var Defaults = class { + constructor(_descriptors2, _appliers) { + this.animation = void 0; + this.backgroundColor = "rgba(0,0,0,0.1)"; + this.borderColor = "rgba(0,0,0,0.1)"; + this.color = "#666"; + this.datasets = {}; + this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio(); + this.elements = {}; + this.events = [ + "mousemove", + "mouseout", + "click", + "touchstart", + "touchmove" + ]; + this.font = { + family: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + size: 12, + style: "normal", + lineHeight: 1.2, + weight: null + }; + this.hover = {}; + this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor); + this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor); + this.hoverColor = (ctx, options) => getHoverColor(options.color); + this.indexAxis = "x"; + this.interaction = { + mode: "nearest", + intersect: true, + includeInvisible: false + }; + this.maintainAspectRatio = true; + this.onHover = null; + this.onClick = null; + this.parsing = true; + this.plugins = {}; + this.responsive = true; + this.scale = void 0; + this.scales = {}; + this.showLine = true; + this.drawActiveElementsOnTop = true; + this.describe(_descriptors2); + this.apply(_appliers); + } + set(scope, values) { + return set(this, scope, values); + } + get(scope) { + return getScope$1(this, scope); + } + describe(scope, values) { + return set(descriptors, scope, values); + } + override(scope, values) { + return set(overrides, scope, values); + } + route(scope, name, targetScope, targetName) { + const scopeObject = getScope$1(this, scope); + const targetScopeObject = getScope$1(this, targetScope); + const privateName = "_" + name; + Object.defineProperties(scopeObject, { + [privateName]: { + value: scopeObject[name], + writable: true + }, + [name]: { + enumerable: true, + get() { + const local = this[privateName]; + const target = targetScopeObject[targetName]; + if (isObject(local)) { + return Object.assign({}, target, local); + } + return valueOrDefault(local, target); + }, + set(value) { + this[privateName] = value; + } + } + }); + } + apply(appliers) { + appliers.forEach((apply) => apply(this)); + } +}; +var defaults = new Defaults({ + _scriptable: (name) => !name.startsWith("on"), + _indexable: (name) => name !== "events", + hover: { + _fallback: "interaction" + }, + interaction: { + _scriptable: false, + _indexable: false + } +}, [ + applyAnimationsDefaults, + applyLayoutsDefaults, + applyScaleDefaults +]); +function toFontString(font) { + if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) { + return null; + } + return (font.style ? font.style + " " : "") + (font.weight ? font.weight + " " : "") + font.size + "px " + font.family; +} +function _measureText(ctx, data, gc, longest, string) { + let textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; +} +function _longestText(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + let data = cache.data = cache.data || {}; + let gc = cache.garbageCollect = cache.garbageCollect || []; + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + ctx.save(); + ctx.font = font; + let longest = 0; + const ilen = arrayOfThings.length; + let i, j, jlen, thing, nestedThing; + for (i = 0; i < ilen; i++) { + thing = arrayOfThings[i]; + if (thing !== void 0 && thing !== null && !isArray(thing)) { + longest = _measureText(ctx, data, gc, longest, thing); + } else if (isArray(thing)) { + for (j = 0, jlen = thing.length; j < jlen; j++) { + nestedThing = thing[j]; + if (nestedThing !== void 0 && nestedThing !== null && !isArray(nestedThing)) { + longest = _measureText(ctx, data, gc, longest, nestedThing); + } + } + } + } + ctx.restore(); + const gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; +} +function _alignPixel(chart, pixel, width) { + const devicePixelRatio = chart.currentDevicePixelRatio; + const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0; + return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; +} +function clearCanvas(canvas, ctx) { + if (!ctx && !canvas) { + return; + } + ctx = ctx || canvas.getContext("2d"); + ctx.save(); + ctx.resetTransform(); + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.restore(); +} +function drawPoint(ctx, options, x, y) { + drawPointLegend(ctx, options, x, y, null); +} +function drawPointLegend(ctx, options, x, y, w) { + let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW; + const style = options.pointStyle; + const rotation = options.rotation; + const radius = options.radius; + let rad = (rotation || 0) * RAD_PER_DEG; + if (style && typeof style === "object") { + type = style.toString(); + if (type === "[object HTMLImageElement]" || type === "[object HTMLCanvasElement]") { + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rad); + ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); + ctx.restore(); + return; + } + } + if (isNaN(radius) || radius <= 0) { + return; + } + ctx.beginPath(); + switch (style) { + default: + if (w) { + ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU); + } else { + ctx.arc(x, y, radius, 0, TAU); + } + ctx.closePath(); + break; + case "triangle": + width = w ? w / 2 : radius; + ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); + ctx.closePath(); + break; + case "rectRounded": + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); + yOffset = Math.sin(rad + QUARTER_PI) * size; + yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); + ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); + break; + case "rect": + if (!rotation) { + size = Math.SQRT1_2 * radius; + width = w ? w / 2 : size; + ctx.rect(x - width, y - size, 2 * width, 2 * size); + break; + } + rad += QUARTER_PI; + case "rectRot": + xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); + ctx.moveTo(x - xOffsetW, y - yOffset); + ctx.lineTo(x + yOffsetW, y - xOffset); + ctx.lineTo(x + xOffsetW, y + yOffset); + ctx.lineTo(x - yOffsetW, y + xOffset); + ctx.closePath(); + break; + case "crossRot": + rad += QUARTER_PI; + case "cross": + xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); + ctx.moveTo(x - xOffsetW, y - yOffset); + ctx.lineTo(x + xOffsetW, y + yOffset); + ctx.moveTo(x + yOffsetW, y - xOffset); + ctx.lineTo(x - yOffsetW, y + xOffset); + break; + case "star": + xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); + ctx.moveTo(x - xOffsetW, y - yOffset); + ctx.lineTo(x + xOffsetW, y + yOffset); + ctx.moveTo(x + yOffsetW, y - xOffset); + ctx.lineTo(x - yOffsetW, y + xOffset); + rad += QUARTER_PI; + xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); + ctx.moveTo(x - xOffsetW, y - yOffset); + ctx.lineTo(x + xOffsetW, y + yOffset); + ctx.moveTo(x + yOffsetW, y - xOffset); + ctx.lineTo(x - yOffsetW, y + xOffset); + break; + case "line": + xOffset = w ? w / 2 : Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + break; + case "dash": + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius); + break; + case false: + ctx.closePath(); + break; + } + ctx.fill(); + if (options.borderWidth > 0) { + ctx.stroke(); + } +} +function _isPointInArea(point, area, margin) { + margin = margin || 0.5; + return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin; +} +function clipArea(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); +} +function unclipArea(ctx) { + ctx.restore(); +} +function _steppedLineTo(ctx, previous, target, flip, mode) { + if (!previous) { + return ctx.lineTo(target.x, target.y); + } + if (mode === "middle") { + const midpoint = (previous.x + target.x) / 2; + ctx.lineTo(midpoint, previous.y); + ctx.lineTo(midpoint, target.y); + } else if (mode === "after" !== !!flip) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); +} +function _bezierCurveTo(ctx, previous, target, flip) { + if (!previous) { + return ctx.lineTo(target.x, target.y); + } + ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y); +} +function setRenderOpts(ctx, opts) { + if (opts.translation) { + ctx.translate(opts.translation[0], opts.translation[1]); + } + if (!isNullOrUndef(opts.rotation)) { + ctx.rotate(opts.rotation); + } + if (opts.color) { + ctx.fillStyle = opts.color; + } + if (opts.textAlign) { + ctx.textAlign = opts.textAlign; + } + if (opts.textBaseline) { + ctx.textBaseline = opts.textBaseline; + } +} +function decorateText(ctx, x, y, line, opts) { + if (opts.strikethrough || opts.underline) { + const metrics = ctx.measureText(line); + const left = x - metrics.actualBoundingBoxLeft; + const right = x + metrics.actualBoundingBoxRight; + const top = y - metrics.actualBoundingBoxAscent; + const bottom = y + metrics.actualBoundingBoxDescent; + const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom; + ctx.strokeStyle = ctx.fillStyle; + ctx.beginPath(); + ctx.lineWidth = opts.decorationWidth || 2; + ctx.moveTo(left, yDecoration); + ctx.lineTo(right, yDecoration); + ctx.stroke(); + } +} +function drawBackdrop(ctx, opts) { + const oldColor = ctx.fillStyle; + ctx.fillStyle = opts.color; + ctx.fillRect(opts.left, opts.top, opts.width, opts.height); + ctx.fillStyle = oldColor; +} +function renderText(ctx, text, x, y, font, opts = {}) { + const lines = isArray(text) ? text : [ + text + ]; + const stroke = opts.strokeWidth > 0 && opts.strokeColor !== ""; + let i, line; + ctx.save(); + ctx.font = font.string; + setRenderOpts(ctx, opts); + for (i = 0; i < lines.length; ++i) { + line = lines[i]; + if (opts.backdrop) { + drawBackdrop(ctx, opts.backdrop); + } + if (stroke) { + if (opts.strokeColor) { + ctx.strokeStyle = opts.strokeColor; + } + if (!isNullOrUndef(opts.strokeWidth)) { + ctx.lineWidth = opts.strokeWidth; + } + ctx.strokeText(line, x, y, opts.maxWidth); + } + ctx.fillText(line, x, y, opts.maxWidth); + decorateText(ctx, x, y, line, opts); + y += Number(font.lineHeight); + } + ctx.restore(); +} +function addRoundedRectPath(ctx, rect) { + const { x, y, w, h, radius } = rect; + ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true); + ctx.lineTo(x, y + h - radius.bottomLeft); + ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); + ctx.lineTo(x + w - radius.bottomRight, y + h); + ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); + ctx.lineTo(x + w, y + radius.topRight); + ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); + ctx.lineTo(x + radius.topLeft, y); +} +var LINE_HEIGHT = /^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/; +var FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/; +function toLineHeight(value, size) { + const matches = ("" + value).match(LINE_HEIGHT); + if (!matches || matches[1] === "normal") { + return size * 1.2; + } + value = +matches[2]; + switch (matches[3]) { + case "px": + return value; + case "%": + value /= 100; + break; + } + return size * value; +} +var numberOrZero = (v) => +v || 0; +function _readValueToProps(value, props) { + const ret = {}; + const objProps = isObject(props); + const keys = objProps ? Object.keys(props) : props; + const read = isObject(value) ? objProps ? (prop) => valueOrDefault(value[prop], value[props[prop]]) : (prop) => value[prop] : () => value; + for (const prop of keys) { + ret[prop] = numberOrZero(read(prop)); + } + return ret; +} +function toTRBL(value) { + return _readValueToProps(value, { + top: "y", + right: "x", + bottom: "y", + left: "x" + }); +} +function toTRBLCorners(value) { + return _readValueToProps(value, [ + "topLeft", + "topRight", + "bottomLeft", + "bottomRight" + ]); +} +function toPadding(value) { + const obj = toTRBL(value); + obj.width = obj.left + obj.right; + obj.height = obj.top + obj.bottom; + return obj; +} +function toFont(options, fallback) { + options = options || {}; + fallback = fallback || defaults.font; + let size = valueOrDefault(options.size, fallback.size); + if (typeof size === "string") { + size = parseInt(size, 10); + } + let style = valueOrDefault(options.style, fallback.style); + if (style && !("" + style).match(FONT_STYLE)) { + console.warn('Invalid font style specified: "' + style + '"'); + style = void 0; + } + const font = { + family: valueOrDefault(options.family, fallback.family), + lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size), + size, + style, + weight: valueOrDefault(options.weight, fallback.weight), + string: "" + }; + font.string = toFontString(font); + return font; +} +function resolve(inputs, context, index2, info) { + let cacheable = true; + let i, ilen, value; + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === void 0) { + continue; + } + if (context !== void 0 && typeof value === "function") { + value = value(context); + cacheable = false; + } + if (index2 !== void 0 && isArray(value)) { + value = value[index2 % value.length]; + cacheable = false; + } + if (value !== void 0) { + if (info && !cacheable) { + info.cacheable = false; + } + return value; + } + } +} +function _addGrace(minmax, grace, beginAtZero) { + const { min, max } = minmax; + const change = toDimension(grace, (max - min) / 2); + const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add; + return { + min: keepZero(min, -Math.abs(change)), + max: keepZero(max, change) + }; +} +function createContext(parentContext, context) { + return Object.assign(Object.create(parentContext), context); +} +function _createResolver(scopes, prefixes = [ + "" +], rootScopes, fallback, getTarget = () => scopes[0]) { + const finalRootScopes = rootScopes || scopes; + if (typeof fallback === "undefined") { + fallback = _resolve("_fallback", scopes); + } + const cache = { + [Symbol.toStringTag]: "Object", + _cacheable: true, + _scopes: scopes, + _rootScopes: finalRootScopes, + _fallback: fallback, + _getTarget: getTarget, + override: (scope) => _createResolver([ + scope, + ...scopes + ], prefixes, finalRootScopes, fallback) + }; + return new Proxy(cache, { + /** + * A trap for the delete operator. + */ + deleteProperty(target, prop) { + delete target[prop]; + delete target._keys; + delete scopes[0][prop]; + return true; + }, + /** + * A trap for getting property values. + */ + get(target, prop) { + return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target)); + }, + /** + * A trap for Object.getOwnPropertyDescriptor. + * Also used by Object.hasOwnProperty. + */ + getOwnPropertyDescriptor(target, prop) { + return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop); + }, + /** + * A trap for Object.getPrototypeOf. + */ + getPrototypeOf() { + return Reflect.getPrototypeOf(scopes[0]); + }, + /** + * A trap for the in operator. + */ + has(target, prop) { + return getKeysFromAllScopes(target).includes(prop); + }, + /** + * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. + */ + ownKeys(target) { + return getKeysFromAllScopes(target); + }, + /** + * A trap for setting property values. + */ + set(target, prop, value) { + const storage = target._storage || (target._storage = getTarget()); + target[prop] = storage[prop] = value; + delete target._keys; + return true; + } + }); +} +function _attachContext(proxy, context, subProxy, descriptorDefaults) { + const cache = { + _cacheable: false, + _proxy: proxy, + _context: context, + _subProxy: subProxy, + _stack: /* @__PURE__ */ new Set(), + _descriptors: _descriptors(proxy, descriptorDefaults), + setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults), + override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults) + }; + return new Proxy(cache, { + /** + * A trap for the delete operator. + */ + deleteProperty(target, prop) { + delete target[prop]; + delete proxy[prop]; + return true; + }, + /** + * A trap for getting property values. + */ + get(target, prop, receiver) { + return _cached(target, prop, () => _resolveWithContext(target, prop, receiver)); + }, + /** + * A trap for Object.getOwnPropertyDescriptor. + * Also used by Object.hasOwnProperty. + */ + getOwnPropertyDescriptor(target, prop) { + return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? { + enumerable: true, + configurable: true + } : void 0 : Reflect.getOwnPropertyDescriptor(proxy, prop); + }, + /** + * A trap for Object.getPrototypeOf. + */ + getPrototypeOf() { + return Reflect.getPrototypeOf(proxy); + }, + /** + * A trap for the in operator. + */ + has(target, prop) { + return Reflect.has(proxy, prop); + }, + /** + * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. + */ + ownKeys() { + return Reflect.ownKeys(proxy); + }, + /** + * A trap for setting property values. + */ + set(target, prop, value) { + proxy[prop] = value; + delete target[prop]; + return true; + } + }); +} +function _descriptors(proxy, defaults2 = { + scriptable: true, + indexable: true +}) { + const { _scriptable = defaults2.scriptable, _indexable = defaults2.indexable, _allKeys = defaults2.allKeys } = proxy; + return { + allKeys: _allKeys, + scriptable: _scriptable, + indexable: _indexable, + isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable, + isIndexable: isFunction(_indexable) ? _indexable : () => _indexable + }; +} +var readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name; +var needsSubResolver = (prop, value) => isObject(value) && prop !== "adapters" && (Object.getPrototypeOf(value) === null || value.constructor === Object); +function _cached(target, prop, resolve2) { + if (Object.prototype.hasOwnProperty.call(target, prop) || prop === "constructor") { + return target[prop]; + } + const value = resolve2(); + target[prop] = value; + return value; +} +function _resolveWithContext(target, prop, receiver) { + const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; + let value = _proxy[prop]; + if (isFunction(value) && descriptors2.isScriptable(prop)) { + value = _resolveScriptable(prop, value, target, receiver); + } + if (isArray(value) && value.length) { + value = _resolveArray(prop, value, target, descriptors2.isIndexable); + } + if (needsSubResolver(prop, value)) { + value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors2); + } + return value; +} +function _resolveScriptable(prop, getValue, target, receiver) { + const { _proxy, _context, _subProxy, _stack } = target; + if (_stack.has(prop)) { + throw new Error("Recursion detected: " + Array.from(_stack).join("->") + "->" + prop); + } + _stack.add(prop); + let value = getValue(_context, _subProxy || receiver); + _stack.delete(prop); + if (needsSubResolver(prop, value)) { + value = createSubResolver(_proxy._scopes, _proxy, prop, value); + } + return value; +} +function _resolveArray(prop, value, target, isIndexable) { + const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; + if (typeof _context.index !== "undefined" && isIndexable(prop)) { + return value[_context.index % value.length]; + } else if (isObject(value[0])) { + const arr = value; + const scopes = _proxy._scopes.filter((s) => s !== arr); + value = []; + for (const item of arr) { + const resolver = createSubResolver(scopes, _proxy, prop, item); + value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors2)); + } + } + return value; +} +function resolveFallback(fallback, prop, value) { + return isFunction(fallback) ? fallback(prop, value) : fallback; +} +var getScope = (key, parent) => key === true ? parent : typeof key === "string" ? resolveObjectKey(parent, key) : void 0; +function addScopes(set2, parentScopes, key, parentFallback, value) { + for (const parent of parentScopes) { + const scope = getScope(key, parent); + if (scope) { + set2.add(scope); + const fallback = resolveFallback(scope._fallback, key, value); + if (typeof fallback !== "undefined" && fallback !== key && fallback !== parentFallback) { + return fallback; + } + } else if (scope === false && typeof parentFallback !== "undefined" && key !== parentFallback) { + return null; + } + } + return false; +} +function createSubResolver(parentScopes, resolver, prop, value) { + const rootScopes = resolver._rootScopes; + const fallback = resolveFallback(resolver._fallback, prop, value); + const allScopes = [ + ...parentScopes, + ...rootScopes + ]; + const set2 = /* @__PURE__ */ new Set(); + set2.add(value); + let key = addScopesFromKey(set2, allScopes, prop, fallback || prop, value); + if (key === null) { + return false; + } + if (typeof fallback !== "undefined" && fallback !== prop) { + key = addScopesFromKey(set2, allScopes, fallback, key, value); + if (key === null) { + return false; + } + } + return _createResolver(Array.from(set2), [ + "" + ], rootScopes, fallback, () => subGetTarget(resolver, prop, value)); +} +function addScopesFromKey(set2, allScopes, key, fallback, item) { + while (key) { + key = addScopes(set2, allScopes, key, fallback, item); + } + return key; +} +function subGetTarget(resolver, prop, value) { + const parent = resolver._getTarget(); + if (!(prop in parent)) { + parent[prop] = {}; + } + const target = parent[prop]; + if (isArray(target) && isObject(value)) { + return value; + } + return target || {}; +} +function _resolveWithPrefixes(prop, prefixes, scopes, proxy) { + let value; + for (const prefix of prefixes) { + value = _resolve(readKey(prefix, prop), scopes); + if (typeof value !== "undefined") { + return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value; + } + } +} +function _resolve(key, scopes) { + for (const scope of scopes) { + if (!scope) { + continue; + } + const value = scope[key]; + if (typeof value !== "undefined") { + return value; + } + } +} +function getKeysFromAllScopes(target) { + let keys = target._keys; + if (!keys) { + keys = target._keys = resolveKeysFromAllScopes(target._scopes); + } + return keys; +} +function resolveKeysFromAllScopes(scopes) { + const set2 = /* @__PURE__ */ new Set(); + for (const scope of scopes) { + for (const key of Object.keys(scope).filter((k) => !k.startsWith("_"))) { + set2.add(key); + } + } + return Array.from(set2); +} +function _parseObjectDataRadialScale(meta, data, start, count) { + const { iScale } = meta; + const { key = "r" } = this._parsing; + const parsed = new Array(count); + let i, ilen, index2, item; + for (i = 0, ilen = count; i < ilen; ++i) { + index2 = i + start; + item = data[index2]; + parsed[i] = { + r: iScale.parse(resolveObjectKey(item, key), index2) + }; + } + return parsed; +} +var EPSILON = Number.EPSILON || 1e-14; +var getPoint = (points, i) => i < points.length && !points[i].skip && points[i]; +var getValueAxis = (indexAxis) => indexAxis === "x" ? "y" : "x"; +function splineCurve(firstPoint, middlePoint, afterPoint, t) { + const previous = firstPoint.skip ? middlePoint : firstPoint; + const current = middlePoint; + const next = afterPoint.skip ? middlePoint : afterPoint; + const d01 = distanceBetweenPoints(current, previous); + const d12 = distanceBetweenPoints(next, current); + let s01 = d01 / (d01 + d12); + let s12 = d12 / (d01 + d12); + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; + const fa = t * s01; + const fb = t * s12; + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; +} +function monotoneAdjust(points, deltaK, mK) { + const pointsLen = points.length; + let alphaK, betaK, tauK, squaredMagnitude, pointCurrent; + let pointAfter = getPoint(points, 0); + for (let i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent || !pointAfter) { + continue; + } + if (almostEquals(deltaK[i], 0, EPSILON)) { + mK[i] = mK[i + 1] = 0; + continue; + } + alphaK = mK[i] / deltaK[i]; + betaK = mK[i + 1] / deltaK[i]; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } + tauK = 3 / Math.sqrt(squaredMagnitude); + mK[i] = alphaK * tauK * deltaK[i]; + mK[i + 1] = betaK * tauK * deltaK[i]; + } +} +function monotoneCompute(points, mK, indexAxis = "x") { + const valueAxis = getValueAxis(indexAxis); + const pointsLen = points.length; + let delta, pointBefore, pointCurrent; + let pointAfter = getPoint(points, 0); + for (let i = 0; i < pointsLen; ++i) { + pointBefore = pointCurrent; + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent) { + continue; + } + const iPixel = pointCurrent[indexAxis]; + const vPixel = pointCurrent[valueAxis]; + if (pointBefore) { + delta = (iPixel - pointBefore[indexAxis]) / 3; + pointCurrent[`cp1${indexAxis}`] = iPixel - delta; + pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i]; + } + if (pointAfter) { + delta = (pointAfter[indexAxis] - iPixel) / 3; + pointCurrent[`cp2${indexAxis}`] = iPixel + delta; + pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i]; + } + } +} +function splineCurveMonotone(points, indexAxis = "x") { + const valueAxis = getValueAxis(indexAxis); + const pointsLen = points.length; + const deltaK = Array(pointsLen).fill(0); + const mK = Array(pointsLen); + let i, pointBefore, pointCurrent; + let pointAfter = getPoint(points, 0); + for (i = 0; i < pointsLen; ++i) { + pointBefore = pointCurrent; + pointCurrent = pointAfter; + pointAfter = getPoint(points, i + 1); + if (!pointCurrent) { + continue; + } + if (pointAfter) { + const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis]; + deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0; + } + mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2; + } + monotoneAdjust(points, deltaK, mK); + monotoneCompute(points, mK, indexAxis); +} +function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); +} +function capBezierPoints(points, area) { + let i, ilen, point, inArea, inAreaPrev; + let inAreaNext = _isPointInArea(points[0], area); + for (i = 0, ilen = points.length; i < ilen; ++i) { + inAreaPrev = inArea; + inArea = inAreaNext; + inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area); + if (!inArea) { + continue; + } + point = points[i]; + if (inAreaPrev) { + point.cp1x = capControlPoint(point.cp1x, area.left, area.right); + point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom); + } + if (inAreaNext) { + point.cp2x = capControlPoint(point.cp2x, area.left, area.right); + point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom); + } + } +} +function _updateBezierControlPoints(points, options, area, loop, indexAxis) { + let i, ilen, point, controlPoints; + if (options.spanGaps) { + points = points.filter((pt) => !pt.skip); + } + if (options.cubicInterpolationMode === "monotone") { + splineCurveMonotone(points, indexAxis); + } else { + let prev = loop ? points[points.length - 1] : points[0]; + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension); + point.cp1x = controlPoints.previous.x; + point.cp1y = controlPoints.previous.y; + point.cp2x = controlPoints.next.x; + point.cp2y = controlPoints.next.y; + prev = point; + } + } + if (options.capBezierPoints) { + capBezierPoints(points, area); + } +} +function _isDomSupported() { + return typeof window !== "undefined" && typeof document !== "undefined"; +} +function _getParentNode(domNode) { + let parent = domNode.parentNode; + if (parent && parent.toString() === "[object ShadowRoot]") { + parent = parent.host; + } + return parent; +} +function parseMaxStyle(styleValue, node, parentProperty) { + let valueInPixels; + if (typeof styleValue === "string") { + valueInPixels = parseInt(styleValue, 10); + if (styleValue.indexOf("%") !== -1) { + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + } + } else { + valueInPixels = styleValue; + } + return valueInPixels; +} +var getComputedStyle = (element) => element.ownerDocument.defaultView.getComputedStyle(element, null); +function getStyle(el, property) { + return getComputedStyle(el).getPropertyValue(property); +} +var positions = [ + "top", + "right", + "bottom", + "left" +]; +function getPositionedStyle(styles, style, suffix) { + const result = {}; + suffix = suffix ? "-" + suffix : ""; + for (let i = 0; i < 4; i++) { + const pos = positions[i]; + result[pos] = parseFloat(styles[style + "-" + pos + suffix]) || 0; + } + result.width = result.left + result.right; + result.height = result.top + result.bottom; + return result; +} +var useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot); +function getCanvasPosition(e, canvas) { + const touches = e.touches; + const source = touches && touches.length ? touches[0] : e; + const { offsetX, offsetY } = source; + let box = false; + let x, y; + if (useOffsetPos(offsetX, offsetY, e.target)) { + x = offsetX; + y = offsetY; + } else { + const rect = canvas.getBoundingClientRect(); + x = source.clientX - rect.left; + y = source.clientY - rect.top; + box = true; + } + return { + x, + y, + box + }; +} +function getRelativePosition(event, chart) { + if ("native" in event) { + return event; + } + const { canvas, currentDevicePixelRatio } = chart; + const style = getComputedStyle(canvas); + const borderBox = style.boxSizing === "border-box"; + const paddings = getPositionedStyle(style, "padding"); + const borders = getPositionedStyle(style, "border", "width"); + const { x, y, box } = getCanvasPosition(event, canvas); + const xOffset = paddings.left + (box && borders.left); + const yOffset = paddings.top + (box && borders.top); + let { width, height } = chart; + if (borderBox) { + width -= paddings.width + borders.width; + height -= paddings.height + borders.height; + } + return { + x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio), + y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio) + }; +} +function getContainerSize(canvas, width, height) { + let maxWidth, maxHeight; + if (width === void 0 || height === void 0) { + const container = canvas && _getParentNode(canvas); + if (!container) { + width = canvas.clientWidth; + height = canvas.clientHeight; + } else { + const rect = container.getBoundingClientRect(); + const containerStyle = getComputedStyle(container); + const containerBorder = getPositionedStyle(containerStyle, "border", "width"); + const containerPadding = getPositionedStyle(containerStyle, "padding"); + width = rect.width - containerPadding.width - containerBorder.width; + height = rect.height - containerPadding.height - containerBorder.height; + maxWidth = parseMaxStyle(containerStyle.maxWidth, container, "clientWidth"); + maxHeight = parseMaxStyle(containerStyle.maxHeight, container, "clientHeight"); + } + } + return { + width, + height, + maxWidth: maxWidth || INFINITY, + maxHeight: maxHeight || INFINITY + }; +} +var round1 = (v) => Math.round(v * 10) / 10; +function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) { + const style = getComputedStyle(canvas); + const margins = getPositionedStyle(style, "margin"); + const maxWidth = parseMaxStyle(style.maxWidth, canvas, "clientWidth") || INFINITY; + const maxHeight = parseMaxStyle(style.maxHeight, canvas, "clientHeight") || INFINITY; + const containerSize = getContainerSize(canvas, bbWidth, bbHeight); + let { width, height } = containerSize; + if (style.boxSizing === "content-box") { + const borders = getPositionedStyle(style, "border", "width"); + const paddings = getPositionedStyle(style, "padding"); + width -= paddings.width + borders.width; + height -= paddings.height + borders.height; + } + width = Math.max(0, width - margins.width); + height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height); + width = round1(Math.min(width, maxWidth, containerSize.maxWidth)); + height = round1(Math.min(height, maxHeight, containerSize.maxHeight)); + if (width && !height) { + height = round1(width / 2); + } + const maintainHeight = bbWidth !== void 0 || bbHeight !== void 0; + if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) { + height = containerSize.height; + width = round1(Math.floor(height * aspectRatio)); + } + return { + width, + height + }; +} +function retinaScale(chart, forceRatio, forceStyle) { + const pixelRatio = forceRatio || 1; + const deviceHeight = Math.floor(chart.height * pixelRatio); + const deviceWidth = Math.floor(chart.width * pixelRatio); + chart.height = Math.floor(chart.height); + chart.width = Math.floor(chart.width); + const canvas = chart.canvas; + if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) { + canvas.style.height = `${chart.height}px`; + canvas.style.width = `${chart.width}px`; + } + if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) { + chart.currentDevicePixelRatio = pixelRatio; + canvas.height = deviceHeight; + canvas.width = deviceWidth; + chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); + return true; + } + return false; +} +var supportsEventListenerOptions = function() { + let passiveSupported = false; + try { + const options = { + get passive() { + passiveSupported = true; + return false; + } + }; + if (_isDomSupported()) { + window.addEventListener("test", null, options); + window.removeEventListener("test", null, options); + } + } catch (e) { + } + return passiveSupported; +}(); +function readUsedSize(element, property) { + const value = getStyle(element, property); + const matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? +matches[1] : void 0; +} +function _pointInLine(p1, p2, t, mode) { + return { + x: p1.x + t * (p2.x - p1.x), + y: p1.y + t * (p2.y - p1.y) + }; +} +function _steppedInterpolation(p1, p2, t, mode) { + return { + x: p1.x + t * (p2.x - p1.x), + y: mode === "middle" ? t < 0.5 ? p1.y : p2.y : mode === "after" ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y + }; +} +function _bezierInterpolation(p1, p2, t, mode) { + const cp1 = { + x: p1.cp2x, + y: p1.cp2y + }; + const cp2 = { + x: p2.cp1x, + y: p2.cp1y + }; + const a = _pointInLine(p1, cp1, t); + const b = _pointInLine(cp1, cp2, t); + const c = _pointInLine(cp2, p2, t); + const d = _pointInLine(a, b, t); + const e = _pointInLine(b, c, t); + return _pointInLine(d, e, t); +} +var getRightToLeftAdapter = function(rectX, width) { + return { + x(x) { + return rectX + rectX + width - x; + }, + setWidth(w) { + width = w; + }, + textAlign(align) { + if (align === "center") { + return align; + } + return align === "right" ? "left" : "right"; + }, + xPlus(x, value) { + return x - value; + }, + leftForLtr(x, itemWidth) { + return x - itemWidth; + } + }; +}; +var getLeftToRightAdapter = function() { + return { + x(x) { + return x; + }, + setWidth(w) { + }, + textAlign(align) { + return align; + }, + xPlus(x, value) { + return x + value; + }, + leftForLtr(x, _itemWidth) { + return x; + } + }; +}; +function getRtlAdapter(rtl, rectX, width) { + return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter(); +} +function overrideTextDirection(ctx, direction) { + let style, original; + if (direction === "ltr" || direction === "rtl") { + style = ctx.canvas.style; + original = [ + style.getPropertyValue("direction"), + style.getPropertyPriority("direction") + ]; + style.setProperty("direction", direction, "important"); + ctx.prevTextDirection = original; + } +} +function restoreTextDirection(ctx, original) { + if (original !== void 0) { + delete ctx.prevTextDirection; + ctx.canvas.style.setProperty("direction", original[0], original[1]); + } +} +function propertyFn(property) { + if (property === "angle") { + return { + between: _angleBetween, + compare: _angleDiff, + normalize: _normalizeAngle + }; + } + return { + between: _isBetween, + compare: (a, b) => a - b, + normalize: (x) => x + }; +} +function normalizeSegment({ start, end, count, loop, style }) { + return { + start: start % count, + end: end % count, + loop: loop && (end - start + 1) % count === 0, + style + }; +} +function getSegment(segment, points, bounds) { + const { property, start: startBound, end: endBound } = bounds; + const { between, normalize } = propertyFn(property); + const count = points.length; + let { start, end, loop } = segment; + let i, ilen; + if (loop) { + start += count; + end += count; + for (i = 0, ilen = count; i < ilen; ++i) { + if (!between(normalize(points[start % count][property]), startBound, endBound)) { + break; + } + start--; + end--; + } + start %= count; + end %= count; + } + if (end < start) { + end += count; + } + return { + start, + end, + loop, + style: segment.style + }; +} +function _boundSegment(segment, points, bounds) { + if (!bounds) { + return [ + segment + ]; + } + const { property, start: startBound, end: endBound } = bounds; + const count = points.length; + const { compare, between, normalize } = propertyFn(property); + const { start, end, loop, style } = getSegment(segment, points, bounds); + const result = []; + let inside = false; + let subStart = null; + let value, point, prevValue; + const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0; + const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value); + const shouldStart = () => inside || startIsBefore(); + const shouldStop = () => !inside || endIsBefore(); + for (let i = start, prev = start; i <= end; ++i) { + point = points[i % count]; + if (point.skip) { + continue; + } + value = normalize(point[property]); + if (value === prevValue) { + continue; + } + inside = between(value, startBound, endBound); + if (subStart === null && shouldStart()) { + subStart = compare(value, startBound) === 0 ? i : prev; + } + if (subStart !== null && shouldStop()) { + result.push(normalizeSegment({ + start: subStart, + end: i, + loop, + count, + style + })); + subStart = null; + } + prev = i; + prevValue = value; + } + if (subStart !== null) { + result.push(normalizeSegment({ + start: subStart, + end, + loop, + count, + style + })); + } + return result; +} +function _boundSegments(line, bounds) { + const result = []; + const segments = line.segments; + for (let i = 0; i < segments.length; i++) { + const sub = _boundSegment(segments[i], line.points, bounds); + if (sub.length) { + result.push(...sub); + } + } + return result; +} +function findStartAndEnd(points, count, loop, spanGaps) { + let start = 0; + let end = count - 1; + if (loop && !spanGaps) { + while (start < count && !points[start].skip) { + start++; + } + } + while (start < count && points[start].skip) { + start++; + } + start %= count; + if (loop) { + end += start; + } + while (end > start && points[end % count].skip) { + end--; + } + end %= count; + return { + start, + end + }; +} +function solidSegments(points, start, max, loop) { + const count = points.length; + const result = []; + let last = start; + let prev = points[start]; + let end; + for (end = start + 1; end <= max; ++end) { + const cur = points[end % count]; + if (cur.skip || cur.stop) { + if (!prev.skip) { + loop = false; + result.push({ + start: start % count, + end: (end - 1) % count, + loop + }); + start = last = cur.stop ? end : null; + } + } else { + last = end; + if (prev.skip) { + start = end; + } + } + prev = cur; + } + if (last !== null) { + result.push({ + start: start % count, + end: last % count, + loop + }); + } + return result; +} +function _computeSegments(line, segmentOptions) { + const points = line.points; + const spanGaps = line.options.spanGaps; + const count = points.length; + if (!count) { + return []; + } + const loop = !!line._loop; + const { start, end } = findStartAndEnd(points, count, loop, spanGaps); + if (spanGaps === true) { + return splitByStyles(line, [ + { + start, + end, + loop + } + ], points, segmentOptions); + } + const max = end < start ? end + count : end; + const completeLoop = !!line._fullLoop && start === 0 && end === count - 1; + return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions); +} +function splitByStyles(line, segments, points, segmentOptions) { + if (!segmentOptions || !segmentOptions.setContext || !points) { + return segments; + } + return doSplitByStyles(line, segments, points, segmentOptions); +} +function doSplitByStyles(line, segments, points, segmentOptions) { + const chartContext = line._chart.getContext(); + const baseStyle = readStyle(line.options); + const { _datasetIndex: datasetIndex, options: { spanGaps } } = line; + const count = points.length; + const result = []; + let prevStyle = baseStyle; + let start = segments[0].start; + let i = start; + function addStyle(s, e, l, st) { + const dir = spanGaps ? -1 : 1; + if (s === e) { + return; + } + s += count; + while (points[s % count].skip) { + s -= dir; + } + while (points[e % count].skip) { + e += dir; + } + if (s % count !== e % count) { + result.push({ + start: s % count, + end: e % count, + loop: l, + style: st + }); + prevStyle = st; + start = e % count; + } + } + for (const segment of segments) { + start = spanGaps ? start : segment.start; + let prev = points[start % count]; + let style; + for (i = start + 1; i <= segment.end; i++) { + const pt = points[i % count]; + style = readStyle(segmentOptions.setContext(createContext(chartContext, { + type: "segment", + p0: prev, + p1: pt, + p0DataIndex: (i - 1) % count, + p1DataIndex: i % count, + datasetIndex + }))); + if (styleChanged(style, prevStyle)) { + addStyle(start, i - 1, segment.loop, prevStyle); + } + prev = pt; + prevStyle = style; + } + if (start < i - 1) { + addStyle(start, i - 1, segment.loop, prevStyle); + } + } + return result; +} +function readStyle(options) { + return { + backgroundColor: options.backgroundColor, + borderCapStyle: options.borderCapStyle, + borderDash: options.borderDash, + borderDashOffset: options.borderDashOffset, + borderJoinStyle: options.borderJoinStyle, + borderWidth: options.borderWidth, + borderColor: options.borderColor + }; +} +function styleChanged(style, prevStyle) { + if (!prevStyle) { + return false; + } + const cache = []; + const replacer = function(key, value) { + if (!isPatternOrGradient(value)) { + return value; + } + if (!cache.includes(value)) { + cache.push(value); + } + return cache.indexOf(value); + }; + return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer); +} +function getSizeForArea(scale, chartArea, field) { + return scale.options.clip ? scale[field] : chartArea[field]; +} +function getDatasetArea(meta, chartArea) { + const { xScale, yScale } = meta; + if (xScale && yScale) { + return { + left: getSizeForArea(xScale, chartArea, "left"), + right: getSizeForArea(xScale, chartArea, "right"), + top: getSizeForArea(yScale, chartArea, "top"), + bottom: getSizeForArea(yScale, chartArea, "bottom") + }; + } + return chartArea; +} +function getDatasetClipArea(chart, meta) { + const clip = meta._clip; + if (clip.disabled) { + return false; + } + const area = getDatasetArea(meta, chart.chartArea); + return { + left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left), + right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right), + top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top), + bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom) + }; +} + +// node_modules/chart.js/dist/chart.js +var Animator = class { + constructor() { + this._request = null; + this._charts = /* @__PURE__ */ new Map(); + this._running = false; + this._lastDate = void 0; + } + _notify(chart, anims, date, type) { + const callbacks = anims.listeners[type]; + const numSteps = anims.duration; + callbacks.forEach((fn) => fn({ + chart, + initial: anims.initial, + numSteps, + currentStep: Math.min(date - anims.start, numSteps) + })); + } + _refresh() { + if (this._request) { + return; + } + this._running = true; + this._request = requestAnimFrame.call(window, () => { + this._update(); + this._request = null; + if (this._running) { + this._refresh(); + } + }); + } + _update(date = Date.now()) { + let remaining = 0; + this._charts.forEach((anims, chart) => { + if (!anims.running || !anims.items.length) { + return; + } + const items = anims.items; + let i = items.length - 1; + let draw2 = false; + let item; + for (; i >= 0; --i) { + item = items[i]; + if (item._active) { + if (item._total > anims.duration) { + anims.duration = item._total; + } + item.tick(date); + draw2 = true; + } else { + items[i] = items[items.length - 1]; + items.pop(); + } + } + if (draw2) { + chart.draw(); + this._notify(chart, anims, date, "progress"); + } + if (!items.length) { + anims.running = false; + this._notify(chart, anims, date, "complete"); + anims.initial = false; + } + remaining += items.length; + }); + this._lastDate = date; + if (remaining === 0) { + this._running = false; + } + } + _getAnims(chart) { + const charts = this._charts; + let anims = charts.get(chart); + if (!anims) { + anims = { + running: false, + initial: true, + items: [], + listeners: { + complete: [], + progress: [] + } + }; + charts.set(chart, anims); + } + return anims; + } + listen(chart, event, cb) { + this._getAnims(chart).listeners[event].push(cb); + } + add(chart, items) { + if (!items || !items.length) { + return; + } + this._getAnims(chart).items.push(...items); + } + has(chart) { + return this._getAnims(chart).items.length > 0; + } + start(chart) { + const anims = this._charts.get(chart); + if (!anims) { + return; + } + anims.running = true; + anims.start = Date.now(); + anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0); + this._refresh(); + } + running(chart) { + if (!this._running) { + return false; + } + const anims = this._charts.get(chart); + if (!anims || !anims.running || !anims.items.length) { + return false; + } + return true; + } + stop(chart) { + const anims = this._charts.get(chart); + if (!anims || !anims.items.length) { + return; + } + const items = anims.items; + let i = items.length - 1; + for (; i >= 0; --i) { + items[i].cancel(); + } + anims.items = []; + this._notify(chart, anims, Date.now(), "complete"); + } + remove(chart) { + return this._charts.delete(chart); + } +}; +var animator = new Animator(); +var transparent = "transparent"; +var interpolators = { + boolean(from2, to2, factor) { + return factor > 0.5 ? to2 : from2; + }, + color(from2, to2, factor) { + const c0 = color(from2 || transparent); + const c1 = c0.valid && color(to2 || transparent); + return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to2; + }, + number(from2, to2, factor) { + return from2 + (to2 - from2) * factor; + } +}; +var Animation = class { + constructor(cfg, target, prop, to2) { + const currentValue = target[prop]; + to2 = resolve([ + cfg.to, + to2, + currentValue, + cfg.from + ]); + const from2 = resolve([ + cfg.from, + currentValue, + to2 + ]); + this._active = true; + this._fn = cfg.fn || interpolators[cfg.type || typeof from2]; + this._easing = effects[cfg.easing] || effects.linear; + this._start = Math.floor(Date.now() + (cfg.delay || 0)); + this._duration = this._total = Math.floor(cfg.duration); + this._loop = !!cfg.loop; + this._target = target; + this._prop = prop; + this._from = from2; + this._to = to2; + this._promises = void 0; + } + active() { + return this._active; + } + update(cfg, to2, date) { + if (this._active) { + this._notify(false); + const currentValue = this._target[this._prop]; + const elapsed = date - this._start; + const remain = this._duration - elapsed; + this._start = date; + this._duration = Math.floor(Math.max(remain, cfg.duration)); + this._total += elapsed; + this._loop = !!cfg.loop; + this._to = resolve([ + cfg.to, + to2, + currentValue, + cfg.from + ]); + this._from = resolve([ + cfg.from, + currentValue, + to2 + ]); + } + } + cancel() { + if (this._active) { + this.tick(Date.now()); + this._active = false; + this._notify(false); + } + } + tick(date) { + const elapsed = date - this._start; + const duration = this._duration; + const prop = this._prop; + const from2 = this._from; + const loop = this._loop; + const to2 = this._to; + let factor; + this._active = from2 !== to2 && (loop || elapsed < duration); + if (!this._active) { + this._target[prop] = to2; + this._notify(true); + return; + } + if (elapsed < 0) { + this._target[prop] = from2; + return; + } + factor = elapsed / duration % 2; + factor = loop && factor > 1 ? 2 - factor : factor; + factor = this._easing(Math.min(1, Math.max(0, factor))); + this._target[prop] = this._fn(from2, to2, factor); + } + wait() { + const promises = this._promises || (this._promises = []); + return new Promise((res, rej) => { + promises.push({ + res, + rej + }); + }); + } + _notify(resolved) { + const method = resolved ? "res" : "rej"; + const promises = this._promises || []; + for (let i = 0; i < promises.length; i++) { + promises[i][method](); + } + } +}; +var Animations = class { + constructor(chart, config) { + this._chart = chart; + this._properties = /* @__PURE__ */ new Map(); + this.configure(config); + } + configure(config) { + if (!isObject(config)) { + return; + } + const animationOptions = Object.keys(defaults.animation); + const animatedProps = this._properties; + Object.getOwnPropertyNames(config).forEach((key) => { + const cfg = config[key]; + if (!isObject(cfg)) { + return; + } + const resolved = {}; + for (const option of animationOptions) { + resolved[option] = cfg[option]; + } + (isArray(cfg.properties) && cfg.properties || [ + key + ]).forEach((prop) => { + if (prop === key || !animatedProps.has(prop)) { + animatedProps.set(prop, resolved); + } + }); + }); + } + _animateOptions(target, values) { + const newOptions = values.options; + const options = resolveTargetOptions(target, newOptions); + if (!options) { + return []; + } + const animations = this._createAnimations(options, newOptions); + if (newOptions.$shared) { + awaitAll(target.options.$animations, newOptions).then(() => { + target.options = newOptions; + }, () => { + }); + } + return animations; + } + _createAnimations(target, values) { + const animatedProps = this._properties; + const animations = []; + const running = target.$animations || (target.$animations = {}); + const props = Object.keys(values); + const date = Date.now(); + let i; + for (i = props.length - 1; i >= 0; --i) { + const prop = props[i]; + if (prop.charAt(0) === "$") { + continue; + } + if (prop === "options") { + animations.push(...this._animateOptions(target, values)); + continue; + } + const value = values[prop]; + let animation = running[prop]; + const cfg = animatedProps.get(prop); + if (animation) { + if (cfg && animation.active()) { + animation.update(cfg, value, date); + continue; + } else { + animation.cancel(); + } + } + if (!cfg || !cfg.duration) { + target[prop] = value; + continue; + } + running[prop] = animation = new Animation(cfg, target, prop, value); + animations.push(animation); + } + return animations; + } + update(target, values) { + if (this._properties.size === 0) { + Object.assign(target, values); + return; + } + const animations = this._createAnimations(target, values); + if (animations.length) { + animator.add(this._chart, animations); + return true; + } + } +}; +function awaitAll(animations, properties) { + const running = []; + const keys = Object.keys(properties); + for (let i = 0; i < keys.length; i++) { + const anim = animations[keys[i]]; + if (anim && anim.active()) { + running.push(anim.wait()); + } + } + return Promise.all(running); +} +function resolveTargetOptions(target, newOptions) { + if (!newOptions) { + return; + } + let options = target.options; + if (!options) { + target.options = newOptions; + return; + } + if (options.$shared) { + target.options = options = Object.assign({}, options, { + $shared: false, + $animations: {} + }); + } + return options; +} +function scaleClip(scale, allowedOverflow) { + const opts = scale && scale.options || {}; + const reverse = opts.reverse; + const min = opts.min === void 0 ? allowedOverflow : 0; + const max = opts.max === void 0 ? allowedOverflow : 0; + return { + start: reverse ? max : min, + end: reverse ? min : max + }; +} +function defaultClip(xScale, yScale, allowedOverflow) { + if (allowedOverflow === false) { + return false; + } + const x = scaleClip(xScale, allowedOverflow); + const y = scaleClip(yScale, allowedOverflow); + return { + top: y.end, + right: x.end, + bottom: y.start, + left: x.start + }; +} +function toClip(value) { + let t, r, b, l; + if (isObject(value)) { + t = value.top; + r = value.right; + b = value.bottom; + l = value.left; + } else { + t = r = b = l = value; + } + return { + top: t, + right: r, + bottom: b, + left: l, + disabled: value === false + }; +} +function getSortedDatasetIndices(chart, filterVisible) { + const keys = []; + const metasets = chart._getSortedDatasetMetas(filterVisible); + let i, ilen; + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + keys.push(metasets[i].index); + } + return keys; +} +function applyStack(stack, value, dsIndex, options = {}) { + const keys = stack.keys; + const singleMode = options.mode === "single"; + let i, ilen, datasetIndex, otherValue; + if (value === null) { + return; + } + let found = false; + for (i = 0, ilen = keys.length; i < ilen; ++i) { + datasetIndex = +keys[i]; + if (datasetIndex === dsIndex) { + found = true; + if (options.all) { + continue; + } + break; + } + otherValue = stack.values[datasetIndex]; + if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) { + value += otherValue; + } + } + if (!found && !options.all) { + return 0; + } + return value; +} +function convertObjectDataToArray(data, meta) { + const { iScale, vScale } = meta; + const iAxisKey = iScale.axis === "x" ? "x" : "y"; + const vAxisKey = vScale.axis === "x" ? "x" : "y"; + const keys = Object.keys(data); + const adata = new Array(keys.length); + let i, ilen, key; + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + adata[i] = { + [iAxisKey]: key, + [vAxisKey]: data[key] + }; + } + return adata; +} +function isStacked(scale, meta) { + const stacked = scale && scale.options.stacked; + return stacked || stacked === void 0 && meta.stack !== void 0; +} +function getStackKey(indexScale, valueScale, meta) { + return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`; +} +function getUserBounds(scale) { + const { min, max, minDefined, maxDefined } = scale.getUserBounds(); + return { + min: minDefined ? min : Number.NEGATIVE_INFINITY, + max: maxDefined ? max : Number.POSITIVE_INFINITY + }; +} +function getOrCreateStack(stacks, stackKey, indexValue) { + const subStack = stacks[stackKey] || (stacks[stackKey] = {}); + return subStack[indexValue] || (subStack[indexValue] = {}); +} +function getLastIndexInStack(stack, vScale, positive, type) { + for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) { + const value = stack[meta.index]; + if (positive && value > 0 || !positive && value < 0) { + return meta.index; + } + } + return null; +} +function updateStacks(controller, parsed) { + const { chart, _cachedMeta: meta } = controller; + const stacks = chart._stacks || (chart._stacks = {}); + const { iScale, vScale, index: datasetIndex } = meta; + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const key = getStackKey(iScale, vScale, meta); + const ilen = parsed.length; + let stack; + for (let i = 0; i < ilen; ++i) { + const item = parsed[i]; + const { [iAxis]: index2, [vAxis]: value } = item; + const itemStacks = item._stacks || (item._stacks = {}); + stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index2); + stack[datasetIndex] = value; + stack._top = getLastIndexInStack(stack, vScale, true, meta.type); + stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type); + const visualValues = stack._visualValues || (stack._visualValues = {}); + visualValues[datasetIndex] = value; + } +} +function getFirstScaleId(chart, axis) { + const scales2 = chart.scales; + return Object.keys(scales2).filter((key) => scales2[key].axis === axis).shift(); +} +function createDatasetContext(parent, index2) { + return createContext(parent, { + active: false, + dataset: void 0, + datasetIndex: index2, + index: index2, + mode: "default", + type: "dataset" + }); +} +function createDataContext(parent, index2, element) { + return createContext(parent, { + active: false, + dataIndex: index2, + parsed: void 0, + raw: void 0, + element, + index: index2, + mode: "default", + type: "data" + }); +} +function clearStacks(meta, items) { + const datasetIndex = meta.controller.index; + const axis = meta.vScale && meta.vScale.axis; + if (!axis) { + return; + } + items = items || meta._parsed; + for (const parsed of items) { + const stacks = parsed._stacks; + if (!stacks || stacks[axis] === void 0 || stacks[axis][datasetIndex] === void 0) { + return; + } + delete stacks[axis][datasetIndex]; + if (stacks[axis]._visualValues !== void 0 && stacks[axis]._visualValues[datasetIndex] !== void 0) { + delete stacks[axis]._visualValues[datasetIndex]; + } + } +} +var isDirectUpdateMode = (mode) => mode === "reset" || mode === "none"; +var cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached); +var createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && { + keys: getSortedDatasetIndices(chart, true), + values: null +}; +var DatasetController = class { + constructor(chart, datasetIndex) { + this.chart = chart; + this._ctx = chart.ctx; + this.index = datasetIndex; + this._cachedDataOpts = {}; + this._cachedMeta = this.getMeta(); + this._type = this._cachedMeta.type; + this.options = void 0; + this._parsing = false; + this._data = void 0; + this._objectData = void 0; + this._sharedOptions = void 0; + this._drawStart = void 0; + this._drawCount = void 0; + this.enableOptionSharing = false; + this.supportsDecimation = false; + this.$context = void 0; + this._syncList = []; + this.datasetElementType = new.target.datasetElementType; + this.dataElementType = new.target.dataElementType; + this.initialize(); + } + initialize() { + const meta = this._cachedMeta; + this.configure(); + this.linkScales(); + meta._stacked = isStacked(meta.vScale, meta); + this.addElements(); + if (this.options.fill && !this.chart.isPluginEnabled("filler")) { + console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options"); + } + } + updateIndex(datasetIndex) { + if (this.index !== datasetIndex) { + clearStacks(this._cachedMeta); + } + this.index = datasetIndex; + } + linkScales() { + const chart = this.chart; + const meta = this._cachedMeta; + const dataset = this.getDataset(); + const chooseId = (axis, x, y, r) => axis === "x" ? x : axis === "r" ? r : y; + const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, "x")); + const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, "y")); + const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, "r")); + const indexAxis = meta.indexAxis; + const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid); + const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid); + meta.xScale = this.getScaleForId(xid); + meta.yScale = this.getScaleForId(yid); + meta.rScale = this.getScaleForId(rid); + meta.iScale = this.getScaleForId(iid); + meta.vScale = this.getScaleForId(vid); + } + getDataset() { + return this.chart.data.datasets[this.index]; + } + getMeta() { + return this.chart.getDatasetMeta(this.index); + } + getScaleForId(scaleID) { + return this.chart.scales[scaleID]; + } + _getOtherScale(scale) { + const meta = this._cachedMeta; + return scale === meta.iScale ? meta.vScale : meta.iScale; + } + reset() { + this._update("reset"); + } + _destroy() { + const meta = this._cachedMeta; + if (this._data) { + unlistenArrayEvents(this._data, this); + } + if (meta._stacked) { + clearStacks(meta); + } + } + _dataCheck() { + const dataset = this.getDataset(); + const data = dataset.data || (dataset.data = []); + const _data = this._data; + if (isObject(data)) { + const meta = this._cachedMeta; + this._data = convertObjectDataToArray(data, meta); + } else if (_data !== data) { + if (_data) { + unlistenArrayEvents(_data, this); + const meta = this._cachedMeta; + clearStacks(meta); + meta._parsed = []; + } + if (data && Object.isExtensible(data)) { + listenArrayEvents(data, this); + } + this._syncList = []; + this._data = data; + } + } + addElements() { + const meta = this._cachedMeta; + this._dataCheck(); + if (this.datasetElementType) { + meta.dataset = new this.datasetElementType(); + } + } + buildOrUpdateElements(resetNewElements) { + const meta = this._cachedMeta; + const dataset = this.getDataset(); + let stackChanged = false; + this._dataCheck(); + const oldStacked = meta._stacked; + meta._stacked = isStacked(meta.vScale, meta); + if (meta.stack !== dataset.stack) { + stackChanged = true; + clearStacks(meta); + meta.stack = dataset.stack; + } + this._resyncElements(resetNewElements); + if (stackChanged || oldStacked !== meta._stacked) { + updateStacks(this, meta._parsed); + meta._stacked = isStacked(meta.vScale, meta); + } + } + configure() { + const config = this.chart.config; + const scopeKeys = config.datasetScopeKeys(this._type); + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true); + this.options = config.createResolver(scopes, this.getContext()); + this._parsing = this.options.parsing; + this._cachedDataOpts = {}; + } + parse(start, count) { + const { _cachedMeta: meta, _data: data } = this; + const { iScale, _stacked } = meta; + const iAxis = iScale.axis; + let sorted = start === 0 && count === data.length ? true : meta._sorted; + let prev = start > 0 && meta._parsed[start - 1]; + let i, cur, parsed; + if (this._parsing === false) { + meta._parsed = data; + meta._sorted = true; + parsed = data; + } else { + if (isArray(data[start])) { + parsed = this.parseArrayData(meta, data, start, count); + } else if (isObject(data[start])) { + parsed = this.parseObjectData(meta, data, start, count); + } else { + parsed = this.parsePrimitiveData(meta, data, start, count); + } + const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis]; + for (i = 0; i < count; ++i) { + meta._parsed[i + start] = cur = parsed[i]; + if (sorted) { + if (isNotInOrderComparedToPrev()) { + sorted = false; + } + prev = cur; + } + } + meta._sorted = sorted; + } + if (_stacked) { + updateStacks(this, parsed); + } + } + parsePrimitiveData(meta, data, start, count) { + const { iScale, vScale } = meta; + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const labels = iScale.getLabels(); + const singleScale = iScale === vScale; + const parsed = new Array(count); + let i, ilen, index2; + for (i = 0, ilen = count; i < ilen; ++i) { + index2 = i + start; + parsed[i] = { + [iAxis]: singleScale || iScale.parse(labels[index2], index2), + [vAxis]: vScale.parse(data[index2], index2) + }; + } + return parsed; + } + parseArrayData(meta, data, start, count) { + const { xScale, yScale } = meta; + const parsed = new Array(count); + let i, ilen, index2, item; + for (i = 0, ilen = count; i < ilen; ++i) { + index2 = i + start; + item = data[index2]; + parsed[i] = { + x: xScale.parse(item[0], index2), + y: yScale.parse(item[1], index2) + }; + } + return parsed; + } + parseObjectData(meta, data, start, count) { + const { xScale, yScale } = meta; + const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; + const parsed = new Array(count); + let i, ilen, index2, item; + for (i = 0, ilen = count; i < ilen; ++i) { + index2 = i + start; + item = data[index2]; + parsed[i] = { + x: xScale.parse(resolveObjectKey(item, xAxisKey), index2), + y: yScale.parse(resolveObjectKey(item, yAxisKey), index2) + }; + } + return parsed; + } + getParsed(index2) { + return this._cachedMeta._parsed[index2]; + } + getDataElement(index2) { + return this._cachedMeta.data[index2]; + } + applyStack(scale, parsed, mode) { + const chart = this.chart; + const meta = this._cachedMeta; + const value = parsed[scale.axis]; + const stack = { + keys: getSortedDatasetIndices(chart, true), + values: parsed._stacks[scale.axis]._visualValues + }; + return applyStack(stack, value, meta.index, { + mode + }); + } + updateRangeFromParsed(range, scale, parsed, stack) { + const parsedValue = parsed[scale.axis]; + let value = parsedValue === null ? NaN : parsedValue; + const values = stack && parsed._stacks[scale.axis]; + if (stack && values) { + stack.values = values; + value = applyStack(stack, parsedValue, this._cachedMeta.index); + } + range.min = Math.min(range.min, value); + range.max = Math.max(range.max, value); + } + getMinMax(scale, canStack) { + const meta = this._cachedMeta; + const _parsed = meta._parsed; + const sorted = meta._sorted && scale === meta.iScale; + const ilen = _parsed.length; + const otherScale = this._getOtherScale(scale); + const stack = createStack(canStack, meta, this.chart); + const range = { + min: Number.POSITIVE_INFINITY, + max: Number.NEGATIVE_INFINITY + }; + const { min: otherMin, max: otherMax } = getUserBounds(otherScale); + let i, parsed; + function _skip() { + parsed = _parsed[i]; + const otherValue = parsed[otherScale.axis]; + return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue; + } + for (i = 0; i < ilen; ++i) { + if (_skip()) { + continue; + } + this.updateRangeFromParsed(range, scale, parsed, stack); + if (sorted) { + break; + } + } + if (sorted) { + for (i = ilen - 1; i >= 0; --i) { + if (_skip()) { + continue; + } + this.updateRangeFromParsed(range, scale, parsed, stack); + break; + } + } + return range; + } + getAllParsedValues(scale) { + const parsed = this._cachedMeta._parsed; + const values = []; + let i, ilen, value; + for (i = 0, ilen = parsed.length; i < ilen; ++i) { + value = parsed[i][scale.axis]; + if (isNumberFinite(value)) { + values.push(value); + } + } + return values; + } + getMaxOverflow() { + return false; + } + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const iScale = meta.iScale; + const vScale = meta.vScale; + const parsed = this.getParsed(index2); + return { + label: iScale ? "" + iScale.getLabelForValue(parsed[iScale.axis]) : "", + value: vScale ? "" + vScale.getLabelForValue(parsed[vScale.axis]) : "" + }; + } + _update(mode) { + const meta = this._cachedMeta; + this.update(mode || "default"); + meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow()))); + } + update(mode) { + } + draw() { + const ctx = this._ctx; + const chart = this.chart; + const meta = this._cachedMeta; + const elements2 = meta.data || []; + const area = chart.chartArea; + const active = []; + const start = this._drawStart || 0; + const count = this._drawCount || elements2.length - start; + const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop; + let i; + if (meta.dataset) { + meta.dataset.draw(ctx, area, start, count); + } + for (i = start; i < start + count; ++i) { + const element = elements2[i]; + if (element.hidden) { + continue; + } + if (element.active && drawActiveElementsOnTop) { + active.push(element); + } else { + element.draw(ctx, area); + } + } + for (i = 0; i < active.length; ++i) { + active[i].draw(ctx, area); + } + } + getStyle(index2, active) { + const mode = active ? "active" : "default"; + return index2 === void 0 && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index2 || 0, mode); + } + getContext(index2, active, mode) { + const dataset = this.getDataset(); + let context; + if (index2 >= 0 && index2 < this._cachedMeta.data.length) { + const element = this._cachedMeta.data[index2]; + context = element.$context || (element.$context = createDataContext(this.getContext(), index2, element)); + context.parsed = this.getParsed(index2); + context.raw = dataset.data[index2]; + context.index = context.dataIndex = index2; + } else { + context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index)); + context.dataset = dataset; + context.index = context.datasetIndex = this.index; + } + context.active = !!active; + context.mode = mode; + return context; + } + resolveDatasetElementOptions(mode) { + return this._resolveElementOptions(this.datasetElementType.id, mode); + } + resolveDataElementOptions(index2, mode) { + return this._resolveElementOptions(this.dataElementType.id, mode, index2); + } + _resolveElementOptions(elementType, mode = "default", index2) { + const active = mode === "active"; + const cache = this._cachedDataOpts; + const cacheKey = elementType + "-" + mode; + const cached = cache[cacheKey]; + const sharing = this.enableOptionSharing && defined(index2); + if (cached) { + return cloneIfNotShared(cached, sharing); + } + const config = this.chart.config; + const scopeKeys = config.datasetElementScopeKeys(this._type, elementType); + const prefixes = active ? [ + `${elementType}Hover`, + "hover", + elementType, + "" + ] : [ + elementType, + "" + ]; + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); + const names2 = Object.keys(defaults.elements[elementType]); + const context = () => this.getContext(index2, active, mode); + const values = config.resolveNamedOptions(scopes, names2, context, prefixes); + if (values.$shared) { + values.$shared = sharing; + cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing)); + } + return values; + } + _resolveAnimations(index2, transition, active) { + const chart = this.chart; + const cache = this._cachedDataOpts; + const cacheKey = `animation-${transition}`; + const cached = cache[cacheKey]; + if (cached) { + return cached; + } + let options; + if (chart.options.animation !== false) { + const config = this.chart.config; + const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition); + const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); + options = config.createResolver(scopes, this.getContext(index2, active, transition)); + } + const animations = new Animations(chart, options && options.animations); + if (options && options._cacheable) { + cache[cacheKey] = Object.freeze(animations); + } + return animations; + } + getSharedOptions(options) { + if (!options.$shared) { + return; + } + return this._sharedOptions || (this._sharedOptions = Object.assign({}, options)); + } + includeOptions(mode, sharedOptions) { + return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled; + } + _getSharedOptions(start, mode) { + const firstOpts = this.resolveDataElementOptions(start, mode); + const previouslySharedOptions = this._sharedOptions; + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions; + this.updateSharedOptions(sharedOptions, mode, firstOpts); + return { + sharedOptions, + includeOptions + }; + } + updateElement(element, index2, properties, mode) { + if (isDirectUpdateMode(mode)) { + Object.assign(element, properties); + } else { + this._resolveAnimations(index2, mode).update(element, properties); + } + } + updateSharedOptions(sharedOptions, mode, newOptions) { + if (sharedOptions && !isDirectUpdateMode(mode)) { + this._resolveAnimations(void 0, mode).update(sharedOptions, newOptions); + } + } + _setStyle(element, index2, mode, active) { + element.active = active; + const options = this.getStyle(index2, active); + this._resolveAnimations(index2, mode, active).update(element, { + options: !active && this.getSharedOptions(options) || options + }); + } + removeHoverStyle(element, datasetIndex, index2) { + this._setStyle(element, index2, "active", false); + } + setHoverStyle(element, datasetIndex, index2) { + this._setStyle(element, index2, "active", true); + } + _removeDatasetHoverStyle() { + const element = this._cachedMeta.dataset; + if (element) { + this._setStyle(element, void 0, "active", false); + } + } + _setDatasetHoverStyle() { + const element = this._cachedMeta.dataset; + if (element) { + this._setStyle(element, void 0, "active", true); + } + } + _resyncElements(resetNewElements) { + const data = this._data; + const elements2 = this._cachedMeta.data; + for (const [method, arg1, arg2] of this._syncList) { + this[method](arg1, arg2); + } + this._syncList = []; + const numMeta = elements2.length; + const numData = data.length; + const count = Math.min(numData, numMeta); + if (count) { + this.parse(0, count); + } + if (numData > numMeta) { + this._insertElements(numMeta, numData - numMeta, resetNewElements); + } else if (numData < numMeta) { + this._removeElements(numData, numMeta - numData); + } + } + _insertElements(start, count, resetNewElements = true) { + const meta = this._cachedMeta; + const data = meta.data; + const end = start + count; + let i; + const move = (arr) => { + arr.length += count; + for (i = arr.length - 1; i >= end; i--) { + arr[i] = arr[i - count]; + } + }; + move(data); + for (i = start; i < end; ++i) { + data[i] = new this.dataElementType(); + } + if (this._parsing) { + move(meta._parsed); + } + this.parse(start, count); + if (resetNewElements) { + this.updateElements(data, start, count, "reset"); + } + } + updateElements(element, start, count, mode) { + } + _removeElements(start, count) { + const meta = this._cachedMeta; + if (this._parsing) { + const removed = meta._parsed.splice(start, count); + if (meta._stacked) { + clearStacks(meta, removed); + } + } + meta.data.splice(start, count); + } + _sync(args) { + if (this._parsing) { + this._syncList.push(args); + } else { + const [method, arg1, arg2] = args; + this[method](arg1, arg2); + } + this.chart._dataChanges.push([ + this.index, + ...args + ]); + } + _onDataPush() { + const count = arguments.length; + this._sync([ + "_insertElements", + this.getDataset().data.length - count, + count + ]); + } + _onDataPop() { + this._sync([ + "_removeElements", + this._cachedMeta.data.length - 1, + 1 + ]); + } + _onDataShift() { + this._sync([ + "_removeElements", + 0, + 1 + ]); + } + _onDataSplice(start, count) { + if (count) { + this._sync([ + "_removeElements", + start, + count + ]); + } + const newCount = arguments.length - 2; + if (newCount) { + this._sync([ + "_insertElements", + start, + newCount + ]); + } + } + _onDataUnshift() { + this._sync([ + "_insertElements", + 0, + arguments.length + ]); + } +}; +__publicField(DatasetController, "defaults", {}); +__publicField(DatasetController, "datasetElementType", null); +__publicField(DatasetController, "dataElementType", null); +function getAllScaleValues(scale, type) { + if (!scale._cache.$bar) { + const visibleMetas = scale.getMatchingVisibleMetas(type); + let values = []; + for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) { + values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale)); + } + scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b)); + } + return scale._cache.$bar; +} +function computeMinSampleSize(meta) { + const scale = meta.iScale; + const values = getAllScaleValues(scale, meta.type); + let min = scale._length; + let i, ilen, curr, prev; + const updateMinAndPrev = () => { + if (curr === 32767 || curr === -32768) { + return; + } + if (defined(prev)) { + min = Math.min(min, Math.abs(curr - prev) || min); + } + prev = curr; + }; + for (i = 0, ilen = values.length; i < ilen; ++i) { + curr = scale.getPixelForValue(values[i]); + updateMinAndPrev(); + } + prev = void 0; + for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + updateMinAndPrev(); + } + return min; +} +function computeFitCategoryTraits(index2, ruler, options, stackCount) { + const thickness = options.barThickness; + let size, ratio; + if (isNullOrUndef(thickness)) { + size = ruler.min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + size = thickness * stackCount; + ratio = 1; + } + return { + chunk: size / stackCount, + ratio, + start: ruler.pixels[index2] - size / 2 + }; +} +function computeFlexCategoryTraits(index2, ruler, options, stackCount) { + const pixels = ruler.pixels; + const curr = pixels[index2]; + let prev = index2 > 0 ? pixels[index2 - 1] : null; + let next = index2 < pixels.length - 1 ? pixels[index2 + 1] : null; + const percent = options.categoryPercentage; + if (prev === null) { + prev = curr - (next === null ? ruler.end - ruler.start : next - curr); + } + if (next === null) { + next = curr + curr - prev; + } + const start = curr - (curr - Math.min(prev, next)) / 2 * percent; + const size = Math.abs(next - prev) / 2 * percent; + return { + chunk: size / stackCount, + ratio: options.barPercentage, + start + }; +} +function parseFloatBar(entry, item, vScale, i) { + const startValue = vScale.parse(entry[0], i); + const endValue = vScale.parse(entry[1], i); + const min = Math.min(startValue, endValue); + const max = Math.max(startValue, endValue); + let barStart = min; + let barEnd = max; + if (Math.abs(min) > Math.abs(max)) { + barStart = max; + barEnd = min; + } + item[vScale.axis] = barEnd; + item._custom = { + barStart, + barEnd, + start: startValue, + end: endValue, + min, + max + }; +} +function parseValue(entry, item, vScale, i) { + if (isArray(entry)) { + parseFloatBar(entry, item, vScale, i); + } else { + item[vScale.axis] = vScale.parse(entry, i); + } + return item; +} +function parseArrayOrPrimitive(meta, data, start, count) { + const iScale = meta.iScale; + const vScale = meta.vScale; + const labels = iScale.getLabels(); + const singleScale = iScale === vScale; + const parsed = []; + let i, ilen, item, entry; + for (i = start, ilen = start + count; i < ilen; ++i) { + entry = data[i]; + item = {}; + item[iScale.axis] = singleScale || iScale.parse(labels[i], i); + parsed.push(parseValue(entry, item, vScale, i)); + } + return parsed; +} +function isFloatBar(custom) { + return custom && custom.barStart !== void 0 && custom.barEnd !== void 0; +} +function barSign(size, vScale, actualBase) { + if (size !== 0) { + return sign(size); + } + return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1); +} +function borderProps(properties) { + let reverse, start, end, top, bottom; + if (properties.horizontal) { + reverse = properties.base > properties.x; + start = "left"; + end = "right"; + } else { + reverse = properties.base < properties.y; + start = "bottom"; + end = "top"; + } + if (reverse) { + top = "end"; + bottom = "start"; + } else { + top = "start"; + bottom = "end"; + } + return { + start, + end, + reverse, + top, + bottom + }; +} +function setBorderSkipped(properties, options, stack, index2) { + let edge = options.borderSkipped; + const res = {}; + if (!edge) { + properties.borderSkipped = res; + return; + } + if (edge === true) { + properties.borderSkipped = { + top: true, + right: true, + bottom: true, + left: true + }; + return; + } + const { start, end, reverse, top, bottom } = borderProps(properties); + if (edge === "middle" && stack) { + properties.enableBorderRadius = true; + if ((stack._top || 0) === index2) { + edge = top; + } else if ((stack._bottom || 0) === index2) { + edge = bottom; + } else { + res[parseEdge(bottom, start, end, reverse)] = true; + edge = top; + } + } + res[parseEdge(edge, start, end, reverse)] = true; + properties.borderSkipped = res; +} +function parseEdge(edge, a, b, reverse) { + if (reverse) { + edge = swap(edge, a, b); + edge = startEnd(edge, b, a); + } else { + edge = startEnd(edge, a, b); + } + return edge; +} +function swap(orig, v1, v2) { + return orig === v1 ? v2 : orig === v2 ? v1 : orig; +} +function startEnd(v, start, end) { + return v === "start" ? start : v === "end" ? end : v; +} +function setInflateAmount(properties, { inflateAmount }, ratio) { + properties.inflateAmount = inflateAmount === "auto" ? ratio === 1 ? 0.33 : 0 : inflateAmount; +} +var BarController = class extends DatasetController { + parsePrimitiveData(meta, data, start, count) { + return parseArrayOrPrimitive(meta, data, start, count); + } + parseArrayData(meta, data, start, count) { + return parseArrayOrPrimitive(meta, data, start, count); + } + parseObjectData(meta, data, start, count) { + const { iScale, vScale } = meta; + const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; + const iAxisKey = iScale.axis === "x" ? xAxisKey : yAxisKey; + const vAxisKey = vScale.axis === "x" ? xAxisKey : yAxisKey; + const parsed = []; + let i, ilen, item, obj; + for (i = start, ilen = start + count; i < ilen; ++i) { + obj = data[i]; + item = {}; + item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i); + parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i)); + } + return parsed; + } + updateRangeFromParsed(range, scale, parsed, stack) { + super.updateRangeFromParsed(range, scale, parsed, stack); + const custom = parsed._custom; + if (custom && scale === this._cachedMeta.vScale) { + range.min = Math.min(range.min, custom.min); + range.max = Math.max(range.max, custom.max); + } + } + getMaxOverflow() { + return 0; + } + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const { iScale, vScale } = meta; + const parsed = this.getParsed(index2); + const custom = parsed._custom; + const value = isFloatBar(custom) ? "[" + custom.start + ", " + custom.end + "]" : "" + vScale.getLabelForValue(parsed[vScale.axis]); + return { + label: "" + iScale.getLabelForValue(parsed[iScale.axis]), + value + }; + } + initialize() { + this.enableOptionSharing = true; + super.initialize(); + const meta = this._cachedMeta; + meta.stack = this.getDataset().stack; + } + update(mode) { + const meta = this._cachedMeta; + this.updateElements(meta.data, 0, meta.data.length, mode); + } + updateElements(bars, start, count, mode) { + const reset = mode === "reset"; + const { index: index2, _cachedMeta: { vScale } } = this; + const base = vScale.getBasePixel(); + const horizontal = vScale.isHorizontal(); + const ruler = this._getRuler(); + const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); + for (let i = start; i < start + count; i++) { + const parsed = this.getParsed(i); + const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? { + base, + head: base + } : this._calculateBarValuePixels(i); + const ipixels = this._calculateBarIndexPixels(i, ruler); + const stack = (parsed._stacks || {})[vScale.axis]; + const properties = { + horizontal, + base: vpixels.base, + enableBorderRadius: !stack || isFloatBar(parsed._custom) || index2 === stack._top || index2 === stack._bottom, + x: horizontal ? vpixels.head : ipixels.center, + y: horizontal ? ipixels.center : vpixels.head, + height: horizontal ? ipixels.size : Math.abs(vpixels.size), + width: horizontal ? Math.abs(vpixels.size) : ipixels.size + }; + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? "active" : mode); + } + const options = properties.options || bars[i].options; + setBorderSkipped(properties, options, stack, index2); + setInflateAmount(properties, options, ruler.ratio); + this.updateElement(bars[i], i, properties, mode); + } + } + _getStacks(last, dataIndex) { + const { iScale } = this._cachedMeta; + const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta) => meta.controller.options.grouped); + const stacked = iScale.options.stacked; + const stacks = []; + const currentParsed = this._cachedMeta.controller.getParsed(dataIndex); + const iScaleValue = currentParsed && currentParsed[iScale.axis]; + const skipNull = (meta) => { + const parsed = meta._parsed.find((item) => item[iScale.axis] === iScaleValue); + const val = parsed && parsed[meta.vScale.axis]; + if (isNullOrUndef(val) || isNaN(val)) { + return true; + } + }; + for (const meta of metasets) { + if (dataIndex !== void 0 && skipNull(meta)) { + continue; + } + if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === void 0 && meta.stack === void 0) { + stacks.push(meta.stack); + } + if (meta.index === last) { + break; + } + } + if (!stacks.length) { + stacks.push(void 0); + } + return stacks; + } + _getStackCount(index2) { + return this._getStacks(void 0, index2).length; + } + _getAxisCount() { + return this._getAxis().length; + } + getFirstScaleIdForIndexAxis() { + const scales2 = this.chart.scales; + const indexScaleId = this.chart.options.indexAxis; + return Object.keys(scales2).filter((key) => scales2[key].axis === indexScaleId).shift(); + } + _getAxis() { + const axis = {}; + const firstScaleAxisId = this.getFirstScaleIdForIndexAxis(); + for (const dataset of this.chart.data.datasets) { + axis[valueOrDefault(this.chart.options.indexAxis === "x" ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId)] = true; + } + return Object.keys(axis); + } + _getStackIndex(datasetIndex, name, dataIndex) { + const stacks = this._getStacks(datasetIndex, dataIndex); + const index2 = name !== void 0 ? stacks.indexOf(name) : -1; + return index2 === -1 ? stacks.length - 1 : index2; + } + _getRuler() { + const opts = this.options; + const meta = this._cachedMeta; + const iScale = meta.iScale; + const pixels = []; + let i, ilen; + for (i = 0, ilen = meta.data.length; i < ilen; ++i) { + pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i)); + } + const barThickness = opts.barThickness; + const min = barThickness || computeMinSampleSize(meta); + return { + min, + pixels, + start: iScale._startPixel, + end: iScale._endPixel, + stackCount: this._getStackCount(), + scale: iScale, + grouped: opts.grouped, + ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage + }; + } + _calculateBarValuePixels(index2) { + const { _cachedMeta: { vScale, _stacked, index: datasetIndex }, options: { base: baseValue, minBarLength } } = this; + const actualBase = baseValue || 0; + const parsed = this.getParsed(index2); + const custom = parsed._custom; + const floating = isFloatBar(custom); + let value = parsed[vScale.axis]; + let start = 0; + let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value; + let head, size; + if (length !== value) { + start = length - value; + length = value; + } + if (floating) { + value = custom.barStart; + length = custom.barEnd - custom.barStart; + if (value !== 0 && sign(value) !== sign(custom.barEnd)) { + start = 0; + } + start += value; + } + const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start; + let base = vScale.getPixelForValue(startValue); + if (this.chart.getDataVisibility(index2)) { + head = vScale.getPixelForValue(start + length); + } else { + head = base; + } + size = head - base; + if (Math.abs(size) < minBarLength) { + size = barSign(size, vScale, actualBase) * minBarLength; + if (value === actualBase) { + base -= size / 2; + } + const startPixel = vScale.getPixelForDecimal(0); + const endPixel = vScale.getPixelForDecimal(1); + const min = Math.min(startPixel, endPixel); + const max = Math.max(startPixel, endPixel); + base = Math.max(Math.min(base, max), min); + head = base + size; + if (_stacked && !floating) { + parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base); + } + } + if (base === vScale.getPixelForValue(actualBase)) { + const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2; + base += halfGrid; + size -= halfGrid; + } + return { + size, + base, + head, + center: head + size / 2 + }; + } + _calculateBarIndexPixels(index2, ruler) { + const scale = ruler.scale; + const options = this.options; + const skipNull = options.skipNull; + const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity); + let center, size; + const axisCount = this._getAxisCount(); + if (ruler.grouped) { + const stackCount = skipNull ? this._getStackCount(index2) : ruler.stackCount; + const range = options.barThickness === "flex" ? computeFlexCategoryTraits(index2, ruler, options, stackCount * axisCount) : computeFitCategoryTraits(index2, ruler, options, stackCount * axisCount); + const axisID = this.chart.options.indexAxis === "x" ? this.getDataset().xAxisID : this.getDataset().yAxisID; + const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis())); + const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index2 : void 0) + axisNumber; + center = range.start + range.chunk * stackIndex + range.chunk / 2; + size = Math.min(maxBarThickness, range.chunk * range.ratio); + } else { + center = scale.getPixelForValue(this.getParsed(index2)[scale.axis], index2); + size = Math.min(maxBarThickness, ruler.min * ruler.ratio); + } + return { + base: center - size / 2, + head: center + size / 2, + center, + size + }; + } + draw() { + const meta = this._cachedMeta; + const vScale = meta.vScale; + const rects = meta.data; + const ilen = rects.length; + let i = 0; + for (; i < ilen; ++i) { + if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) { + rects[i].draw(this._ctx); + } + } + } +}; +__publicField(BarController, "id", "bar"); +__publicField(BarController, "defaults", { + datasetElementType: false, + dataElementType: "bar", + categoryPercentage: 0.8, + barPercentage: 0.9, + grouped: true, + animations: { + numbers: { + type: "number", + properties: [ + "x", + "y", + "base", + "width", + "height" + ] + } + } +}); +__publicField(BarController, "overrides", { + scales: { + _index_: { + type: "category", + offset: true, + grid: { + offset: true + } + }, + _value_: { + type: "linear", + beginAtZero: true + } + } +}); +var BubbleController = class extends DatasetController { + initialize() { + this.enableOptionSharing = true; + super.initialize(); + } + parsePrimitiveData(meta, data, start, count) { + const parsed = super.parsePrimitiveData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + parsed[i]._custom = this.resolveDataElementOptions(i + start).radius; + } + return parsed; + } + parseArrayData(meta, data, start, count) { + const parsed = super.parseArrayData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + const item = data[start + i]; + parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius); + } + return parsed; + } + parseObjectData(meta, data, start, count) { + const parsed = super.parseObjectData(meta, data, start, count); + for (let i = 0; i < parsed.length; i++) { + const item = data[start + i]; + parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius); + } + return parsed; + } + getMaxOverflow() { + const data = this._cachedMeta.data; + let max = 0; + for (let i = data.length - 1; i >= 0; --i) { + max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); + } + return max > 0 && max; + } + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const labels = this.chart.data.labels || []; + const { xScale, yScale } = meta; + const parsed = this.getParsed(index2); + const x = xScale.getLabelForValue(parsed.x); + const y = yScale.getLabelForValue(parsed.y); + const r = parsed._custom; + return { + label: labels[index2] || "", + value: "(" + x + ", " + y + (r ? ", " + r : "") + ")" + }; + } + update(mode) { + const points = this._cachedMeta.data; + this.updateElements(points, 0, points.length, mode); + } + updateElements(points, start, count, mode) { + const reset = mode === "reset"; + const { iScale, vScale } = this._cachedMeta; + const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); + const iAxis = iScale.axis; + const vAxis = vScale.axis; + for (let i = start; i < start + count; i++) { + const point = points[i]; + const parsed = !reset && this.getParsed(i); + const properties = {}; + const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]); + const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]); + properties.skip = isNaN(iPixel) || isNaN(vPixel); + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); + if (reset) { + properties.options.radius = 0; + } + } + this.updateElement(point, i, properties, mode); + } + } + resolveDataElementOptions(index2, mode) { + const parsed = this.getParsed(index2); + let values = super.resolveDataElementOptions(index2, mode); + if (values.$shared) { + values = Object.assign({}, values, { + $shared: false + }); + } + const radius = values.radius; + if (mode !== "active") { + values.radius = 0; + } + values.radius += valueOrDefault(parsed && parsed._custom, radius); + return values; + } +}; +__publicField(BubbleController, "id", "bubble"); +__publicField(BubbleController, "defaults", { + datasetElementType: false, + dataElementType: "point", + animations: { + numbers: { + type: "number", + properties: [ + "x", + "y", + "borderWidth", + "radius" + ] + } + } +}); +__publicField(BubbleController, "overrides", { + scales: { + x: { + type: "linear" + }, + y: { + type: "linear" + } + } +}); +function getRatioAndOffset(rotation, circumference, cutout) { + let ratioX = 1; + let ratioY = 1; + let offsetX = 0; + let offsetY = 0; + if (circumference < TAU) { + const startAngle = rotation; + const endAngle = startAngle + circumference; + const startX = Math.cos(startAngle); + const startY = Math.sin(startAngle); + const endX = Math.cos(endAngle); + const endY = Math.sin(endAngle); + const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout); + const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout); + const maxX = calcMax(0, startX, endX); + const maxY = calcMax(HALF_PI, startY, endY); + const minX = calcMin(PI, startX, endX); + const minY = calcMin(PI + HALF_PI, startY, endY); + ratioX = (maxX - minX) / 2; + ratioY = (maxY - minY) / 2; + offsetX = -(maxX + minX) / 2; + offsetY = -(maxY + minY) / 2; + } + return { + ratioX, + ratioY, + offsetX, + offsetY + }; +} +var DoughnutController = class extends DatasetController { + constructor(chart, datasetIndex) { + super(chart, datasetIndex); + this.enableOptionSharing = true; + this.innerRadius = void 0; + this.outerRadius = void 0; + this.offsetX = void 0; + this.offsetY = void 0; + } + linkScales() { + } + parse(start, count) { + const data = this.getDataset().data; + const meta = this._cachedMeta; + if (this._parsing === false) { + meta._parsed = data; + } else { + let getter = (i2) => +data[i2]; + if (isObject(data[start])) { + const { key = "value" } = this._parsing; + getter = (i2) => +resolveObjectKey(data[i2], key); + } + let i, ilen; + for (i = start, ilen = start + count; i < ilen; ++i) { + meta._parsed[i] = getter(i); + } + } + } + _getRotation() { + return toRadians(this.options.rotation - 90); + } + _getCircumference() { + return toRadians(this.options.circumference); + } + _getRotationExtents() { + let min = TAU; + let max = -TAU; + for (let i = 0; i < this.chart.data.datasets.length; ++i) { + if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) { + const controller = this.chart.getDatasetMeta(i).controller; + const rotation = controller._getRotation(); + const circumference = controller._getCircumference(); + min = Math.min(min, rotation); + max = Math.max(max, rotation + circumference); + } + } + return { + rotation: min, + circumference: max - min + }; + } + update(mode) { + const chart = this.chart; + const { chartArea } = chart; + const meta = this._cachedMeta; + const arcs = meta.data; + const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing; + const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0); + const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1); + const chartWeight = this._getRingWeight(this.index); + const { circumference, rotation } = this._getRotationExtents(); + const { ratioX, ratioY, offsetX, offsetY } = getRatioAndOffset(rotation, circumference, cutout); + const maxWidth = (chartArea.width - spacing) / ratioX; + const maxHeight = (chartArea.height - spacing) / ratioY; + const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); + const outerRadius = toDimension(this.options.radius, maxRadius); + const innerRadius = Math.max(outerRadius * cutout, 0); + const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal(); + this.offsetX = offsetX * outerRadius; + this.offsetY = offsetY * outerRadius; + meta.total = this.calculateTotal(); + this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index); + this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0); + this.updateElements(arcs, 0, arcs.length, mode); + } + _circumference(i, reset) { + const opts = this.options; + const meta = this._cachedMeta; + const circumference = this._getCircumference(); + if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) { + return 0; + } + return this.calculateCircumference(meta._parsed[i] * circumference / TAU); + } + updateElements(arcs, start, count, mode) { + const reset = mode === "reset"; + const chart = this.chart; + const chartArea = chart.chartArea; + const opts = chart.options; + const animationOpts = opts.animation; + const centerX = (chartArea.left + chartArea.right) / 2; + const centerY = (chartArea.top + chartArea.bottom) / 2; + const animateScale = reset && animationOpts.animateScale; + const innerRadius = animateScale ? 0 : this.innerRadius; + const outerRadius = animateScale ? 0 : this.outerRadius; + const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); + let startAngle = this._getRotation(); + let i; + for (i = 0; i < start; ++i) { + startAngle += this._circumference(i, reset); + } + for (i = start; i < start + count; ++i) { + const circumference = this._circumference(i, reset); + const arc = arcs[i]; + const properties = { + x: centerX + this.offsetX, + y: centerY + this.offsetY, + startAngle, + endAngle: startAngle + circumference, + circumference, + outerRadius, + innerRadius + }; + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? "active" : mode); + } + startAngle += circumference; + this.updateElement(arc, i, properties, mode); + } + } + calculateTotal() { + const meta = this._cachedMeta; + const metaData = meta.data; + let total = 0; + let i; + for (i = 0; i < metaData.length; i++) { + const value = meta._parsed[i]; + if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) { + total += Math.abs(value); + } + } + return total; + } + calculateCircumference(value) { + const total = this._cachedMeta.total; + if (total > 0 && !isNaN(value)) { + return TAU * (Math.abs(value) / total); + } + return 0; + } + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const chart = this.chart; + const labels = chart.data.labels || []; + const value = formatNumber(meta._parsed[index2], chart.options.locale); + return { + label: labels[index2] || "", + value + }; + } + getMaxBorderWidth(arcs) { + let max = 0; + const chart = this.chart; + let i, ilen, meta, controller, options; + if (!arcs) { + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + controller = meta.controller; + break; + } + } + } + if (!arcs) { + return 0; + } + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + options = controller.resolveDataElementOptions(i); + if (options.borderAlign !== "inner") { + max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0); + } + } + return max; + } + getMaxOffset(arcs) { + let max = 0; + for (let i = 0, ilen = arcs.length; i < ilen; ++i) { + const options = this.resolveDataElementOptions(i); + max = Math.max(max, options.offset || 0, options.hoverOffset || 0); + } + return max; + } + _getRingWeightOffset(datasetIndex) { + let ringWeightOffset = 0; + for (let i = 0; i < datasetIndex; ++i) { + if (this.chart.isDatasetVisible(i)) { + ringWeightOffset += this._getRingWeight(i); + } + } + return ringWeightOffset; + } + _getRingWeight(datasetIndex) { + return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0); + } + _getVisibleDatasetWeightTotal() { + return this._getRingWeightOffset(this.chart.data.datasets.length) || 1; + } +}; +__publicField(DoughnutController, "id", "doughnut"); +__publicField(DoughnutController, "defaults", { + datasetElementType: false, + dataElementType: "arc", + animation: { + animateRotate: true, + animateScale: false + }, + animations: { + numbers: { + type: "number", + properties: [ + "circumference", + "endAngle", + "innerRadius", + "outerRadius", + "startAngle", + "x", + "y", + "offset", + "borderWidth", + "spacing" + ] + } + }, + cutout: "50%", + rotation: 0, + circumference: 360, + radius: "100%", + spacing: 0, + indexAxis: "r" +}); +__publicField(DoughnutController, "descriptors", { + _scriptable: (name) => name !== "spacing", + _indexable: (name) => name !== "spacing" && !name.startsWith("borderDash") && !name.startsWith("hoverBorderDash") +}); +__publicField(DoughnutController, "overrides", { + aspectRatio: 1, + plugins: { + legend: { + labels: { + generateLabels(chart) { + const data = chart.data; + if (data.labels.length && data.datasets.length) { + const { labels: { pointStyle, color: color2 } } = chart.legend.options; + return data.labels.map((label, i) => { + const meta = chart.getDatasetMeta(0); + const style = meta.controller.getStyle(i); + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + fontColor: color2, + lineWidth: style.borderWidth, + pointStyle, + hidden: !chart.getDataVisibility(i), + index: i + }; + }); + } + return []; + } + }, + onClick(e, legendItem, legend) { + legend.chart.toggleDataVisibility(legendItem.index); + legend.chart.update(); + } + } + } +}); +var LineController = class extends DatasetController { + initialize() { + this.enableOptionSharing = true; + this.supportsDecimation = true; + super.initialize(); + } + update(mode) { + const meta = this._cachedMeta; + const { dataset: line, data: points = [], _dataset } = meta; + const animationsDisabled = this.chart._animationsDisabled; + let { start, count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled); + this._drawStart = start; + this._drawCount = count; + if (_scaleRangesChanged(meta)) { + start = 0; + count = points.length; + } + line._chart = this.chart; + line._datasetIndex = this.index; + line._decimated = !!_dataset._decimated; + line.points = points; + const options = this.resolveDatasetElementOptions(mode); + if (!this.options.showLine) { + options.borderWidth = 0; + } + options.segment = this.options.segment; + this.updateElement(line, void 0, { + animated: !animationsDisabled, + options + }, mode); + this.updateElements(points, start, count, mode); + } + updateElements(points, start, count, mode) { + const reset = mode === "reset"; + const { iScale, vScale, _stacked, _dataset } = this._cachedMeta; + const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const { spanGaps, segment } = this.options; + const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; + const directUpdate = this.chart._animationsDisabled || reset || mode === "none"; + const end = start + count; + const pointsCount = points.length; + let prevParsed = start > 0 && this.getParsed(start - 1); + for (let i = 0; i < pointsCount; ++i) { + const point = points[i]; + const properties = directUpdate ? point : {}; + if (i < start || i >= end) { + properties.skip = true; + continue; + } + const parsed = this.getParsed(i); + const nullData = isNullOrUndef(parsed[vAxis]); + const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); + const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); + properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; + properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength; + if (segment) { + properties.parsed = parsed; + properties.raw = _dataset.data[i]; + } + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); + } + if (!directUpdate) { + this.updateElement(point, i, properties, mode); + } + prevParsed = parsed; + } + } + getMaxOverflow() { + const meta = this._cachedMeta; + const dataset = meta.dataset; + const border = dataset.options && dataset.options.borderWidth || 0; + const data = meta.data || []; + if (!data.length) { + return border; + } + const firstPoint = data[0].size(this.resolveDataElementOptions(0)); + const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); + return Math.max(border, firstPoint, lastPoint) / 2; + } + draw() { + const meta = this._cachedMeta; + meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis); + super.draw(); + } +}; +__publicField(LineController, "id", "line"); +__publicField(LineController, "defaults", { + datasetElementType: "line", + dataElementType: "point", + showLine: true, + spanGaps: false +}); +__publicField(LineController, "overrides", { + scales: { + _index_: { + type: "category" + }, + _value_: { + type: "linear" + } + } +}); +var PolarAreaController = class extends DatasetController { + constructor(chart, datasetIndex) { + super(chart, datasetIndex); + this.innerRadius = void 0; + this.outerRadius = void 0; + } + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const chart = this.chart; + const labels = chart.data.labels || []; + const value = formatNumber(meta._parsed[index2].r, chart.options.locale); + return { + label: labels[index2] || "", + value + }; + } + parseObjectData(meta, data, start, count) { + return _parseObjectDataRadialScale.bind(this)(meta, data, start, count); + } + update(mode) { + const arcs = this._cachedMeta.data; + this._updateRadius(); + this.updateElements(arcs, 0, arcs.length, mode); + } + getMinMax() { + const meta = this._cachedMeta; + const range = { + min: Number.POSITIVE_INFINITY, + max: Number.NEGATIVE_INFINITY + }; + meta.data.forEach((element, index2) => { + const parsed = this.getParsed(index2).r; + if (!isNaN(parsed) && this.chart.getDataVisibility(index2)) { + if (parsed < range.min) { + range.min = parsed; + } + if (parsed > range.max) { + range.max = parsed; + } + } + }); + return range; + } + _updateRadius() { + const chart = this.chart; + const chartArea = chart.chartArea; + const opts = chart.options; + const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + const outerRadius = Math.max(minSize / 2, 0); + const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0); + const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount(); + this.outerRadius = outerRadius - radiusLength * this.index; + this.innerRadius = this.outerRadius - radiusLength; + } + updateElements(arcs, start, count, mode) { + const reset = mode === "reset"; + const chart = this.chart; + const opts = chart.options; + const animationOpts = opts.animation; + const scale = this._cachedMeta.rScale; + const centerX = scale.xCenter; + const centerY = scale.yCenter; + const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI; + let angle = datasetStartAngle; + let i; + const defaultAngle = 360 / this.countVisibleElements(); + for (i = 0; i < start; ++i) { + angle += this._computeAngle(i, mode, defaultAngle); + } + for (i = start; i < start + count; i++) { + const arc = arcs[i]; + let startAngle = angle; + let endAngle = angle + this._computeAngle(i, mode, defaultAngle); + let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0; + angle = endAngle; + if (reset) { + if (animationOpts.animateScale) { + outerRadius = 0; + } + if (animationOpts.animateRotate) { + startAngle = endAngle = datasetStartAngle; + } + } + const properties = { + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius, + startAngle, + endAngle, + options: this.resolveDataElementOptions(i, arc.active ? "active" : mode) + }; + this.updateElement(arc, i, properties, mode); + } + } + countVisibleElements() { + const meta = this._cachedMeta; + let count = 0; + meta.data.forEach((element, index2) => { + if (!isNaN(this.getParsed(index2).r) && this.chart.getDataVisibility(index2)) { + count++; + } + }); + return count; + } + _computeAngle(index2, mode, defaultAngle) { + return this.chart.getDataVisibility(index2) ? toRadians(this.resolveDataElementOptions(index2, mode).angle || defaultAngle) : 0; + } +}; +__publicField(PolarAreaController, "id", "polarArea"); +__publicField(PolarAreaController, "defaults", { + dataElementType: "arc", + animation: { + animateRotate: true, + animateScale: true + }, + animations: { + numbers: { + type: "number", + properties: [ + "x", + "y", + "startAngle", + "endAngle", + "innerRadius", + "outerRadius" + ] + } + }, + indexAxis: "r", + startAngle: 0 +}); +__publicField(PolarAreaController, "overrides", { + aspectRatio: 1, + plugins: { + legend: { + labels: { + generateLabels(chart) { + const data = chart.data; + if (data.labels.length && data.datasets.length) { + const { labels: { pointStyle, color: color2 } } = chart.legend.options; + return data.labels.map((label, i) => { + const meta = chart.getDatasetMeta(0); + const style = meta.controller.getStyle(i); + return { + text: label, + fillStyle: style.backgroundColor, + strokeStyle: style.borderColor, + fontColor: color2, + lineWidth: style.borderWidth, + pointStyle, + hidden: !chart.getDataVisibility(i), + index: i + }; + }); + } + return []; + } + }, + onClick(e, legendItem, legend) { + legend.chart.toggleDataVisibility(legendItem.index); + legend.chart.update(); + } + } + }, + scales: { + r: { + type: "radialLinear", + angleLines: { + display: false + }, + beginAtZero: true, + grid: { + circular: true + }, + pointLabels: { + display: false + }, + startAngle: 0 + } + } +}); +var PieController = class extends DoughnutController { +}; +__publicField(PieController, "id", "pie"); +__publicField(PieController, "defaults", { + cutout: 0, + rotation: 0, + circumference: 360, + radius: "100%" +}); +var RadarController = class extends DatasetController { + getLabelAndValue(index2) { + const vScale = this._cachedMeta.vScale; + const parsed = this.getParsed(index2); + return { + label: vScale.getLabels()[index2], + value: "" + vScale.getLabelForValue(parsed[vScale.axis]) + }; + } + parseObjectData(meta, data, start, count) { + return _parseObjectDataRadialScale.bind(this)(meta, data, start, count); + } + update(mode) { + const meta = this._cachedMeta; + const line = meta.dataset; + const points = meta.data || []; + const labels = meta.iScale.getLabels(); + line.points = points; + if (mode !== "resize") { + const options = this.resolveDatasetElementOptions(mode); + if (!this.options.showLine) { + options.borderWidth = 0; + } + const properties = { + _loop: true, + _fullLoop: labels.length === points.length, + options + }; + this.updateElement(line, void 0, properties, mode); + } + this.updateElements(points, 0, points.length, mode); + } + updateElements(points, start, count, mode) { + const scale = this._cachedMeta.rScale; + const reset = mode === "reset"; + for (let i = start; i < start + count; i++) { + const point = points[i]; + const options = this.resolveDataElementOptions(i, point.active ? "active" : mode); + const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r); + const x = reset ? scale.xCenter : pointPosition.x; + const y = reset ? scale.yCenter : pointPosition.y; + const properties = { + x, + y, + angle: pointPosition.angle, + skip: isNaN(x) || isNaN(y), + options + }; + this.updateElement(point, i, properties, mode); + } + } +}; +__publicField(RadarController, "id", "radar"); +__publicField(RadarController, "defaults", { + datasetElementType: "line", + dataElementType: "point", + indexAxis: "r", + showLine: true, + elements: { + line: { + fill: "start" + } + } +}); +__publicField(RadarController, "overrides", { + aspectRatio: 1, + scales: { + r: { + type: "radialLinear" + } + } +}); +var ScatterController = class extends DatasetController { + getLabelAndValue(index2) { + const meta = this._cachedMeta; + const labels = this.chart.data.labels || []; + const { xScale, yScale } = meta; + const parsed = this.getParsed(index2); + const x = xScale.getLabelForValue(parsed.x); + const y = yScale.getLabelForValue(parsed.y); + return { + label: labels[index2] || "", + value: "(" + x + ", " + y + ")" + }; + } + update(mode) { + const meta = this._cachedMeta; + const { data: points = [] } = meta; + const animationsDisabled = this.chart._animationsDisabled; + let { start, count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled); + this._drawStart = start; + this._drawCount = count; + if (_scaleRangesChanged(meta)) { + start = 0; + count = points.length; + } + if (this.options.showLine) { + if (!this.datasetElementType) { + this.addElements(); + } + const { dataset: line, _dataset } = meta; + line._chart = this.chart; + line._datasetIndex = this.index; + line._decimated = !!_dataset._decimated; + line.points = points; + const options = this.resolveDatasetElementOptions(mode); + options.segment = this.options.segment; + this.updateElement(line, void 0, { + animated: !animationsDisabled, + options + }, mode); + } else if (this.datasetElementType) { + delete meta.dataset; + this.datasetElementType = false; + } + this.updateElements(points, start, count, mode); + } + addElements() { + const { showLine } = this.options; + if (!this.datasetElementType && showLine) { + this.datasetElementType = this.chart.registry.getElement("line"); + } + super.addElements(); + } + updateElements(points, start, count, mode) { + const reset = mode === "reset"; + const { iScale, vScale, _stacked, _dataset } = this._cachedMeta; + const firstOpts = this.resolveDataElementOptions(start, mode); + const sharedOptions = this.getSharedOptions(firstOpts); + const includeOptions = this.includeOptions(mode, sharedOptions); + const iAxis = iScale.axis; + const vAxis = vScale.axis; + const { spanGaps, segment } = this.options; + const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; + const directUpdate = this.chart._animationsDisabled || reset || mode === "none"; + let prevParsed = start > 0 && this.getParsed(start - 1); + for (let i = start; i < start + count; ++i) { + const point = points[i]; + const parsed = this.getParsed(i); + const properties = directUpdate ? point : {}; + const nullData = isNullOrUndef(parsed[vAxis]); + const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); + const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); + properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; + properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength; + if (segment) { + properties.parsed = parsed; + properties.raw = _dataset.data[i]; + } + if (includeOptions) { + properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); + } + if (!directUpdate) { + this.updateElement(point, i, properties, mode); + } + prevParsed = parsed; + } + this.updateSharedOptions(sharedOptions, mode, firstOpts); + } + getMaxOverflow() { + const meta = this._cachedMeta; + const data = meta.data || []; + if (!this.options.showLine) { + let max = 0; + for (let i = data.length - 1; i >= 0; --i) { + max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); + } + return max > 0 && max; + } + const dataset = meta.dataset; + const border = dataset.options && dataset.options.borderWidth || 0; + if (!data.length) { + return border; + } + const firstPoint = data[0].size(this.resolveDataElementOptions(0)); + const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); + return Math.max(border, firstPoint, lastPoint) / 2; + } +}; +__publicField(ScatterController, "id", "scatter"); +__publicField(ScatterController, "defaults", { + datasetElementType: false, + dataElementType: "point", + showLine: false, + fill: false +}); +__publicField(ScatterController, "overrides", { + interaction: { + mode: "point" + }, + scales: { + x: { + type: "linear" + }, + y: { + type: "linear" + } + } +}); +var controllers = Object.freeze({ + __proto__: null, BarController, - BarElement, - BasePlatform, - BasicPlatform, BubbleController, - CategoryScale, - Chart, - DatasetController, - DomPlatform, DoughnutController, - Element, - Interaction, LineController, - LineElement, - LinearScale, - LogarithmicScale, PieController, - PointElement, PolarAreaController, RadarController, + ScatterController +}); +function abstract() { + throw new Error("This method is not implemented: Check that a complete date adapter is provided."); +} +var DateAdapterBase = class _DateAdapterBase { + constructor(options) { + __publicField(this, "options"); + this.options = options || {}; + } + /** + * Override default date adapter methods. + * Accepts type parameter to define options type. + * @example + * Chart._adapters._date.override<{myAdapterOption: string}>({ + * init() { + * console.log(this.options.myAdapterOption); + * } + * }) + */ + static override(members) { + Object.assign(_DateAdapterBase.prototype, members); + } + // eslint-disable-next-line @typescript-eslint/no-empty-function + init() { + } + formats() { + return abstract(); + } + parse() { + return abstract(); + } + format() { + return abstract(); + } + add() { + return abstract(); + } + diff() { + return abstract(); + } + startOf() { + return abstract(); + } + endOf() { + return abstract(); + } +}; +var adapters = { + _date: DateAdapterBase +}; +function binarySearch(metaset, axis, value, intersect) { + const { controller, data, _sorted } = metaset; + const iScale = controller._cachedMeta.iScale; + const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null; + if (iScale && axis === iScale.axis && axis !== "r" && _sorted && data.length) { + const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey; + if (!intersect) { + const result = lookupMethod(data, axis, value); + if (spanGaps) { + const { vScale } = controller._cachedMeta; + const { _parsed } = metaset; + const distanceToDefinedLo = _parsed.slice(0, result.lo + 1).reverse().findIndex((point) => !isNullOrUndef(point[vScale.axis])); + result.lo -= Math.max(0, distanceToDefinedLo); + const distanceToDefinedHi = _parsed.slice(result.hi).findIndex((point) => !isNullOrUndef(point[vScale.axis])); + result.hi += Math.max(0, distanceToDefinedHi); + } + return result; + } else if (controller._sharedOptions) { + const el = data[0]; + const range = typeof el.getRange === "function" && el.getRange(axis); + if (range) { + const start = lookupMethod(data, axis, value - range); + const end = lookupMethod(data, axis, value + range); + return { + lo: start.lo, + hi: end.hi + }; + } + } + } + return { + lo: 0, + hi: data.length - 1 + }; +} +function evaluateInteractionItems(chart, axis, position, handler, intersect) { + const metasets = chart.getSortedVisibleDatasetMetas(); + const value = position[axis]; + for (let i = 0, ilen = metasets.length; i < ilen; ++i) { + const { index: index2, data } = metasets[i]; + const { lo, hi } = binarySearch(metasets[i], axis, value, intersect); + for (let j = lo; j <= hi; ++j) { + const element = data[j]; + if (!element.skip) { + handler(element, index2, j); + } + } + } +} +function getDistanceMetricForAxis(axis) { + const useX = axis.indexOf("x") !== -1; + const useY = axis.indexOf("y") !== -1; + return function(pt1, pt2) { + const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} +function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) { + const items = []; + if (!includeInvisible && !chart.isPointInArea(position)) { + return items; + } + const evaluationFunc = function(element, datasetIndex, index2) { + if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) { + return; + } + if (element.inRange(position.x, position.y, useFinalPosition)) { + items.push({ + element, + datasetIndex, + index: index2 + }); + } + }; + evaluateInteractionItems(chart, axis, position, evaluationFunc, true); + return items; +} +function getNearestRadialItems(chart, position, axis, useFinalPosition) { + let items = []; + function evaluationFunc(element, datasetIndex, index2) { + const { startAngle, endAngle } = element.getProps([ + "startAngle", + "endAngle" + ], useFinalPosition); + const { angle } = getAngleFromPoint(element, { + x: position.x, + y: position.y + }); + if (_angleBetween(angle, startAngle, endAngle)) { + items.push({ + element, + datasetIndex, + index: index2 + }); + } + } + evaluateInteractionItems(chart, axis, position, evaluationFunc); + return items; +} +function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { + let items = []; + const distanceMetric = getDistanceMetricForAxis(axis); + let minDistance = Number.POSITIVE_INFINITY; + function evaluationFunc(element, datasetIndex, index2) { + const inRange2 = element.inRange(position.x, position.y, useFinalPosition); + if (intersect && !inRange2) { + return; + } + const center = element.getCenterPoint(useFinalPosition); + const pointInArea = !!includeInvisible || chart.isPointInArea(center); + if (!pointInArea && !inRange2) { + return; + } + const distance = distanceMetric(position, center); + if (distance < minDistance) { + items = [ + { + element, + datasetIndex, + index: index2 + } + ]; + minDistance = distance; + } else if (distance === minDistance) { + items.push({ + element, + datasetIndex, + index: index2 + }); + } + } + evaluateInteractionItems(chart, axis, position, evaluationFunc); + return items; +} +function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { + if (!includeInvisible && !chart.isPointInArea(position)) { + return []; + } + return axis === "r" && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible); +} +function getAxisItems(chart, position, axis, intersect, useFinalPosition) { + const items = []; + const rangeMethod = axis === "x" ? "inXRange" : "inYRange"; + let intersectsItem = false; + evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index2) => { + if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) { + items.push({ + element, + datasetIndex, + index: index2 + }); + intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition); + } + }); + if (intersect && !intersectsItem) { + return []; + } + return items; +} +var Interaction = { + evaluateInteractionItems, + modes: { + index(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || "x"; + const includeInvisible = options.includeInvisible || false; + const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); + const elements2 = []; + if (!items.length) { + return []; + } + chart.getSortedVisibleDatasetMetas().forEach((meta) => { + const index2 = items[0].index; + const element = meta.data[index2]; + if (element && !element.skip) { + elements2.push({ + element, + datasetIndex: meta.index, + index: index2 + }); + } + }); + return elements2; + }, + dataset(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || "xy"; + const includeInvisible = options.includeInvisible || false; + let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); + if (items.length > 0) { + const datasetIndex = items[0].datasetIndex; + const data = chart.getDatasetMeta(datasetIndex).data; + items = []; + for (let i = 0; i < data.length; ++i) { + items.push({ + element: data[i], + datasetIndex, + index: i + }); + } + } + return items; + }, + point(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || "xy"; + const includeInvisible = options.includeInvisible || false; + return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible); + }, + nearest(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + const axis = options.axis || "xy"; + const includeInvisible = options.includeInvisible || false; + return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible); + }, + x(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + return getAxisItems(chart, position, "x", options.intersect, useFinalPosition); + }, + y(chart, e, options, useFinalPosition) { + const position = getRelativePosition(e, chart); + return getAxisItems(chart, position, "y", options.intersect, useFinalPosition); + } + } +}; +var STATIC_POSITIONS = [ + "left", + "top", + "right", + "bottom" +]; +function filterByPosition(array, position) { + return array.filter((v) => v.pos === position); +} +function filterDynamicPositionByAxis(array, axis) { + return array.filter((v) => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis); +} +function sortByWeight(array, reverse) { + return array.sort((a, b) => { + const v0 = reverse ? b : a; + const v1 = reverse ? a : b; + return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight; + }); +} +function wrapBoxes(boxes) { + const layoutBoxes = []; + let i, ilen, box, pos, stack, stackWeight; + for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { + box = boxes[i]; + ({ position: pos, options: { stack, stackWeight = 1 } } = box); + layoutBoxes.push({ + index: i, + box, + pos, + horizontal: box.isHorizontal(), + weight: box.weight, + stack: stack && pos + stack, + stackWeight + }); + } + return layoutBoxes; +} +function buildStacks(layouts2) { + const stacks = {}; + for (const wrap of layouts2) { + const { stack, pos, stackWeight } = wrap; + if (!stack || !STATIC_POSITIONS.includes(pos)) { + continue; + } + const _stack = stacks[stack] || (stacks[stack] = { + count: 0, + placed: 0, + weight: 0, + size: 0 + }); + _stack.count++; + _stack.weight += stackWeight; + } + return stacks; +} +function setLayoutDims(layouts2, params) { + const stacks = buildStacks(layouts2); + const { vBoxMaxWidth, hBoxMaxHeight } = params; + let i, ilen, layout; + for (i = 0, ilen = layouts2.length; i < ilen; ++i) { + layout = layouts2[i]; + const { fullSize } = layout.box; + const stack = stacks[layout.stack]; + const factor = stack && layout.stackWeight / stack.weight; + if (layout.horizontal) { + layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth; + layout.height = hBoxMaxHeight; + } else { + layout.width = vBoxMaxWidth; + layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight; + } + } + return stacks; +} +function buildLayoutBoxes(boxes) { + const layoutBoxes = wrapBoxes(boxes); + const fullSize = sortByWeight(layoutBoxes.filter((wrap) => wrap.box.fullSize), true); + const left = sortByWeight(filterByPosition(layoutBoxes, "left"), true); + const right = sortByWeight(filterByPosition(layoutBoxes, "right")); + const top = sortByWeight(filterByPosition(layoutBoxes, "top"), true); + const bottom = sortByWeight(filterByPosition(layoutBoxes, "bottom")); + const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, "x"); + const centerVertical = filterDynamicPositionByAxis(layoutBoxes, "y"); + return { + fullSize, + leftAndTop: left.concat(top), + rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal), + chartArea: filterByPosition(layoutBoxes, "chartArea"), + vertical: left.concat(right).concat(centerVertical), + horizontal: top.concat(bottom).concat(centerHorizontal) + }; +} +function getCombinedMax(maxPadding, chartArea, a, b) { + return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); +} +function updateMaxPadding(maxPadding, boxPadding) { + maxPadding.top = Math.max(maxPadding.top, boxPadding.top); + maxPadding.left = Math.max(maxPadding.left, boxPadding.left); + maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); + maxPadding.right = Math.max(maxPadding.right, boxPadding.right); +} +function updateDims(chartArea, params, layout, stacks) { + const { pos, box } = layout; + const maxPadding = chartArea.maxPadding; + if (!isObject(pos)) { + if (layout.size) { + chartArea[pos] -= layout.size; + } + const stack = stacks[layout.stack] || { + size: 0, + count: 1 + }; + stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width); + layout.size = stack.size / stack.count; + chartArea[pos] += layout.size; + } + if (box.getPadding) { + updateMaxPadding(maxPadding, box.getPadding()); + } + const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, "left", "right")); + const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, "top", "bottom")); + const widthChanged = newWidth !== chartArea.w; + const heightChanged = newHeight !== chartArea.h; + chartArea.w = newWidth; + chartArea.h = newHeight; + return layout.horizontal ? { + same: widthChanged, + other: heightChanged + } : { + same: heightChanged, + other: widthChanged + }; +} +function handleMaxPadding(chartArea) { + const maxPadding = chartArea.maxPadding; + function updatePos(pos) { + const change = Math.max(maxPadding[pos] - chartArea[pos], 0); + chartArea[pos] += change; + return change; + } + chartArea.y += updatePos("top"); + chartArea.x += updatePos("left"); + updatePos("right"); + updatePos("bottom"); +} +function getMargins(horizontal, chartArea) { + const maxPadding = chartArea.maxPadding; + function marginForPositions(positions2) { + const margin = { + left: 0, + top: 0, + right: 0, + bottom: 0 + }; + positions2.forEach((pos) => { + margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); + }); + return margin; + } + return horizontal ? marginForPositions([ + "left", + "right" + ]) : marginForPositions([ + "top", + "bottom" + ]); +} +function fitBoxes(boxes, chartArea, params, stacks) { + const refitBoxes = []; + let i, ilen, layout, box, refit, changed; + for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) { + layout = boxes[i]; + box = layout.box; + box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea)); + const { same, other } = updateDims(chartArea, params, layout, stacks); + refit |= same && refitBoxes.length; + changed = changed || other; + if (!box.fullSize) { + refitBoxes.push(layout); + } + } + return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed; +} +function setBoxDims(box, left, top, width, height) { + box.top = top; + box.left = left; + box.right = left + width; + box.bottom = top + height; + box.width = width; + box.height = height; +} +function placeBoxes(boxes, chartArea, params, stacks) { + const userPadding = params.padding; + let { x, y } = chartArea; + for (const layout of boxes) { + const box = layout.box; + const stack = stacks[layout.stack] || { + count: 1, + placed: 0, + weight: 1 + }; + const weight = layout.stackWeight / stack.weight || 1; + if (layout.horizontal) { + const width = chartArea.w * weight; + const height = stack.size || box.height; + if (defined(stack.start)) { + y = stack.start; + } + if (box.fullSize) { + setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height); + } else { + setBoxDims(box, chartArea.left + stack.placed, y, width, height); + } + stack.start = y; + stack.placed += width; + y = box.bottom; + } else { + const height = chartArea.h * weight; + const width = stack.size || box.width; + if (defined(stack.start)) { + x = stack.start; + } + if (box.fullSize) { + setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top); + } else { + setBoxDims(box, x, chartArea.top + stack.placed, width, height); + } + stack.start = x; + stack.placed += height; + x = box.right; + } + } + chartArea.x = x; + chartArea.y = y; +} +var layouts = { + addBox(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } + item.fullSize = item.fullSize || false; + item.position = item.position || "top"; + item.weight = item.weight || 0; + item._layers = item._layers || function() { + return [ + { + z: 0, + draw(chartArea) { + item.draw(chartArea); + } + } + ]; + }; + chart.boxes.push(item); + }, + removeBox(chart, layoutItem) { + const index2 = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index2 !== -1) { + chart.boxes.splice(index2, 1); + } + }, + configure(chart, item, options) { + item.fullSize = options.fullSize; + item.position = options.position; + item.weight = options.weight; + }, + update(chart, width, height, minPadding) { + if (!chart) { + return; + } + const padding = toPadding(chart.options.layout.padding); + const availableWidth = Math.max(width - padding.width, 0); + const availableHeight = Math.max(height - padding.height, 0); + const boxes = buildLayoutBoxes(chart.boxes); + const verticalBoxes = boxes.vertical; + const horizontalBoxes = boxes.horizontal; + each(chart.boxes, (box) => { + if (typeof box.beforeLayout === "function") { + box.beforeLayout(); + } + }); + const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1; + const params = Object.freeze({ + outerWidth: width, + outerHeight: height, + padding, + availableWidth, + availableHeight, + vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, + hBoxMaxHeight: availableHeight / 2 + }); + const maxPadding = Object.assign({}, padding); + updateMaxPadding(maxPadding, toPadding(minPadding)); + const chartArea = Object.assign({ + maxPadding, + w: availableWidth, + h: availableHeight, + x: padding.left, + y: padding.top + }, padding); + const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); + fitBoxes(boxes.fullSize, chartArea, params, stacks); + fitBoxes(verticalBoxes, chartArea, params, stacks); + if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) { + fitBoxes(verticalBoxes, chartArea, params, stacks); + } + handleMaxPadding(chartArea); + placeBoxes(boxes.leftAndTop, chartArea, params, stacks); + chartArea.x += chartArea.w; + chartArea.y += chartArea.h; + placeBoxes(boxes.rightAndBottom, chartArea, params, stacks); + chart.chartArea = { + left: chartArea.left, + top: chartArea.top, + right: chartArea.left + chartArea.w, + bottom: chartArea.top + chartArea.h, + height: chartArea.h, + width: chartArea.w + }; + each(boxes.chartArea, (layout) => { + const box = layout.box; + Object.assign(box, chart.chartArea); + box.update(chartArea.w, chartArea.h, { + left: 0, + top: 0, + right: 0, + bottom: 0 + }); + }); + } +}; +var BasePlatform = class { + acquireContext(canvas, aspectRatio) { + } + releaseContext(context) { + return false; + } + addEventListener(chart, type, listener) { + } + removeEventListener(chart, type, listener) { + } + getDevicePixelRatio() { + return 1; + } + getMaximumSize(element, width, height, aspectRatio) { + width = Math.max(0, width || element.width); + height = height || element.height; + return { + width, + height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height) + }; + } + isAttached(canvas) { + return true; + } + updateConfig(config) { + } +}; +var BasicPlatform = class extends BasePlatform { + acquireContext(item) { + return item && item.getContext && item.getContext("2d") || null; + } + updateConfig(config) { + config.options.animation = false; + } +}; +var EXPANDO_KEY = "$chartjs"; +var EVENT_TYPES = { + touchstart: "mousedown", + touchmove: "mousemove", + touchend: "mouseup", + pointerenter: "mouseenter", + pointerdown: "mousedown", + pointermove: "mousemove", + pointerup: "mouseup", + pointerleave: "mouseout", + pointerout: "mouseout" +}; +var isNullOrEmpty = (value) => value === null || value === ""; +function initCanvas(canvas, aspectRatio) { + const style = canvas.style; + const renderHeight = canvas.getAttribute("height"); + const renderWidth = canvas.getAttribute("width"); + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } + } + }; + style.display = style.display || "block"; + style.boxSizing = style.boxSizing || "border-box"; + if (isNullOrEmpty(renderWidth)) { + const displayWidth = readUsedSize(canvas, "width"); + if (displayWidth !== void 0) { + canvas.width = displayWidth; + } + } + if (isNullOrEmpty(renderHeight)) { + if (canvas.style.height === "") { + canvas.height = canvas.width / (aspectRatio || 2); + } else { + const displayHeight = readUsedSize(canvas, "height"); + if (displayHeight !== void 0) { + canvas.height = displayHeight; + } + } + } + return canvas; +} +var eventListenerOptions = supportsEventListenerOptions ? { + passive: true +} : false; +function addListener(node, type, listener) { + if (node) { + node.addEventListener(type, listener, eventListenerOptions); + } +} +function removeListener(chart, type, listener) { + if (chart && chart.canvas) { + chart.canvas.removeEventListener(type, listener, eventListenerOptions); + } +} +function fromNativeEvent(event, chart) { + const type = EVENT_TYPES[event.type] || event.type; + const { x, y } = getRelativePosition(event, chart); + return { + type, + chart, + native: event, + x: x !== void 0 ? x : null, + y: y !== void 0 ? y : null + }; +} +function nodeListContains(nodeList, canvas) { + for (const node of nodeList) { + if (node === canvas || node.contains(canvas)) { + return true; + } + } +} +function createAttachObserver(chart, type, listener) { + const canvas = chart.canvas; + const observer = new MutationObserver((entries) => { + let trigger = false; + for (const entry of entries) { + trigger = trigger || nodeListContains(entry.addedNodes, canvas); + trigger = trigger && !nodeListContains(entry.removedNodes, canvas); + } + if (trigger) { + listener(); + } + }); + observer.observe(document, { + childList: true, + subtree: true + }); + return observer; +} +function createDetachObserver(chart, type, listener) { + const canvas = chart.canvas; + const observer = new MutationObserver((entries) => { + let trigger = false; + for (const entry of entries) { + trigger = trigger || nodeListContains(entry.removedNodes, canvas); + trigger = trigger && !nodeListContains(entry.addedNodes, canvas); + } + if (trigger) { + listener(); + } + }); + observer.observe(document, { + childList: true, + subtree: true + }); + return observer; +} +var drpListeningCharts = /* @__PURE__ */ new Map(); +var oldDevicePixelRatio = 0; +function onWindowResize() { + const dpr = window.devicePixelRatio; + if (dpr === oldDevicePixelRatio) { + return; + } + oldDevicePixelRatio = dpr; + drpListeningCharts.forEach((resize, chart) => { + if (chart.currentDevicePixelRatio !== dpr) { + resize(); + } + }); +} +function listenDevicePixelRatioChanges(chart, resize) { + if (!drpListeningCharts.size) { + window.addEventListener("resize", onWindowResize); + } + drpListeningCharts.set(chart, resize); +} +function unlistenDevicePixelRatioChanges(chart) { + drpListeningCharts.delete(chart); + if (!drpListeningCharts.size) { + window.removeEventListener("resize", onWindowResize); + } +} +function createResizeObserver(chart, type, listener) { + const canvas = chart.canvas; + const container = canvas && _getParentNode(canvas); + if (!container) { + return; + } + const resize = throttled((width, height) => { + const w = container.clientWidth; + listener(width, height); + if (w < container.clientWidth) { + listener(); + } + }, window); + const observer = new ResizeObserver((entries) => { + const entry = entries[0]; + const width = entry.contentRect.width; + const height = entry.contentRect.height; + if (width === 0 && height === 0) { + return; + } + resize(width, height); + }); + observer.observe(container); + listenDevicePixelRatioChanges(chart, resize); + return observer; +} +function releaseObserver(chart, type, observer) { + if (observer) { + observer.disconnect(); + } + if (type === "resize") { + unlistenDevicePixelRatioChanges(chart); + } +} +function createProxyAndListen(chart, type, listener) { + const canvas = chart.canvas; + const proxy = throttled((event) => { + if (chart.ctx !== null) { + listener(fromNativeEvent(event, chart)); + } + }, chart); + addListener(canvas, type, proxy); + return proxy; +} +var DomPlatform = class extends BasePlatform { + acquireContext(canvas, aspectRatio) { + const context = canvas && canvas.getContext && canvas.getContext("2d"); + if (context && context.canvas === canvas) { + initCanvas(canvas, aspectRatio); + return context; + } + return null; + } + releaseContext(context) { + const canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { + return false; + } + const initial = canvas[EXPANDO_KEY].initial; + [ + "height", + "width" + ].forEach((prop) => { + const value = initial[prop]; + if (isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); + const style = initial.style || {}; + Object.keys(style).forEach((key) => { + canvas.style[key] = style[key]; + }); + canvas.width = canvas.width; + delete canvas[EXPANDO_KEY]; + return true; + } + addEventListener(chart, type, listener) { + this.removeEventListener(chart, type); + const proxies = chart.$proxies || (chart.$proxies = {}); + const handlers = { + attach: createAttachObserver, + detach: createDetachObserver, + resize: createResizeObserver + }; + const handler = handlers[type] || createProxyAndListen; + proxies[type] = handler(chart, type, listener); + } + removeEventListener(chart, type) { + const proxies = chart.$proxies || (chart.$proxies = {}); + const proxy = proxies[type]; + if (!proxy) { + return; + } + const handlers = { + attach: releaseObserver, + detach: releaseObserver, + resize: releaseObserver + }; + const handler = handlers[type] || removeListener; + handler(chart, type, proxy); + proxies[type] = void 0; + } + getDevicePixelRatio() { + return window.devicePixelRatio; + } + getMaximumSize(canvas, width, height, aspectRatio) { + return getMaximumSize(canvas, width, height, aspectRatio); + } + isAttached(canvas) { + const container = canvas && _getParentNode(canvas); + return !!(container && container.isConnected); + } +}; +function _detectPlatform(canvas) { + if (!_isDomSupported() || typeof OffscreenCanvas !== "undefined" && canvas instanceof OffscreenCanvas) { + return BasicPlatform; + } + return DomPlatform; +} +var Element = class { + constructor() { + __publicField(this, "x"); + __publicField(this, "y"); + __publicField(this, "active", false); + __publicField(this, "options"); + __publicField(this, "$animations"); + } + tooltipPosition(useFinalPosition) { + const { x, y } = this.getProps([ + "x", + "y" + ], useFinalPosition); + return { + x, + y + }; + } + hasValue() { + return isNumber(this.x) && isNumber(this.y); + } + getProps(props, final) { + const anims = this.$animations; + if (!final || !anims) { + return this; + } + const ret = {}; + props.forEach((prop) => { + ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop]; + }); + return ret; + } +}; +__publicField(Element, "defaults", {}); +__publicField(Element, "defaultRoutes"); +function autoSkip(scale, ticks) { + const tickOpts = scale.options.ticks; + const determinedMaxTicks = determineMaxTicks(scale); + const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks); + const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; + const numMajorIndices = majorIndices.length; + const first = majorIndices[0]; + const last = majorIndices[numMajorIndices - 1]; + const newTicks = []; + if (numMajorIndices > ticksLimit) { + skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit); + return newTicks; + } + const spacing = calculateSpacing(majorIndices, ticks, ticksLimit); + if (numMajorIndices > 0) { + let i, ilen; + const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null; + skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); + for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { + skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]); + } + skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); + return newTicks; + } + skip(ticks, newTicks, spacing); + return newTicks; +} +function determineMaxTicks(scale) { + const offset = scale.options.offset; + const tickLength = scale._tickSize(); + const maxScale = scale._length / tickLength + (offset ? 0 : 1); + const maxChart = scale._maxLength / tickLength; + return Math.floor(Math.min(maxScale, maxChart)); +} +function calculateSpacing(majorIndices, ticks, ticksLimit) { + const evenMajorSpacing = getEvenSpacing(majorIndices); + const spacing = ticks.length / ticksLimit; + if (!evenMajorSpacing) { + return Math.max(spacing, 1); + } + const factors = _factorize(evenMajorSpacing); + for (let i = 0, ilen = factors.length - 1; i < ilen; i++) { + const factor = factors[i]; + if (factor > spacing) { + return factor; + } + } + return Math.max(spacing, 1); +} +function getMajorIndices(ticks) { + const result = []; + let i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if (ticks[i].major) { + result.push(i); + } + } + return result; +} +function skipMajors(ticks, newTicks, majorIndices, spacing) { + let count = 0; + let next = majorIndices[0]; + let i; + spacing = Math.ceil(spacing); + for (i = 0; i < ticks.length; i++) { + if (i === next) { + newTicks.push(ticks[i]); + count++; + next = majorIndices[count * spacing]; + } + } +} +function skip(ticks, newTicks, spacing, majorStart, majorEnd) { + const start = valueOrDefault(majorStart, 0); + const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length); + let count = 0; + let length, i, next; + spacing = Math.ceil(spacing); + if (majorEnd) { + length = majorEnd - majorStart; + spacing = length / Math.floor(length / spacing); + } + next = start; + while (next < 0) { + count++; + next = Math.round(start + count * spacing); + } + for (i = Math.max(start, 0); i < end; i++) { + if (i === next) { + newTicks.push(ticks[i]); + count++; + next = Math.round(start + count * spacing); + } + } +} +function getEvenSpacing(arr) { + const len = arr.length; + let i, diff; + if (len < 2) { + return false; + } + for (diff = arr[0], i = 1; i < len; ++i) { + if (arr[i] - arr[i - 1] !== diff) { + return false; + } + } + return diff; +} +var reverseAlign = (align) => align === "left" ? "right" : align === "right" ? "left" : align; +var offsetFromEdge = (scale, edge, offset) => edge === "top" || edge === "left" ? scale[edge] + offset : scale[edge] - offset; +var getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength); +function sample(arr, numItems) { + const result = []; + const increment = arr.length / numItems; + const len = arr.length; + let i = 0; + for (; i < len; i += increment) { + result.push(arr[Math.floor(i)]); + } + return result; +} +function getPixelForGridLine(scale, index2, offsetGridLines) { + const length = scale.ticks.length; + const validIndex2 = Math.min(index2, length - 1); + const start = scale._startPixel; + const end = scale._endPixel; + const epsilon = 1e-6; + let lineValue = scale.getPixelForTick(validIndex2); + let offset; + if (offsetGridLines) { + if (length === 1) { + offset = Math.max(lineValue - start, end - lineValue); + } else if (index2 === 0) { + offset = (scale.getPixelForTick(1) - lineValue) / 2; + } else { + offset = (lineValue - scale.getPixelForTick(validIndex2 - 1)) / 2; + } + lineValue += validIndex2 < index2 ? offset : -offset; + if (lineValue < start - epsilon || lineValue > end + epsilon) { + return; + } + } + return lineValue; +} +function garbageCollect(caches, length) { + each(caches, (cache) => { + const gc = cache.gc; + const gcLen = gc.length / 2; + let i; + if (gcLen > length) { + for (i = 0; i < gcLen; ++i) { + delete cache.data[gc[i]]; + } + gc.splice(0, gcLen); + } + }); +} +function getTickMarkLength(options) { + return options.drawTicks ? options.tickLength : 0; +} +function getTitleHeight(options, fallback) { + if (!options.display) { + return 0; + } + const font = toFont(options.font, fallback); + const padding = toPadding(options.padding); + const lines = isArray(options.text) ? options.text.length : 1; + return lines * font.lineHeight + padding.height; +} +function createScaleContext(parent, scale) { + return createContext(parent, { + scale, + type: "scale" + }); +} +function createTickContext(parent, index2, tick) { + return createContext(parent, { + tick, + index: index2, + type: "tick" + }); +} +function titleAlign(align, position, reverse) { + let ret = _toLeftRightCenter(align); + if (reverse && position !== "right" || !reverse && position === "right") { + ret = reverseAlign(ret); + } + return ret; +} +function titleArgs(scale, offset, position, align) { + const { top, left, bottom, right, chart } = scale; + const { chartArea, scales: scales2 } = chart; + let rotation = 0; + let maxWidth, titleX, titleY; + const height = bottom - top; + const width = right - left; + if (scale.isHorizontal()) { + titleX = _alignStartEnd(align, left, right); + if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + titleY = scales2[positionAxisID].getPixelForValue(value) + height - offset; + } else if (position === "center") { + titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset; + } else { + titleY = offsetFromEdge(scale, position, offset); + } + maxWidth = right - left; + } else { + if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + titleX = scales2[positionAxisID].getPixelForValue(value) - width + offset; + } else if (position === "center") { + titleX = (chartArea.left + chartArea.right) / 2 - width + offset; + } else { + titleX = offsetFromEdge(scale, position, offset); + } + titleY = _alignStartEnd(align, bottom, top); + rotation = position === "left" ? -HALF_PI : HALF_PI; + } + return { + titleX, + titleY, + maxWidth, + rotation + }; +} +var Scale = class _Scale extends Element { + constructor(cfg) { + super(); + this.id = cfg.id; + this.type = cfg.type; + this.options = void 0; + this.ctx = cfg.ctx; + this.chart = cfg.chart; + this.top = void 0; + this.bottom = void 0; + this.left = void 0; + this.right = void 0; + this.width = void 0; + this.height = void 0; + this._margins = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }; + this.maxWidth = void 0; + this.maxHeight = void 0; + this.paddingTop = void 0; + this.paddingBottom = void 0; + this.paddingLeft = void 0; + this.paddingRight = void 0; + this.axis = void 0; + this.labelRotation = void 0; + this.min = void 0; + this.max = void 0; + this._range = void 0; + this.ticks = []; + this._gridLineItems = null; + this._labelItems = null; + this._labelSizes = null; + this._length = 0; + this._maxLength = 0; + this._longestTextCache = {}; + this._startPixel = void 0; + this._endPixel = void 0; + this._reversePixels = false; + this._userMax = void 0; + this._userMin = void 0; + this._suggestedMax = void 0; + this._suggestedMin = void 0; + this._ticksLength = 0; + this._borderValue = 0; + this._cache = {}; + this._dataLimitsCached = false; + this.$context = void 0; + } + init(options) { + this.options = options.setContext(this.getContext()); + this.axis = options.axis; + this._userMin = this.parse(options.min); + this._userMax = this.parse(options.max); + this._suggestedMin = this.parse(options.suggestedMin); + this._suggestedMax = this.parse(options.suggestedMax); + } + parse(raw, index2) { + return raw; + } + getUserBounds() { + let { _userMin, _userMax, _suggestedMin, _suggestedMax } = this; + _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY); + _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY); + _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY); + _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY); + return { + min: finiteOrDefault(_userMin, _suggestedMin), + max: finiteOrDefault(_userMax, _suggestedMax), + minDefined: isNumberFinite(_userMin), + maxDefined: isNumberFinite(_userMax) + }; + } + getMinMax(canStack) { + let { min, max, minDefined, maxDefined } = this.getUserBounds(); + let range; + if (minDefined && maxDefined) { + return { + min, + max + }; + } + const metas = this.getMatchingVisibleMetas(); + for (let i = 0, ilen = metas.length; i < ilen; ++i) { + range = metas[i].controller.getMinMax(this, canStack); + if (!minDefined) { + min = Math.min(min, range.min); + } + if (!maxDefined) { + max = Math.max(max, range.max); + } + } + min = maxDefined && min > max ? max : min; + max = minDefined && min > max ? min : max; + return { + min: finiteOrDefault(min, finiteOrDefault(max, min)), + max: finiteOrDefault(max, finiteOrDefault(min, max)) + }; + } + getPadding() { + return { + left: this.paddingLeft || 0, + top: this.paddingTop || 0, + right: this.paddingRight || 0, + bottom: this.paddingBottom || 0 + }; + } + getTicks() { + return this.ticks; + } + getLabels() { + const data = this.chart.data; + return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; + } + getLabelItems(chartArea = this.chart.chartArea) { + const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea)); + return items; + } + beforeLayout() { + this._cache = {}; + this._dataLimitsCached = false; + } + beforeUpdate() { + callback(this.options.beforeUpdate, [ + this + ]); + } + update(maxWidth, maxHeight, margins) { + const { beginAtZero, grace, ticks: tickOpts } = this.options; + const sampleSize = tickOpts.sampleSize; + this.beforeUpdate(); + this.maxWidth = maxWidth; + this.maxHeight = maxHeight; + this._margins = margins = Object.assign({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + this.ticks = null; + this._labelSizes = null; + this._gridLineItems = null; + this._labelItems = null; + this.beforeSetDimensions(); + this.setDimensions(); + this.afterSetDimensions(); + this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom; + if (!this._dataLimitsCached) { + this.beforeDataLimits(); + this.determineDataLimits(); + this.afterDataLimits(); + this._range = _addGrace(this, grace, beginAtZero); + this._dataLimitsCached = true; + } + this.beforeBuildTicks(); + this.ticks = this.buildTicks() || []; + this.afterBuildTicks(); + const samplingEnabled = sampleSize < this.ticks.length; + this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks); + this.configure(); + this.beforeCalculateLabelRotation(); + this.calculateLabelRotation(); + this.afterCalculateLabelRotation(); + if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === "auto")) { + this.ticks = autoSkip(this, this.ticks); + this._labelSizes = null; + this.afterAutoSkip(); + } + if (samplingEnabled) { + this._convertTicksToLabels(this.ticks); + } + this.beforeFit(); + this.fit(); + this.afterFit(); + this.afterUpdate(); + } + configure() { + let reversePixels = this.options.reverse; + let startPixel, endPixel; + if (this.isHorizontal()) { + startPixel = this.left; + endPixel = this.right; + } else { + startPixel = this.top; + endPixel = this.bottom; + reversePixels = !reversePixels; + } + this._startPixel = startPixel; + this._endPixel = endPixel; + this._reversePixels = reversePixels; + this._length = endPixel - startPixel; + this._alignToPixels = this.options.alignToPixels; + } + afterUpdate() { + callback(this.options.afterUpdate, [ + this + ]); + } + beforeSetDimensions() { + callback(this.options.beforeSetDimensions, [ + this + ]); + } + setDimensions() { + if (this.isHorizontal()) { + this.width = this.maxWidth; + this.left = 0; + this.right = this.width; + } else { + this.height = this.maxHeight; + this.top = 0; + this.bottom = this.height; + } + this.paddingLeft = 0; + this.paddingTop = 0; + this.paddingRight = 0; + this.paddingBottom = 0; + } + afterSetDimensions() { + callback(this.options.afterSetDimensions, [ + this + ]); + } + _callHooks(name) { + this.chart.notifyPlugins(name, this.getContext()); + callback(this.options[name], [ + this + ]); + } + beforeDataLimits() { + this._callHooks("beforeDataLimits"); + } + determineDataLimits() { + } + afterDataLimits() { + this._callHooks("afterDataLimits"); + } + beforeBuildTicks() { + this._callHooks("beforeBuildTicks"); + } + buildTicks() { + return []; + } + afterBuildTicks() { + this._callHooks("afterBuildTicks"); + } + beforeTickToLabelConversion() { + callback(this.options.beforeTickToLabelConversion, [ + this + ]); + } + generateTickLabels(ticks) { + const tickOpts = this.options.ticks; + let i, ilen, tick; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + tick = ticks[i]; + tick.label = callback(tickOpts.callback, [ + tick.value, + i, + ticks + ], this); + } + } + afterTickToLabelConversion() { + callback(this.options.afterTickToLabelConversion, [ + this + ]); + } + beforeCalculateLabelRotation() { + callback(this.options.beforeCalculateLabelRotation, [ + this + ]); + } + calculateLabelRotation() { + const options = this.options; + const tickOpts = options.ticks; + const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit); + const minRotation = tickOpts.minRotation || 0; + const maxRotation = tickOpts.maxRotation; + let labelRotation = minRotation; + let tickWidth, maxHeight, maxLabelDiagonal; + if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) { + this.labelRotation = minRotation; + return; + } + const labelSizes = this._getLabelSizes(); + const maxLabelWidth = labelSizes.widest.width; + const maxLabelHeight = labelSizes.highest.height; + const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth); + tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1); + if (maxLabelWidth + 6 > tickWidth) { + tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1)); + maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font); + maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); + labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1)))); + labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); + } + this.labelRotation = labelRotation; + } + afterCalculateLabelRotation() { + callback(this.options.afterCalculateLabelRotation, [ + this + ]); + } + afterAutoSkip() { + } + beforeFit() { + callback(this.options.beforeFit, [ + this + ]); + } + fit() { + const minSize = { + width: 0, + height: 0 + }; + const { chart, options: { ticks: tickOpts, title: titleOpts, grid: gridOpts } } = this; + const display = this._isVisible(); + const isHorizontal = this.isHorizontal(); + if (display) { + const titleHeight = getTitleHeight(titleOpts, chart.options.font); + if (isHorizontal) { + minSize.width = this.maxWidth; + minSize.height = getTickMarkLength(gridOpts) + titleHeight; + } else { + minSize.height = this.maxHeight; + minSize.width = getTickMarkLength(gridOpts) + titleHeight; + } + if (tickOpts.display && this.ticks.length) { + const { first, last, widest, highest } = this._getLabelSizes(); + const tickPadding = tickOpts.padding * 2; + const angleRadians = toRadians(this.labelRotation); + const cos = Math.cos(angleRadians); + const sin = Math.sin(angleRadians); + if (isHorizontal) { + const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height; + minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding); + } else { + const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height; + minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding); + } + this._calculatePadding(first, last, sin, cos); + } + } + this._handleMargins(); + if (isHorizontal) { + this.width = this._length = chart.width - this._margins.left - this._margins.right; + this.height = minSize.height; + } else { + this.width = minSize.width; + this.height = this._length = chart.height - this._margins.top - this._margins.bottom; + } + } + _calculatePadding(first, last, sin, cos) { + const { ticks: { align, padding }, position } = this.options; + const isRotated = this.labelRotation !== 0; + const labelsBelowTicks = position !== "top" && this.axis === "x"; + if (this.isHorizontal()) { + const offsetLeft = this.getPixelForTick(0) - this.left; + const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1); + let paddingLeft = 0; + let paddingRight = 0; + if (isRotated) { + if (labelsBelowTicks) { + paddingLeft = cos * first.width; + paddingRight = sin * last.height; + } else { + paddingLeft = sin * first.height; + paddingRight = cos * last.width; + } + } else if (align === "start") { + paddingRight = last.width; + } else if (align === "end") { + paddingLeft = first.width; + } else if (align !== "inner") { + paddingLeft = first.width / 2; + paddingRight = last.width / 2; + } + this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0); + this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0); + } else { + let paddingTop = last.height / 2; + let paddingBottom = first.height / 2; + if (align === "start") { + paddingTop = 0; + paddingBottom = first.height; + } else if (align === "end") { + paddingTop = last.height; + paddingBottom = 0; + } + this.paddingTop = paddingTop + padding; + this.paddingBottom = paddingBottom + padding; + } + } + _handleMargins() { + if (this._margins) { + this._margins.left = Math.max(this.paddingLeft, this._margins.left); + this._margins.top = Math.max(this.paddingTop, this._margins.top); + this._margins.right = Math.max(this.paddingRight, this._margins.right); + this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom); + } + } + afterFit() { + callback(this.options.afterFit, [ + this + ]); + } + isHorizontal() { + const { axis, position } = this.options; + return position === "top" || position === "bottom" || axis === "x"; + } + isFullSize() { + return this.options.fullSize; + } + _convertTicksToLabels(ticks) { + this.beforeTickToLabelConversion(); + this.generateTickLabels(ticks); + let i, ilen; + for (i = 0, ilen = ticks.length; i < ilen; i++) { + if (isNullOrUndef(ticks[i].label)) { + ticks.splice(i, 1); + ilen--; + i--; + } + } + this.afterTickToLabelConversion(); + } + _getLabelSizes() { + let labelSizes = this._labelSizes; + if (!labelSizes) { + const sampleSize = this.options.ticks.sampleSize; + let ticks = this.ticks; + if (sampleSize < ticks.length) { + ticks = sample(ticks, sampleSize); + } + this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit); + } + return labelSizes; + } + _computeLabelSizes(ticks, length, maxTicksLimit) { + const { ctx, _longestTextCache: caches } = this; + const widths = []; + const heights = []; + const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit)); + let widestLabelSize = 0; + let highestLabelSize = 0; + let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel; + for (i = 0; i < length; i += increment) { + label = ticks[i].label; + tickFont = this._resolveTickFontOptions(i); + ctx.font = fontString = tickFont.string; + cache = caches[fontString] = caches[fontString] || { + data: {}, + gc: [] + }; + lineHeight = tickFont.lineHeight; + width = height = 0; + if (!isNullOrUndef(label) && !isArray(label)) { + width = _measureText(ctx, cache.data, cache.gc, width, label); + height = lineHeight; + } else if (isArray(label)) { + for (j = 0, jlen = label.length; j < jlen; ++j) { + nestedLabel = label[j]; + if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) { + width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel); + height += lineHeight; + } + } + } + widths.push(width); + heights.push(height); + widestLabelSize = Math.max(width, widestLabelSize); + highestLabelSize = Math.max(height, highestLabelSize); + } + garbageCollect(caches, length); + const widest = widths.indexOf(widestLabelSize); + const highest = heights.indexOf(highestLabelSize); + const valueAt = (idx) => ({ + width: widths[idx] || 0, + height: heights[idx] || 0 + }); + return { + first: valueAt(0), + last: valueAt(length - 1), + widest: valueAt(widest), + highest: valueAt(highest), + widths, + heights + }; + } + getLabelForValue(value) { + return value; + } + getPixelForValue(value, index2) { + return NaN; + } + getValueForPixel(pixel) { + } + getPixelForTick(index2) { + const ticks = this.ticks; + if (index2 < 0 || index2 > ticks.length - 1) { + return null; + } + return this.getPixelForValue(ticks[index2].value); + } + getPixelForDecimal(decimal) { + if (this._reversePixels) { + decimal = 1 - decimal; + } + const pixel = this._startPixel + decimal * this._length; + return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel); + } + getDecimalForPixel(pixel) { + const decimal = (pixel - this._startPixel) / this._length; + return this._reversePixels ? 1 - decimal : decimal; + } + getBasePixel() { + return this.getPixelForValue(this.getBaseValue()); + } + getBaseValue() { + const { min, max } = this; + return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0; + } + getContext(index2) { + const ticks = this.ticks || []; + if (index2 >= 0 && index2 < ticks.length) { + const tick = ticks[index2]; + return tick.$context || (tick.$context = createTickContext(this.getContext(), index2, tick)); + } + return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this)); + } + _tickSize() { + const optionTicks = this.options.ticks; + const rot = toRadians(this.labelRotation); + const cos = Math.abs(Math.cos(rot)); + const sin = Math.abs(Math.sin(rot)); + const labelSizes = this._getLabelSizes(); + const padding = optionTicks.autoSkipPadding || 0; + const w = labelSizes ? labelSizes.widest.width + padding : 0; + const h = labelSizes ? labelSizes.highest.height + padding : 0; + return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin; + } + _isVisible() { + const display = this.options.display; + if (display !== "auto") { + return !!display; + } + return this.getMatchingVisibleMetas().length > 0; + } + _computeGridLineItems(chartArea) { + const axis = this.axis; + const chart = this.chart; + const options = this.options; + const { grid, position, border } = options; + const offset = grid.offset; + const isHorizontal = this.isHorizontal(); + const ticks = this.ticks; + const ticksLength = ticks.length + (offset ? 1 : 0); + const tl = getTickMarkLength(grid); + const items = []; + const borderOpts = border.setContext(this.getContext()); + const axisWidth = borderOpts.display ? borderOpts.width : 0; + const axisHalfWidth = axisWidth / 2; + const alignBorderValue = function(pixel) { + return _alignPixel(chart, pixel, axisWidth); + }; + let borderValue, i, lineValue, alignedLineValue; + let tx1, ty1, tx2, ty2, x1, y1, x2, y2; + if (position === "top") { + borderValue = alignBorderValue(this.bottom); + ty1 = this.bottom - tl; + ty2 = borderValue - axisHalfWidth; + y1 = alignBorderValue(chartArea.top) + axisHalfWidth; + y2 = chartArea.bottom; + } else if (position === "bottom") { + borderValue = alignBorderValue(this.top); + y1 = chartArea.top; + y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; + ty1 = borderValue + axisHalfWidth; + ty2 = this.top + tl; + } else if (position === "left") { + borderValue = alignBorderValue(this.right); + tx1 = this.right - tl; + tx2 = borderValue - axisHalfWidth; + x1 = alignBorderValue(chartArea.left) + axisHalfWidth; + x2 = chartArea.right; + } else if (position === "right") { + borderValue = alignBorderValue(this.left); + x1 = chartArea.left; + x2 = alignBorderValue(chartArea.right) - axisHalfWidth; + tx1 = borderValue + axisHalfWidth; + tx2 = this.left + tl; + } else if (axis === "x") { + if (position === "center") { + borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5); + } else if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); + } + y1 = chartArea.top; + y2 = chartArea.bottom; + ty1 = borderValue + axisHalfWidth; + ty2 = ty1 + tl; + } else if (axis === "y") { + if (position === "center") { + borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2); + } else if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); + } + tx1 = borderValue - axisHalfWidth; + tx2 = tx1 - tl; + x1 = chartArea.left; + x2 = chartArea.right; + } + const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength); + const step = Math.max(1, Math.ceil(ticksLength / limit)); + for (i = 0; i < ticksLength; i += step) { + const context = this.getContext(i); + const optsAtIndex = grid.setContext(context); + const optsAtIndexBorder = border.setContext(context); + const lineWidth = optsAtIndex.lineWidth; + const lineColor = optsAtIndex.color; + const borderDash = optsAtIndexBorder.dash || []; + const borderDashOffset = optsAtIndexBorder.dashOffset; + const tickWidth = optsAtIndex.tickWidth; + const tickColor = optsAtIndex.tickColor; + const tickBorderDash = optsAtIndex.tickBorderDash || []; + const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset; + lineValue = getPixelForGridLine(this, i, offset); + if (lineValue === void 0) { + continue; + } + alignedLineValue = _alignPixel(chart, lineValue, lineWidth); + if (isHorizontal) { + tx1 = tx2 = x1 = x2 = alignedLineValue; + } else { + ty1 = ty2 = y1 = y2 = alignedLineValue; + } + items.push({ + tx1, + ty1, + tx2, + ty2, + x1, + y1, + x2, + y2, + width: lineWidth, + color: lineColor, + borderDash, + borderDashOffset, + tickWidth, + tickColor, + tickBorderDash, + tickBorderDashOffset + }); + } + this._ticksLength = ticksLength; + this._borderValue = borderValue; + return items; + } + _computeLabelItems(chartArea) { + const axis = this.axis; + const options = this.options; + const { position, ticks: optionTicks } = options; + const isHorizontal = this.isHorizontal(); + const ticks = this.ticks; + const { align, crossAlign, padding, mirror } = optionTicks; + const tl = getTickMarkLength(options.grid); + const tickAndPadding = tl + padding; + const hTickAndPadding = mirror ? -padding : tickAndPadding; + const rotation = -toRadians(this.labelRotation); + const items = []; + let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; + let textBaseline = "middle"; + if (position === "top") { + y = this.bottom - hTickAndPadding; + textAlign = this._getXAxisLabelAlignment(); + } else if (position === "bottom") { + y = this.top + hTickAndPadding; + textAlign = this._getXAxisLabelAlignment(); + } else if (position === "left") { + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; + } else if (position === "right") { + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; + } else if (axis === "x") { + if (position === "center") { + y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding; + } else if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; + } + textAlign = this._getXAxisLabelAlignment(); + } else if (axis === "y") { + if (position === "center") { + x = (chartArea.left + chartArea.right) / 2 - tickAndPadding; + } else if (isObject(position)) { + const positionAxisID = Object.keys(position)[0]; + const value = position[positionAxisID]; + x = this.chart.scales[positionAxisID].getPixelForValue(value); + } + textAlign = this._getYAxisLabelAlignment(tl).textAlign; + } + if (axis === "y") { + if (align === "start") { + textBaseline = "top"; + } else if (align === "end") { + textBaseline = "bottom"; + } + } + const labelSizes = this._getLabelSizes(); + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + tick = ticks[i]; + label = tick.label; + const optsAtIndex = optionTicks.setContext(this.getContext(i)); + pixel = this.getPixelForTick(i) + optionTicks.labelOffset; + font = this._resolveTickFontOptions(i); + lineHeight = font.lineHeight; + lineCount = isArray(label) ? label.length : 1; + const halfCount = lineCount / 2; + const color2 = optsAtIndex.color; + const strokeColor = optsAtIndex.textStrokeColor; + const strokeWidth = optsAtIndex.textStrokeWidth; + let tickTextAlign = textAlign; + if (isHorizontal) { + x = pixel; + if (textAlign === "inner") { + if (i === ilen - 1) { + tickTextAlign = !this.options.reverse ? "right" : "left"; + } else if (i === 0) { + tickTextAlign = !this.options.reverse ? "left" : "right"; + } else { + tickTextAlign = "center"; + } + } + if (position === "top") { + if (crossAlign === "near" || rotation !== 0) { + textOffset = -lineCount * lineHeight + lineHeight / 2; + } else if (crossAlign === "center") { + textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight; + } else { + textOffset = -labelSizes.highest.height + lineHeight / 2; + } + } else { + if (crossAlign === "near" || rotation !== 0) { + textOffset = lineHeight / 2; + } else if (crossAlign === "center") { + textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight; + } else { + textOffset = labelSizes.highest.height - lineCount * lineHeight; + } + } + if (mirror) { + textOffset *= -1; + } + if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) { + x += lineHeight / 2 * Math.sin(rotation); + } + } else { + y = pixel; + textOffset = (1 - lineCount) * lineHeight / 2; + } + let backdrop; + if (optsAtIndex.showLabelBackdrop) { + const labelPadding = toPadding(optsAtIndex.backdropPadding); + const height = labelSizes.heights[i]; + const width = labelSizes.widths[i]; + let top = textOffset - labelPadding.top; + let left = 0 - labelPadding.left; + switch (textBaseline) { + case "middle": + top -= height / 2; + break; + case "bottom": + top -= height; + break; + } + switch (textAlign) { + case "center": + left -= width / 2; + break; + case "right": + left -= width; + break; + case "inner": + if (i === ilen - 1) { + left -= width; + } else if (i > 0) { + left -= width / 2; + } + break; + } + backdrop = { + left, + top, + width: width + labelPadding.width, + height: height + labelPadding.height, + color: optsAtIndex.backdropColor + }; + } + items.push({ + label, + font, + textOffset, + options: { + rotation, + color: color2, + strokeColor, + strokeWidth, + textAlign: tickTextAlign, + textBaseline, + translation: [ + x, + y + ], + backdrop + } + }); + } + return items; + } + _getXAxisLabelAlignment() { + const { position, ticks } = this.options; + const rotation = -toRadians(this.labelRotation); + if (rotation) { + return position === "top" ? "left" : "right"; + } + let align = "center"; + if (ticks.align === "start") { + align = "left"; + } else if (ticks.align === "end") { + align = "right"; + } else if (ticks.align === "inner") { + align = "inner"; + } + return align; + } + _getYAxisLabelAlignment(tl) { + const { position, ticks: { crossAlign, mirror, padding } } = this.options; + const labelSizes = this._getLabelSizes(); + const tickAndPadding = tl + padding; + const widest = labelSizes.widest.width; + let textAlign; + let x; + if (position === "left") { + if (mirror) { + x = this.right + padding; + if (crossAlign === "near") { + textAlign = "left"; + } else if (crossAlign === "center") { + textAlign = "center"; + x += widest / 2; + } else { + textAlign = "right"; + x += widest; + } + } else { + x = this.right - tickAndPadding; + if (crossAlign === "near") { + textAlign = "right"; + } else if (crossAlign === "center") { + textAlign = "center"; + x -= widest / 2; + } else { + textAlign = "left"; + x = this.left; + } + } + } else if (position === "right") { + if (mirror) { + x = this.left + padding; + if (crossAlign === "near") { + textAlign = "right"; + } else if (crossAlign === "center") { + textAlign = "center"; + x -= widest / 2; + } else { + textAlign = "left"; + x -= widest; + } + } else { + x = this.left + tickAndPadding; + if (crossAlign === "near") { + textAlign = "left"; + } else if (crossAlign === "center") { + textAlign = "center"; + x += widest / 2; + } else { + textAlign = "right"; + x = this.right; + } + } + } else { + textAlign = "right"; + } + return { + textAlign, + x + }; + } + _computeLabelArea() { + if (this.options.ticks.mirror) { + return; + } + const chart = this.chart; + const position = this.options.position; + if (position === "left" || position === "right") { + return { + top: 0, + left: this.left, + bottom: chart.height, + right: this.right + }; + } + if (position === "top" || position === "bottom") { + return { + top: this.top, + left: 0, + bottom: this.bottom, + right: chart.width + }; + } + } + drawBackground() { + const { ctx, options: { backgroundColor }, left, top, width, height } = this; + if (backgroundColor) { + ctx.save(); + ctx.fillStyle = backgroundColor; + ctx.fillRect(left, top, width, height); + ctx.restore(); + } + } + getLineWidthForValue(value) { + const grid = this.options.grid; + if (!this._isVisible() || !grid.display) { + return 0; + } + const ticks = this.ticks; + const index2 = ticks.findIndex((t) => t.value === value); + if (index2 >= 0) { + const opts = grid.setContext(this.getContext(index2)); + return opts.lineWidth; + } + return 0; + } + drawGrid(chartArea) { + const grid = this.options.grid; + const ctx = this.ctx; + const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea)); + let i, ilen; + const drawLine = (p1, p2, style) => { + if (!style.width || !style.color) { + return; + } + ctx.save(); + ctx.lineWidth = style.width; + ctx.strokeStyle = style.color; + ctx.setLineDash(style.borderDash || []); + ctx.lineDashOffset = style.borderDashOffset; + ctx.beginPath(); + ctx.moveTo(p1.x, p1.y); + ctx.lineTo(p2.x, p2.y); + ctx.stroke(); + ctx.restore(); + }; + if (grid.display) { + for (i = 0, ilen = items.length; i < ilen; ++i) { + const item = items[i]; + if (grid.drawOnChartArea) { + drawLine({ + x: item.x1, + y: item.y1 + }, { + x: item.x2, + y: item.y2 + }, item); + } + if (grid.drawTicks) { + drawLine({ + x: item.tx1, + y: item.ty1 + }, { + x: item.tx2, + y: item.ty2 + }, { + color: item.tickColor, + width: item.tickWidth, + borderDash: item.tickBorderDash, + borderDashOffset: item.tickBorderDashOffset + }); + } + } + } + } + drawBorder() { + const { chart, ctx, options: { border, grid } } = this; + const borderOpts = border.setContext(this.getContext()); + const axisWidth = border.display ? borderOpts.width : 0; + if (!axisWidth) { + return; + } + const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth; + const borderValue = this._borderValue; + let x1, x2, y1, y2; + if (this.isHorizontal()) { + x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2; + x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2; + y1 = y2 = borderValue; + } else { + y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2; + y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2; + x1 = x2 = borderValue; + } + ctx.save(); + ctx.lineWidth = borderOpts.width; + ctx.strokeStyle = borderOpts.color; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + ctx.restore(); + } + drawLabels(chartArea) { + const optionTicks = this.options.ticks; + if (!optionTicks.display) { + return; + } + const ctx = this.ctx; + const area = this._computeLabelArea(); + if (area) { + clipArea(ctx, area); + } + const items = this.getLabelItems(chartArea); + for (const item of items) { + const renderTextOptions = item.options; + const tickFont = item.font; + const label = item.label; + const y = item.textOffset; + renderText(ctx, label, 0, y, tickFont, renderTextOptions); + } + if (area) { + unclipArea(ctx); + } + } + drawTitle() { + const { ctx, options: { position, title, reverse } } = this; + if (!title.display) { + return; + } + const font = toFont(title.font); + const padding = toPadding(title.padding); + const align = title.align; + let offset = font.lineHeight / 2; + if (position === "bottom" || position === "center" || isObject(position)) { + offset += padding.bottom; + if (isArray(title.text)) { + offset += font.lineHeight * (title.text.length - 1); + } + } else { + offset += padding.top; + } + const { titleX, titleY, maxWidth, rotation } = titleArgs(this, offset, position, align); + renderText(ctx, title.text, 0, 0, font, { + color: title.color, + maxWidth, + rotation, + textAlign: titleAlign(align, position, reverse), + textBaseline: "middle", + translation: [ + titleX, + titleY + ] + }); + } + draw(chartArea) { + if (!this._isVisible()) { + return; + } + this.drawBackground(); + this.drawGrid(chartArea); + this.drawBorder(); + this.drawTitle(); + this.drawLabels(chartArea); + } + _layers() { + const opts = this.options; + const tz = opts.ticks && opts.ticks.z || 0; + const gz = valueOrDefault(opts.grid && opts.grid.z, -1); + const bz = valueOrDefault(opts.border && opts.border.z, 0); + if (!this._isVisible() || this.draw !== _Scale.prototype.draw) { + return [ + { + z: tz, + draw: (chartArea) => { + this.draw(chartArea); + } + } + ]; + } + return [ + { + z: gz, + draw: (chartArea) => { + this.drawBackground(); + this.drawGrid(chartArea); + this.drawTitle(); + } + }, + { + z: bz, + draw: () => { + this.drawBorder(); + } + }, + { + z: tz, + draw: (chartArea) => { + this.drawLabels(chartArea); + } + } + ]; + } + getMatchingVisibleMetas(type) { + const metas = this.chart.getSortedVisibleDatasetMetas(); + const axisID = this.axis + "AxisID"; + const result = []; + let i, ilen; + for (i = 0, ilen = metas.length; i < ilen; ++i) { + const meta = metas[i]; + if (meta[axisID] === this.id && (!type || meta.type === type)) { + result.push(meta); + } + } + return result; + } + _resolveTickFontOptions(index2) { + const opts = this.options.ticks.setContext(this.getContext(index2)); + return toFont(opts.font); + } + _maxDigits() { + const fontSize = this._resolveTickFontOptions(0).lineHeight; + return (this.isHorizontal() ? this.width : this.height) / fontSize; + } +}; +var TypedRegistry = class { + constructor(type, scope, override) { + this.type = type; + this.scope = scope; + this.override = override; + this.items = /* @__PURE__ */ Object.create(null); + } + isForType(type) { + return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype); + } + register(item) { + const proto = Object.getPrototypeOf(item); + let parentScope; + if (isIChartComponent(proto)) { + parentScope = this.register(proto); + } + const items = this.items; + const id = item.id; + const scope = this.scope + "." + id; + if (!id) { + throw new Error("class does not have id: " + item); + } + if (id in items) { + return scope; + } + items[id] = item; + registerDefaults(item, scope, parentScope); + if (this.override) { + defaults.override(item.id, item.overrides); + } + return scope; + } + get(id) { + return this.items[id]; + } + unregister(item) { + const items = this.items; + const id = item.id; + const scope = this.scope; + if (id in items) { + delete items[id]; + } + if (scope && id in defaults[scope]) { + delete defaults[scope][id]; + if (this.override) { + delete overrides[id]; + } + } + } +}; +function registerDefaults(item, scope, parentScope) { + const itemDefaults = merge(/* @__PURE__ */ Object.create(null), [ + parentScope ? defaults.get(parentScope) : {}, + defaults.get(scope), + item.defaults + ]); + defaults.set(scope, itemDefaults); + if (item.defaultRoutes) { + routeDefaults(scope, item.defaultRoutes); + } + if (item.descriptors) { + defaults.describe(scope, item.descriptors); + } +} +function routeDefaults(scope, routes) { + Object.keys(routes).forEach((property) => { + const propertyParts = property.split("."); + const sourceName = propertyParts.pop(); + const sourceScope = [ + scope + ].concat(propertyParts).join("."); + const parts = routes[property].split("."); + const targetName = parts.pop(); + const targetScope = parts.join("."); + defaults.route(sourceScope, sourceName, targetScope, targetName); + }); +} +function isIChartComponent(proto) { + return "id" in proto && "defaults" in proto; +} +var Registry = class { + constructor() { + this.controllers = new TypedRegistry(DatasetController, "datasets", true); + this.elements = new TypedRegistry(Element, "elements"); + this.plugins = new TypedRegistry(Object, "plugins"); + this.scales = new TypedRegistry(Scale, "scales"); + this._typedRegistries = [ + this.controllers, + this.scales, + this.elements + ]; + } + add(...args) { + this._each("register", args); + } + remove(...args) { + this._each("unregister", args); + } + addControllers(...args) { + this._each("register", args, this.controllers); + } + addElements(...args) { + this._each("register", args, this.elements); + } + addPlugins(...args) { + this._each("register", args, this.plugins); + } + addScales(...args) { + this._each("register", args, this.scales); + } + getController(id) { + return this._get(id, this.controllers, "controller"); + } + getElement(id) { + return this._get(id, this.elements, "element"); + } + getPlugin(id) { + return this._get(id, this.plugins, "plugin"); + } + getScale(id) { + return this._get(id, this.scales, "scale"); + } + removeControllers(...args) { + this._each("unregister", args, this.controllers); + } + removeElements(...args) { + this._each("unregister", args, this.elements); + } + removePlugins(...args) { + this._each("unregister", args, this.plugins); + } + removeScales(...args) { + this._each("unregister", args, this.scales); + } + _each(method, args, typedRegistry) { + [ + ...args + ].forEach((arg) => { + const reg = typedRegistry || this._getRegistryForType(arg); + if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) { + this._exec(method, reg, arg); + } else { + each(arg, (item) => { + const itemReg = typedRegistry || this._getRegistryForType(item); + this._exec(method, itemReg, item); + }); + } + }); + } + _exec(method, registry2, component) { + const camelMethod = _capitalize(method); + callback(component["before" + camelMethod], [], component); + registry2[method](component); + callback(component["after" + camelMethod], [], component); + } + _getRegistryForType(type) { + for (let i = 0; i < this._typedRegistries.length; i++) { + const reg = this._typedRegistries[i]; + if (reg.isForType(type)) { + return reg; + } + } + return this.plugins; + } + _get(id, typedRegistry, type) { + const item = typedRegistry.get(id); + if (item === void 0) { + throw new Error('"' + id + '" is not a registered ' + type + "."); + } + return item; + } +}; +var registry = new Registry(); +var PluginService = class { + constructor() { + this._init = []; + } + notify(chart, hook, args, filter) { + if (hook === "beforeInit") { + this._init = this._createDescriptors(chart, true); + this._notify(this._init, chart, "install"); + } + const descriptors2 = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart); + const result = this._notify(descriptors2, chart, hook, args); + if (hook === "afterDestroy") { + this._notify(descriptors2, chart, "stop"); + this._notify(this._init, chart, "uninstall"); + } + return result; + } + _notify(descriptors2, chart, hook, args) { + args = args || {}; + for (const descriptor of descriptors2) { + const plugin = descriptor.plugin; + const method = plugin[hook]; + const params = [ + chart, + args, + descriptor.options + ]; + if (callback(method, params, plugin) === false && args.cancelable) { + return false; + } + } + return true; + } + invalidate() { + if (!isNullOrUndef(this._cache)) { + this._oldCache = this._cache; + this._cache = void 0; + } + } + _descriptors(chart) { + if (this._cache) { + return this._cache; + } + const descriptors2 = this._cache = this._createDescriptors(chart); + this._notifyStateChanges(chart); + return descriptors2; + } + _createDescriptors(chart, all) { + const config = chart && chart.config; + const options = valueOrDefault(config.options && config.options.plugins, {}); + const plugins2 = allPlugins(config); + return options === false && !all ? [] : createDescriptors(chart, plugins2, options, all); + } + _notifyStateChanges(chart) { + const previousDescriptors = this._oldCache || []; + const descriptors2 = this._cache; + const diff = (a, b) => a.filter((x) => !b.some((y) => x.plugin.id === y.plugin.id)); + this._notify(diff(previousDescriptors, descriptors2), chart, "stop"); + this._notify(diff(descriptors2, previousDescriptors), chart, "start"); + } +}; +function allPlugins(config) { + const localIds = {}; + const plugins2 = []; + const keys = Object.keys(registry.plugins.items); + for (let i = 0; i < keys.length; i++) { + plugins2.push(registry.getPlugin(keys[i])); + } + const local = config.plugins || []; + for (let i = 0; i < local.length; i++) { + const plugin = local[i]; + if (plugins2.indexOf(plugin) === -1) { + plugins2.push(plugin); + localIds[plugin.id] = true; + } + } + return { + plugins: plugins2, + localIds + }; +} +function getOpts(options, all) { + if (!all && options === false) { + return null; + } + if (options === true) { + return {}; + } + return options; +} +function createDescriptors(chart, { plugins: plugins2, localIds }, options, all) { + const result = []; + const context = chart.getContext(); + for (const plugin of plugins2) { + const id = plugin.id; + const opts = getOpts(options[id], all); + if (opts === null) { + continue; + } + result.push({ + plugin, + options: pluginOpts(chart.config, { + plugin, + local: localIds[id] + }, opts, context) + }); + } + return result; +} +function pluginOpts(config, { plugin, local }, opts, context) { + const keys = config.pluginScopeKeys(plugin); + const scopes = config.getOptionScopes(opts, keys); + if (local && plugin.defaults) { + scopes.push(plugin.defaults); + } + return config.createResolver(scopes, context, [ + "" + ], { + scriptable: false, + indexable: false, + allKeys: true + }); +} +function getIndexAxis(type, options) { + const datasetDefaults = defaults.datasets[type] || {}; + const datasetOptions = (options.datasets || {})[type] || {}; + return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || "x"; +} +function getAxisFromDefaultScaleID(id, indexAxis) { + let axis = id; + if (id === "_index_") { + axis = indexAxis; + } else if (id === "_value_") { + axis = indexAxis === "x" ? "y" : "x"; + } + return axis; +} +function getDefaultScaleIDFromAxis(axis, indexAxis) { + return axis === indexAxis ? "_index_" : "_value_"; +} +function idMatchesAxis(id) { + if (id === "x" || id === "y" || id === "r") { + return id; + } +} +function axisFromPosition(position) { + if (position === "top" || position === "bottom") { + return "x"; + } + if (position === "left" || position === "right") { + return "y"; + } +} +function determineAxis(id, ...scaleOptions) { + if (idMatchesAxis(id)) { + return id; + } + for (const opts of scaleOptions) { + const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase()); + if (axis) { + return axis; + } + } + throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`); +} +function getAxisFromDataset(id, axis, dataset) { + if (dataset[axis + "AxisID"] === id) { + return { + axis + }; + } +} +function retrieveAxisFromDatasets(id, config) { + if (config.data && config.data.datasets) { + const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id); + if (boundDs.length) { + return getAxisFromDataset(id, "x", boundDs[0]) || getAxisFromDataset(id, "y", boundDs[0]); + } + } + return {}; +} +function mergeScaleConfig(config, options) { + const chartDefaults = overrides[config.type] || { + scales: {} + }; + const configScales = options.scales || {}; + const chartIndexAxis = getIndexAxis(config.type, options); + const scales2 = /* @__PURE__ */ Object.create(null); + Object.keys(configScales).forEach((id) => { + const scaleConf = configScales[id]; + if (!isObject(scaleConf)) { + return console.error(`Invalid scale configuration for scale: ${id}`); + } + if (scaleConf._proxy) { + return console.warn(`Ignoring resolver passed as options for scale: ${id}`); + } + const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]); + const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis); + const defaultScaleOptions = chartDefaults.scales || {}; + scales2[id] = mergeIf(/* @__PURE__ */ Object.create(null), [ + { + axis + }, + scaleConf, + defaultScaleOptions[axis], + defaultScaleOptions[defaultId] + ]); + }); + config.data.datasets.forEach((dataset) => { + const type = dataset.type || config.type; + const indexAxis = dataset.indexAxis || getIndexAxis(type, options); + const datasetDefaults = overrides[type] || {}; + const defaultScaleOptions = datasetDefaults.scales || {}; + Object.keys(defaultScaleOptions).forEach((defaultID) => { + const axis = getAxisFromDefaultScaleID(defaultID, indexAxis); + const id = dataset[axis + "AxisID"] || axis; + scales2[id] = scales2[id] || /* @__PURE__ */ Object.create(null); + mergeIf(scales2[id], [ + { + axis + }, + configScales[id], + defaultScaleOptions[defaultID] + ]); + }); + }); + Object.keys(scales2).forEach((key) => { + const scale = scales2[key]; + mergeIf(scale, [ + defaults.scales[scale.type], + defaults.scale + ]); + }); + return scales2; +} +function initOptions(config) { + const options = config.options || (config.options = {}); + options.plugins = valueOrDefault(options.plugins, {}); + options.scales = mergeScaleConfig(config, options); +} +function initData(data) { + data = data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; + return data; +} +function initConfig(config) { + config = config || {}; + config.data = initData(config.data); + initOptions(config); + return config; +} +var keyCache = /* @__PURE__ */ new Map(); +var keysCached = /* @__PURE__ */ new Set(); +function cachedKeys(cacheKey, generate) { + let keys = keyCache.get(cacheKey); + if (!keys) { + keys = generate(); + keyCache.set(cacheKey, keys); + keysCached.add(keys); + } + return keys; +} +var addIfFound = (set2, obj, key) => { + const opts = resolveObjectKey(obj, key); + if (opts !== void 0) { + set2.add(opts); + } +}; +var Config = class { + constructor(config) { + this._config = initConfig(config); + this._scopeCache = /* @__PURE__ */ new Map(); + this._resolverCache = /* @__PURE__ */ new Map(); + } + get platform() { + return this._config.platform; + } + get type() { + return this._config.type; + } + set type(type) { + this._config.type = type; + } + get data() { + return this._config.data; + } + set data(data) { + this._config.data = initData(data); + } + get options() { + return this._config.options; + } + set options(options) { + this._config.options = options; + } + get plugins() { + return this._config.plugins; + } + update() { + const config = this._config; + this.clearCache(); + initOptions(config); + } + clearCache() { + this._scopeCache.clear(); + this._resolverCache.clear(); + } + datasetScopeKeys(datasetType) { + return cachedKeys(datasetType, () => [ + [ + `datasets.${datasetType}`, + "" + ] + ]); + } + datasetAnimationScopeKeys(datasetType, transition) { + return cachedKeys(`${datasetType}.transition.${transition}`, () => [ + [ + `datasets.${datasetType}.transitions.${transition}`, + `transitions.${transition}` + ], + [ + `datasets.${datasetType}`, + "" + ] + ]); + } + datasetElementScopeKeys(datasetType, elementType) { + return cachedKeys(`${datasetType}-${elementType}`, () => [ + [ + `datasets.${datasetType}.elements.${elementType}`, + `datasets.${datasetType}`, + `elements.${elementType}`, + "" + ] + ]); + } + pluginScopeKeys(plugin) { + const id = plugin.id; + const type = this.type; + return cachedKeys(`${type}-plugin-${id}`, () => [ + [ + `plugins.${id}`, + ...plugin.additionalOptionScopes || [] + ] + ]); + } + _cachedScopes(mainScope, resetCache) { + const _scopeCache = this._scopeCache; + let cache = _scopeCache.get(mainScope); + if (!cache || resetCache) { + cache = /* @__PURE__ */ new Map(); + _scopeCache.set(mainScope, cache); + } + return cache; + } + getOptionScopes(mainScope, keyLists, resetCache) { + const { options, type } = this; + const cache = this._cachedScopes(mainScope, resetCache); + const cached = cache.get(keyLists); + if (cached) { + return cached; + } + const scopes = /* @__PURE__ */ new Set(); + keyLists.forEach((keys) => { + if (mainScope) { + scopes.add(mainScope); + keys.forEach((key) => addIfFound(scopes, mainScope, key)); + } + keys.forEach((key) => addIfFound(scopes, options, key)); + keys.forEach((key) => addIfFound(scopes, overrides[type] || {}, key)); + keys.forEach((key) => addIfFound(scopes, defaults, key)); + keys.forEach((key) => addIfFound(scopes, descriptors, key)); + }); + const array = Array.from(scopes); + if (array.length === 0) { + array.push(/* @__PURE__ */ Object.create(null)); + } + if (keysCached.has(keyLists)) { + cache.set(keyLists, array); + } + return array; + } + chartOptionScopes() { + const { options, type } = this; + return [ + options, + overrides[type] || {}, + defaults.datasets[type] || {}, + { + type + }, + defaults, + descriptors + ]; + } + resolveNamedOptions(scopes, names2, context, prefixes = [ + "" + ]) { + const result = { + $shared: true + }; + const { resolver, subPrefixes } = getResolver(this._resolverCache, scopes, prefixes); + let options = resolver; + if (needContext(resolver, names2)) { + result.$shared = false; + context = isFunction(context) ? context() : context; + const subResolver = this.createResolver(scopes, context, subPrefixes); + options = _attachContext(resolver, context, subResolver); + } + for (const prop of names2) { + result[prop] = options[prop]; + } + return result; + } + createResolver(scopes, context, prefixes = [ + "" + ], descriptorDefaults) { + const { resolver } = getResolver(this._resolverCache, scopes, prefixes); + return isObject(context) ? _attachContext(resolver, context, void 0, descriptorDefaults) : resolver; + } +}; +function getResolver(resolverCache, scopes, prefixes) { + let cache = resolverCache.get(scopes); + if (!cache) { + cache = /* @__PURE__ */ new Map(); + resolverCache.set(scopes, cache); + } + const cacheKey = prefixes.join(); + let cached = cache.get(cacheKey); + if (!cached) { + const resolver = _createResolver(scopes, prefixes); + cached = { + resolver, + subPrefixes: prefixes.filter((p) => !p.toLowerCase().includes("hover")) + }; + cache.set(cacheKey, cached); + } + return cached; +} +var hasFunction = (value) => isObject(value) && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key])); +function needContext(proxy, names2) { + const { isScriptable, isIndexable } = _descriptors(proxy); + for (const prop of names2) { + const scriptable = isScriptable(prop); + const indexable = isIndexable(prop); + const value = (indexable || scriptable) && proxy[prop]; + if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) { + return true; + } + } + return false; +} +var version = "4.5.0"; +var KNOWN_POSITIONS = [ + "top", + "bottom", + "left", + "right", + "chartArea" +]; +function positionIsHorizontal(position, axis) { + return position === "top" || position === "bottom" || KNOWN_POSITIONS.indexOf(position) === -1 && axis === "x"; +} +function compare2Level(l1, l2) { + return function(a, b) { + return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1]; + }; +} +function onAnimationsComplete(context) { + const chart = context.chart; + const animationOptions = chart.options.animation; + chart.notifyPlugins("afterRender"); + callback(animationOptions && animationOptions.onComplete, [ + context + ], chart); +} +function onAnimationProgress(context) { + const chart = context.chart; + const animationOptions = chart.options.animation; + callback(animationOptions && animationOptions.onProgress, [ + context + ], chart); +} +function getCanvas(item) { + if (_isDomSupported() && typeof item === "string") { + item = document.getElementById(item); + } else if (item && item.length) { + item = item[0]; + } + if (item && item.canvas) { + item = item.canvas; + } + return item; +} +var instances = {}; +var getChart = (key) => { + const canvas = getCanvas(key); + return Object.values(instances).filter((c) => c.canvas === canvas).pop(); +}; +function moveNumericKeys(obj, start, move) { + const keys = Object.keys(obj); + for (const key of keys) { + const intKey = +key; + if (intKey >= start) { + const value = obj[key]; + delete obj[key]; + if (move > 0 || intKey > start) { + obj[intKey + move] = value; + } + } + } +} +function determineLastEvent(e, lastEvent, inChartArea, isClick) { + if (!inChartArea || e.type === "mouseout") { + return null; + } + if (isClick) { + return lastEvent; + } + return e; +} +var Chart = class { + static register(...items) { + registry.add(...items); + invalidatePlugins(); + } + static unregister(...items) { + registry.remove(...items); + invalidatePlugins(); + } + constructor(item, userConfig) { + const config = this.config = new Config(userConfig); + const initialCanvas = getCanvas(item); + const existingChart = getChart(initialCanvas); + if (existingChart) { + throw new Error("Canvas is already in use. Chart with ID '" + existingChart.id + "' must be destroyed before the canvas with ID '" + existingChart.canvas.id + "' can be reused."); + } + const options = config.createResolver(config.chartOptionScopes(), this.getContext()); + this.platform = new (config.platform || _detectPlatform(initialCanvas))(); + this.platform.updateConfig(config); + const context = this.platform.acquireContext(initialCanvas, options.aspectRatio); + const canvas = context && context.canvas; + const height = canvas && canvas.height; + const width = canvas && canvas.width; + this.id = uid(); + this.ctx = context; + this.canvas = canvas; + this.width = width; + this.height = height; + this._options = options; + this._aspectRatio = this.aspectRatio; + this._layers = []; + this._metasets = []; + this._stacks = void 0; + this.boxes = []; + this.currentDevicePixelRatio = void 0; + this.chartArea = void 0; + this._active = []; + this._lastEvent = void 0; + this._listeners = {}; + this._responsiveListeners = void 0; + this._sortedMetasets = []; + this.scales = {}; + this._plugins = new PluginService(); + this.$proxies = {}; + this._hiddenIndices = {}; + this.attached = false; + this._animationsDisabled = void 0; + this.$context = void 0; + this._doResize = debounce((mode) => this.update(mode), options.resizeDelay || 0); + this._dataChanges = []; + instances[this.id] = this; + if (!context || !canvas) { + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } + animator.listen(this, "complete", onAnimationsComplete); + animator.listen(this, "progress", onAnimationProgress); + this._initialize(); + if (this.attached) { + this.update(); + } + } + get aspectRatio() { + const { options: { aspectRatio, maintainAspectRatio }, width, height, _aspectRatio } = this; + if (!isNullOrUndef(aspectRatio)) { + return aspectRatio; + } + if (maintainAspectRatio && _aspectRatio) { + return _aspectRatio; + } + return height ? width / height : null; + } + get data() { + return this.config.data; + } + set data(data) { + this.config.data = data; + } + get options() { + return this._options; + } + set options(options) { + this.config.options = options; + } + get registry() { + return registry; + } + _initialize() { + this.notifyPlugins("beforeInit"); + if (this.options.responsive) { + this.resize(); + } else { + retinaScale(this, this.options.devicePixelRatio); + } + this.bindEvents(); + this.notifyPlugins("afterInit"); + return this; + } + clear() { + clearCanvas(this.canvas, this.ctx); + return this; + } + stop() { + animator.stop(this); + return this; + } + resize(width, height) { + if (!animator.running(this)) { + this._resize(width, height); + } else { + this._resizeBeforeDraw = { + width, + height + }; + } + } + _resize(width, height) { + const options = this.options; + const canvas = this.canvas; + const aspectRatio = options.maintainAspectRatio && this.aspectRatio; + const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio); + const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio(); + const mode = this.width ? "resize" : "attach"; + this.width = newSize.width; + this.height = newSize.height; + this._aspectRatio = this.aspectRatio; + if (!retinaScale(this, newRatio, true)) { + return; + } + this.notifyPlugins("resize", { + size: newSize + }); + callback(options.onResize, [ + this, + newSize + ], this); + if (this.attached) { + if (this._doResize(mode)) { + this.render(); + } + } + } + ensureScalesHaveIDs() { + const options = this.options; + const scalesOptions = options.scales || {}; + each(scalesOptions, (axisOptions, axisID) => { + axisOptions.id = axisID; + }); + } + buildOrUpdateScales() { + const options = this.options; + const scaleOpts = options.scales; + const scales2 = this.scales; + const updated = Object.keys(scales2).reduce((obj, id) => { + obj[id] = false; + return obj; + }, {}); + let items = []; + if (scaleOpts) { + items = items.concat(Object.keys(scaleOpts).map((id) => { + const scaleOptions = scaleOpts[id]; + const axis = determineAxis(id, scaleOptions); + const isRadial = axis === "r"; + const isHorizontal = axis === "x"; + return { + options: scaleOptions, + dposition: isRadial ? "chartArea" : isHorizontal ? "bottom" : "left", + dtype: isRadial ? "radialLinear" : isHorizontal ? "category" : "linear" + }; + })); + } + each(items, (item) => { + const scaleOptions = item.options; + const id = scaleOptions.id; + const axis = determineAxis(id, scaleOptions); + const scaleType = valueOrDefault(scaleOptions.type, item.dtype); + if (scaleOptions.position === void 0 || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } + updated[id] = true; + let scale = null; + if (id in scales2 && scales2[id].type === scaleType) { + scale = scales2[id]; + } else { + const scaleClass = registry.getScale(scaleType); + scale = new scaleClass({ + id, + type: scaleType, + ctx: this.ctx, + chart: this + }); + scales2[scale.id] = scale; + } + scale.init(scaleOptions, options); + }); + each(updated, (hasUpdated, id) => { + if (!hasUpdated) { + delete scales2[id]; + } + }); + each(scales2, (scale) => { + layouts.configure(this, scale, scale.options); + layouts.addBox(this, scale); + }); + } + _updateMetasets() { + const metasets = this._metasets; + const numData = this.data.datasets.length; + const numMeta = metasets.length; + metasets.sort((a, b) => a.index - b.index); + if (numMeta > numData) { + for (let i = numData; i < numMeta; ++i) { + this._destroyDatasetMeta(i); + } + metasets.splice(numData, numMeta - numData); + } + this._sortedMetasets = metasets.slice(0).sort(compare2Level("order", "index")); + } + _removeUnreferencedMetasets() { + const { _metasets: metasets, data: { datasets } } = this; + if (metasets.length > datasets.length) { + delete this._stacks; + } + metasets.forEach((meta, index2) => { + if (datasets.filter((x) => x === meta._dataset).length === 0) { + this._destroyDatasetMeta(index2); + } + }); + } + buildOrUpdateControllers() { + const newControllers = []; + const datasets = this.data.datasets; + let i, ilen; + this._removeUnreferencedMetasets(); + for (i = 0, ilen = datasets.length; i < ilen; i++) { + const dataset = datasets[i]; + let meta = this.getDatasetMeta(i); + const type = dataset.type || this.config.type; + if (meta.type && meta.type !== type) { + this._destroyDatasetMeta(i); + meta = this.getDatasetMeta(i); + } + meta.type = type; + meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options); + meta.order = dataset.order || 0; + meta.index = i; + meta.label = "" + dataset.label; + meta.visible = this.isDatasetVisible(i); + if (meta.controller) { + meta.controller.updateIndex(i); + meta.controller.linkScales(); + } else { + const ControllerClass = registry.getController(type); + const { datasetElementType, dataElementType } = defaults.datasets[type]; + Object.assign(ControllerClass, { + dataElementType: registry.getElement(dataElementType), + datasetElementType: datasetElementType && registry.getElement(datasetElementType) + }); + meta.controller = new ControllerClass(this, i); + newControllers.push(meta.controller); + } + } + this._updateMetasets(); + return newControllers; + } + _resetElements() { + each(this.data.datasets, (dataset, datasetIndex) => { + this.getDatasetMeta(datasetIndex).controller.reset(); + }, this); + } + reset() { + this._resetElements(); + this.notifyPlugins("reset"); + } + update(mode) { + const config = this.config; + config.update(); + const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext()); + const animsDisabled = this._animationsDisabled = !options.animation; + this._updateScales(); + this._checkEventBindings(); + this._updateHiddenIndices(); + this._plugins.invalidate(); + if (this.notifyPlugins("beforeUpdate", { + mode, + cancelable: true + }) === false) { + return; + } + const newControllers = this.buildOrUpdateControllers(); + this.notifyPlugins("beforeElementsUpdate"); + let minPadding = 0; + for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) { + const { controller } = this.getDatasetMeta(i); + const reset = !animsDisabled && newControllers.indexOf(controller) === -1; + controller.buildOrUpdateElements(reset); + minPadding = Math.max(+controller.getMaxOverflow(), minPadding); + } + minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0; + this._updateLayout(minPadding); + if (!animsDisabled) { + each(newControllers, (controller) => { + controller.reset(); + }); + } + this._updateDatasets(mode); + this.notifyPlugins("afterUpdate", { + mode + }); + this._layers.sort(compare2Level("z", "_idx")); + const { _active, _lastEvent } = this; + if (_lastEvent) { + this._eventHandler(_lastEvent, true); + } else if (_active.length) { + this._updateHoverStyles(_active, _active, true); + } + this.render(); + } + _updateScales() { + each(this.scales, (scale) => { + layouts.removeBox(this, scale); + }); + this.ensureScalesHaveIDs(); + this.buildOrUpdateScales(); + } + _checkEventBindings() { + const options = this.options; + const existingEvents = new Set(Object.keys(this._listeners)); + const newEvents = new Set(options.events); + if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) { + this.unbindEvents(); + this.bindEvents(); + } + } + _updateHiddenIndices() { + const { _hiddenIndices } = this; + const changes = this._getUniformDataChanges() || []; + for (const { method, start, count } of changes) { + const move = method === "_removeElements" ? -count : count; + moveNumericKeys(_hiddenIndices, start, move); + } + } + _getUniformDataChanges() { + const _dataChanges = this._dataChanges; + if (!_dataChanges || !_dataChanges.length) { + return; + } + this._dataChanges = []; + const datasetCount = this.data.datasets.length; + const makeSet = (idx) => new Set(_dataChanges.filter((c) => c[0] === idx).map((c, i) => i + "," + c.splice(1).join(","))); + const changeSet = makeSet(0); + for (let i = 1; i < datasetCount; i++) { + if (!setsEqual(changeSet, makeSet(i))) { + return; + } + } + return Array.from(changeSet).map((c) => c.split(",")).map((a) => ({ + method: a[1], + start: +a[2], + count: +a[3] + })); + } + _updateLayout(minPadding) { + if (this.notifyPlugins("beforeLayout", { + cancelable: true + }) === false) { + return; + } + layouts.update(this, this.width, this.height, minPadding); + const area = this.chartArea; + const noArea = area.width <= 0 || area.height <= 0; + this._layers = []; + each(this.boxes, (box) => { + if (noArea && box.position === "chartArea") { + return; + } + if (box.configure) { + box.configure(); + } + this._layers.push(...box._layers()); + }, this); + this._layers.forEach((item, index2) => { + item._idx = index2; + }); + this.notifyPlugins("afterLayout"); + } + _updateDatasets(mode) { + if (this.notifyPlugins("beforeDatasetsUpdate", { + mode, + cancelable: true + }) === false) { + return; + } + for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this.getDatasetMeta(i).controller.configure(); + } + for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this._updateDataset(i, isFunction(mode) ? mode({ + datasetIndex: i + }) : mode); + } + this.notifyPlugins("afterDatasetsUpdate", { + mode + }); + } + _updateDataset(index2, mode) { + const meta = this.getDatasetMeta(index2); + const args = { + meta, + index: index2, + mode, + cancelable: true + }; + if (this.notifyPlugins("beforeDatasetUpdate", args) === false) { + return; + } + meta.controller._update(mode); + args.cancelable = false; + this.notifyPlugins("afterDatasetUpdate", args); + } + render() { + if (this.notifyPlugins("beforeRender", { + cancelable: true + }) === false) { + return; + } + if (animator.has(this)) { + if (this.attached && !animator.running(this)) { + animator.start(this); + } + } else { + this.draw(); + onAnimationsComplete({ + chart: this + }); + } + } + draw() { + let i; + if (this._resizeBeforeDraw) { + const { width, height } = this._resizeBeforeDraw; + this._resizeBeforeDraw = null; + this._resize(width, height); + } + this.clear(); + if (this.width <= 0 || this.height <= 0) { + return; + } + if (this.notifyPlugins("beforeDraw", { + cancelable: true + }) === false) { + return; + } + const layers = this._layers; + for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { + layers[i].draw(this.chartArea); + } + this._drawDatasets(); + for (; i < layers.length; ++i) { + layers[i].draw(this.chartArea); + } + this.notifyPlugins("afterDraw"); + } + _getSortedDatasetMetas(filterVisible) { + const metasets = this._sortedMetasets; + const result = []; + let i, ilen; + for (i = 0, ilen = metasets.length; i < ilen; ++i) { + const meta = metasets[i]; + if (!filterVisible || meta.visible) { + result.push(meta); + } + } + return result; + } + getSortedVisibleDatasetMetas() { + return this._getSortedDatasetMetas(true); + } + _drawDatasets() { + if (this.notifyPlugins("beforeDatasetsDraw", { + cancelable: true + }) === false) { + return; + } + const metasets = this.getSortedVisibleDatasetMetas(); + for (let i = metasets.length - 1; i >= 0; --i) { + this._drawDataset(metasets[i]); + } + this.notifyPlugins("afterDatasetsDraw"); + } + _drawDataset(meta) { + const ctx = this.ctx; + const args = { + meta, + index: meta.index, + cancelable: true + }; + const clip = getDatasetClipArea(this, meta); + if (this.notifyPlugins("beforeDatasetDraw", args) === false) { + return; + } + if (clip) { + clipArea(ctx, clip); + } + meta.controller.draw(); + if (clip) { + unclipArea(ctx); + } + args.cancelable = false; + this.notifyPlugins("afterDatasetDraw", args); + } + isPointInArea(point) { + return _isPointInArea(point, this.chartArea, this._minPadding); + } + getElementsAtEventForMode(e, mode, options, useFinalPosition) { + const method = Interaction.modes[mode]; + if (typeof method === "function") { + return method(this, e, options, useFinalPosition); + } + return []; + } + getDatasetMeta(datasetIndex) { + const dataset = this.data.datasets[datasetIndex]; + const metasets = this._metasets; + let meta = metasets.filter((x) => x && x._dataset === dataset).pop(); + if (!meta) { + meta = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, + xAxisID: null, + yAxisID: null, + order: dataset && dataset.order || 0, + index: datasetIndex, + _dataset: dataset, + _parsed: [], + _sorted: false + }; + metasets.push(meta); + } + return meta; + } + getContext() { + return this.$context || (this.$context = createContext(null, { + chart: this, + type: "chart" + })); + } + getVisibleDatasetCount() { + return this.getSortedVisibleDatasetMetas().length; + } + isDatasetVisible(datasetIndex) { + const dataset = this.data.datasets[datasetIndex]; + if (!dataset) { + return false; + } + const meta = this.getDatasetMeta(datasetIndex); + return typeof meta.hidden === "boolean" ? !meta.hidden : !dataset.hidden; + } + setDatasetVisibility(datasetIndex, visible) { + const meta = this.getDatasetMeta(datasetIndex); + meta.hidden = !visible; + } + toggleDataVisibility(index2) { + this._hiddenIndices[index2] = !this._hiddenIndices[index2]; + } + getDataVisibility(index2) { + return !this._hiddenIndices[index2]; + } + _updateVisibility(datasetIndex, dataIndex, visible) { + const mode = visible ? "show" : "hide"; + const meta = this.getDatasetMeta(datasetIndex); + const anims = meta.controller._resolveAnimations(void 0, mode); + if (defined(dataIndex)) { + meta.data[dataIndex].hidden = !visible; + this.update(); + } else { + this.setDatasetVisibility(datasetIndex, visible); + anims.update(meta, { + visible + }); + this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : void 0); + } + } + hide(datasetIndex, dataIndex) { + this._updateVisibility(datasetIndex, dataIndex, false); + } + show(datasetIndex, dataIndex) { + this._updateVisibility(datasetIndex, dataIndex, true); + } + _destroyDatasetMeta(datasetIndex) { + const meta = this._metasets[datasetIndex]; + if (meta && meta.controller) { + meta.controller._destroy(); + } + delete this._metasets[datasetIndex]; + } + _stop() { + let i, ilen; + this.stop(); + animator.remove(this); + for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + this._destroyDatasetMeta(i); + } + } + destroy() { + this.notifyPlugins("beforeDestroy"); + const { canvas, ctx } = this; + this._stop(); + this.config.clearCache(); + if (canvas) { + this.unbindEvents(); + clearCanvas(canvas, ctx); + this.platform.releaseContext(ctx); + this.canvas = null; + this.ctx = null; + } + delete instances[this.id]; + this.notifyPlugins("afterDestroy"); + } + toBase64Image(...args) { + return this.canvas.toDataURL(...args); + } + bindEvents() { + this.bindUserEvents(); + if (this.options.responsive) { + this.bindResponsiveEvents(); + } else { + this.attached = true; + } + } + bindUserEvents() { + const listeners = this._listeners; + const platform = this.platform; + const _add = (type, listener2) => { + platform.addEventListener(this, type, listener2); + listeners[type] = listener2; + }; + const listener = (e, x, y) => { + e.offsetX = x; + e.offsetY = y; + this._eventHandler(e); + }; + each(this.options.events, (type) => _add(type, listener)); + } + bindResponsiveEvents() { + if (!this._responsiveListeners) { + this._responsiveListeners = {}; + } + const listeners = this._responsiveListeners; + const platform = this.platform; + const _add = (type, listener2) => { + platform.addEventListener(this, type, listener2); + listeners[type] = listener2; + }; + const _remove = (type, listener2) => { + if (listeners[type]) { + platform.removeEventListener(this, type, listener2); + delete listeners[type]; + } + }; + const listener = (width, height) => { + if (this.canvas) { + this.resize(width, height); + } + }; + let detached; + const attached = () => { + _remove("attach", attached); + this.attached = true; + this.resize(); + _add("resize", listener); + _add("detach", detached); + }; + detached = () => { + this.attached = false; + _remove("resize", listener); + this._stop(); + this._resize(0, 0); + _add("attach", attached); + }; + if (platform.isAttached(this.canvas)) { + attached(); + } else { + detached(); + } + } + unbindEvents() { + each(this._listeners, (listener, type) => { + this.platform.removeEventListener(this, type, listener); + }); + this._listeners = {}; + each(this._responsiveListeners, (listener, type) => { + this.platform.removeEventListener(this, type, listener); + }); + this._responsiveListeners = void 0; + } + updateHoverStyle(items, mode, enabled) { + const prefix = enabled ? "set" : "remove"; + let meta, item, i, ilen; + if (mode === "dataset") { + meta = this.getDatasetMeta(items[0].datasetIndex); + meta.controller["_" + prefix + "DatasetHoverStyle"](); + } + for (i = 0, ilen = items.length; i < ilen; ++i) { + item = items[i]; + const controller = item && this.getDatasetMeta(item.datasetIndex).controller; + if (controller) { + controller[prefix + "HoverStyle"](item.element, item.datasetIndex, item.index); + } + } + } + getActiveElements() { + return this._active || []; + } + setActiveElements(activeElements) { + const lastActive = this._active || []; + const active = activeElements.map(({ datasetIndex, index: index2 }) => { + const meta = this.getDatasetMeta(datasetIndex); + if (!meta) { + throw new Error("No dataset found at index " + datasetIndex); + } + return { + datasetIndex, + element: meta.data[index2], + index: index2 + }; + }); + const changed = !_elementsEqual(active, lastActive); + if (changed) { + this._active = active; + this._lastEvent = null; + this._updateHoverStyles(active, lastActive); + } + } + notifyPlugins(hook, args, filter) { + return this._plugins.notify(this, hook, args, filter); + } + isPluginEnabled(pluginId) { + return this._plugins._cache.filter((p) => p.plugin.id === pluginId).length === 1; + } + _updateHoverStyles(active, lastActive, replay) { + const hoverOptions = this.options.hover; + const diff = (a, b) => a.filter((x) => !b.some((y) => x.datasetIndex === y.datasetIndex && x.index === y.index)); + const deactivated = diff(lastActive, active); + const activated = replay ? active : diff(active, lastActive); + if (deactivated.length) { + this.updateHoverStyle(deactivated, hoverOptions.mode, false); + } + if (activated.length && hoverOptions.mode) { + this.updateHoverStyle(activated, hoverOptions.mode, true); + } + } + _eventHandler(e, replay) { + const args = { + event: e, + replay, + cancelable: true, + inChartArea: this.isPointInArea(e) + }; + const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type); + if (this.notifyPlugins("beforeEvent", args, eventFilter) === false) { + return; + } + const changed = this._handleEvent(e, replay, args.inChartArea); + args.cancelable = false; + this.notifyPlugins("afterEvent", args, eventFilter); + if (changed || args.changed) { + this.render(); + } + return this; + } + _handleEvent(e, replay, inChartArea) { + const { _active: lastActive = [], options } = this; + const useFinalPosition = replay; + const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition); + const isClick = _isClickEvent(e); + const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick); + if (inChartArea) { + this._lastEvent = null; + callback(options.onHover, [ + e, + active, + this + ], this); + if (isClick) { + callback(options.onClick, [ + e, + active, + this + ], this); + } + } + const changed = !_elementsEqual(active, lastActive); + if (changed || replay) { + this._active = active; + this._updateHoverStyles(active, lastActive, replay); + } + this._lastEvent = lastEvent; + return changed; + } + _getActiveElements(e, lastActive, inChartArea, useFinalPosition) { + if (e.type === "mouseout") { + return []; + } + if (!inChartArea) { + return lastActive; + } + const hoverOptions = this.options.hover; + return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); + } +}; +__publicField(Chart, "defaults", defaults); +__publicField(Chart, "instances", instances); +__publicField(Chart, "overrides", overrides); +__publicField(Chart, "registry", registry); +__publicField(Chart, "version", version); +__publicField(Chart, "getChart", getChart); +function invalidatePlugins() { + return each(Chart.instances, (chart) => chart._plugins.invalidate()); +} +function clipSelf(ctx, element, endAngle) { + const { startAngle, x, y, outerRadius, innerRadius, options } = element; + const { borderWidth, borderJoinStyle } = options; + const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle)); + ctx.beginPath(); + ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2); + if (innerRadius > 0) { + const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle)); + ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true); + } else { + const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle)); + if (borderJoinStyle === "round") { + ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true); + } else if (borderJoinStyle === "bevel") { + const r = 2 * clipWidth * clipWidth; + const endX = -r * Math.cos(endAngle + PI / 2) + x; + const endY = -r * Math.sin(endAngle + PI / 2) + y; + const startX = r * Math.cos(startAngle + PI / 2) + x; + const startY = r * Math.sin(startAngle + PI / 2) + y; + ctx.lineTo(endX, endY); + ctx.lineTo(startX, startY); + } + } + ctx.closePath(); + ctx.moveTo(0, 0); + ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.clip("evenodd"); +} +function clipArc(ctx, element, endAngle) { + const { startAngle, pixelMargin, x, y, outerRadius, innerRadius } = element; + let angleMargin = pixelMargin / outerRadius; + ctx.beginPath(); + ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin); + if (innerRadius > pixelMargin) { + angleMargin = pixelMargin / innerRadius; + ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true); + } else { + ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI); + } + ctx.closePath(); + ctx.clip(); +} +function toRadiusCorners(value) { + return _readValueToProps(value, [ + "outerStart", + "outerEnd", + "innerStart", + "innerEnd" + ]); +} +function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) { + const o = toRadiusCorners(arc.options.borderRadius); + const halfThickness = (outerRadius - innerRadius) / 2; + const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); + const computeOuterLimit = (val) => { + const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2; + return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit)); + }; + return { + outerStart: computeOuterLimit(o.outerStart), + outerEnd: computeOuterLimit(o.outerEnd), + innerStart: _limitValue(o.innerStart, 0, innerLimit), + innerEnd: _limitValue(o.innerEnd, 0, innerLimit) + }; +} +function rThetaToXY(r, theta, x, y) { + return { + x: x + r * Math.cos(theta), + y: y + r * Math.sin(theta) + }; +} +function pathArc(ctx, element, offset, spacing, end, circular) { + const { x, y, startAngle: start, pixelMargin, innerRadius: innerR } = element; + const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0); + const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0; + let spacingOffset = 0; + const alpha2 = end - start; + if (spacing) { + const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0; + const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0; + const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2; + const adjustedAngle = avNogSpacingRadius !== 0 ? alpha2 * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha2; + spacingOffset = (alpha2 - adjustedAngle) / 2; + } + const beta = Math.max(1e-3, alpha2 * outerRadius - offset / PI) / outerRadius; + const angleOffset = (alpha2 - beta) / 2; + const startAngle = start + angleOffset + spacingOffset; + const endAngle = end - angleOffset - spacingOffset; + const { outerStart, outerEnd, innerStart, innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle); + const outerStartAdjustedRadius = outerRadius - outerStart; + const outerEndAdjustedRadius = outerRadius - outerEnd; + const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius; + const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius; + const innerStartAdjustedRadius = innerRadius + innerStart; + const innerEndAdjustedRadius = innerRadius + innerEnd; + const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius; + const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius; + ctx.beginPath(); + if (circular) { + const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2; + ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle); + ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle); + if (outerEnd > 0) { + const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI); + } + const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y); + ctx.lineTo(p4.x, p4.y); + if (innerEnd > 0) { + const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI); + } + const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2; + ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true); + ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true); + if (innerStart > 0) { + const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI); + } + const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y); + ctx.lineTo(p8.x, p8.y); + if (outerStart > 0) { + const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y); + ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle); + } + } else { + ctx.moveTo(x, y); + const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x; + const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y; + ctx.lineTo(outerStartX, outerStartY); + const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x; + const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y; + ctx.lineTo(outerEndX, outerEndY); + } + ctx.closePath(); +} +function drawArc(ctx, element, offset, spacing, circular) { + const { fullCircles, startAngle, circumference } = element; + let endAngle = element.endAngle; + if (fullCircles) { + pathArc(ctx, element, offset, spacing, endAngle, circular); + for (let i = 0; i < fullCircles; ++i) { + ctx.fill(); + } + if (!isNaN(circumference)) { + endAngle = startAngle + (circumference % TAU || TAU); + } + } + pathArc(ctx, element, offset, spacing, endAngle, circular); + ctx.fill(); + return endAngle; +} +function drawBorder(ctx, element, offset, spacing, circular) { + const { fullCircles, startAngle, circumference, options } = element; + const { borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius } = options; + const inner = options.borderAlign === "inner"; + if (!borderWidth) { + return; + } + ctx.setLineDash(borderDash || []); + ctx.lineDashOffset = borderDashOffset; + if (inner) { + ctx.lineWidth = borderWidth * 2; + ctx.lineJoin = borderJoinStyle || "round"; + } else { + ctx.lineWidth = borderWidth; + ctx.lineJoin = borderJoinStyle || "bevel"; + } + let endAngle = element.endAngle; + if (fullCircles) { + pathArc(ctx, element, offset, spacing, endAngle, circular); + for (let i = 0; i < fullCircles; ++i) { + ctx.stroke(); + } + if (!isNaN(circumference)) { + endAngle = startAngle + (circumference % TAU || TAU); + } + } + if (inner) { + clipArc(ctx, element, endAngle); + } + if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== "miter") { + clipSelf(ctx, element, endAngle); + } + if (!fullCircles) { + pathArc(ctx, element, offset, spacing, endAngle, circular); + ctx.stroke(); + } +} +var ArcElement = class extends Element { + constructor(cfg) { + super(); + __publicField(this, "circumference"); + __publicField(this, "endAngle"); + __publicField(this, "fullCircles"); + __publicField(this, "innerRadius"); + __publicField(this, "outerRadius"); + __publicField(this, "pixelMargin"); + __publicField(this, "startAngle"); + this.options = void 0; + this.circumference = void 0; + this.startAngle = void 0; + this.endAngle = void 0; + this.innerRadius = void 0; + this.outerRadius = void 0; + this.pixelMargin = 0; + this.fullCircles = 0; + if (cfg) { + Object.assign(this, cfg); + } + } + inRange(chartX, chartY, useFinalPosition) { + const point = this.getProps([ + "x", + "y" + ], useFinalPosition); + const { angle, distance } = getAngleFromPoint(point, { + x: chartX, + y: chartY + }); + const { startAngle, endAngle, innerRadius, outerRadius, circumference } = this.getProps([ + "startAngle", + "endAngle", + "innerRadius", + "outerRadius", + "circumference" + ], useFinalPosition); + const rAdjust = (this.options.spacing + this.options.borderWidth) / 2; + const _circumference = valueOrDefault(circumference, endAngle - startAngle); + const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle; + const betweenAngles = _circumference >= TAU || nonZeroBetween; + const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust); + return betweenAngles && withinRadius; + } + getCenterPoint(useFinalPosition) { + const { x, y, startAngle, endAngle, innerRadius, outerRadius } = this.getProps([ + "x", + "y", + "startAngle", + "endAngle", + "innerRadius", + "outerRadius" + ], useFinalPosition); + const { offset, spacing } = this.options; + const halfAngle = (startAngle + endAngle) / 2; + const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2; + return { + x: x + Math.cos(halfAngle) * halfRadius, + y: y + Math.sin(halfAngle) * halfRadius + }; + } + tooltipPosition(useFinalPosition) { + return this.getCenterPoint(useFinalPosition); + } + draw(ctx) { + const { options, circumference } = this; + const offset = (options.offset || 0) / 4; + const spacing = (options.spacing || 0) / 2; + const circular = options.circular; + this.pixelMargin = options.borderAlign === "inner" ? 0.33 : 0; + this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0; + if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) { + return; + } + ctx.save(); + const halfAngle = (this.startAngle + this.endAngle) / 2; + ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset); + const fix = 1 - Math.sin(Math.min(PI, circumference || 0)); + const radiusOffset = offset * fix; + ctx.fillStyle = options.backgroundColor; + ctx.strokeStyle = options.borderColor; + drawArc(ctx, this, radiusOffset, spacing, circular); + drawBorder(ctx, this, radiusOffset, spacing, circular); + ctx.restore(); + } +}; +__publicField(ArcElement, "id", "arc"); +__publicField(ArcElement, "defaults", { + borderAlign: "center", + borderColor: "#fff", + borderDash: [], + borderDashOffset: 0, + borderJoinStyle: void 0, + borderRadius: 0, + borderWidth: 2, + offset: 0, + spacing: 0, + angle: void 0, + circular: true, + selfJoin: false +}); +__publicField(ArcElement, "defaultRoutes", { + backgroundColor: "backgroundColor" +}); +__publicField(ArcElement, "descriptors", { + _scriptable: true, + _indexable: (name) => name !== "borderDash" +}); +function setStyle(ctx, options, style = options) { + ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle); + ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash)); + ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset); + ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle); + ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth); + ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor); +} +function lineTo(ctx, previous, target) { + ctx.lineTo(target.x, target.y); +} +function getLineMethod(options) { + if (options.stepped) { + return _steppedLineTo; + } + if (options.tension || options.cubicInterpolationMode === "monotone") { + return _bezierCurveTo; + } + return lineTo; +} +function pathVars(points, segment, params = {}) { + const count = points.length; + const { start: paramsStart = 0, end: paramsEnd = count - 1 } = params; + const { start: segmentStart, end: segmentEnd } = segment; + const start = Math.max(paramsStart, segmentStart); + const end = Math.min(paramsEnd, segmentEnd); + const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd; + return { + count, + start, + loop: segment.loop, + ilen: end < start && !outside ? count + end - start : end - start + }; +} +function pathSegment(ctx, line, segment, params) { + const { points, options } = line; + const { count, start, loop, ilen } = pathVars(points, segment, params); + const lineMethod = getLineMethod(options); + let { move = true, reverse } = params || {}; + let i, point, prev; + for (i = 0; i <= ilen; ++i) { + point = points[(start + (reverse ? ilen - i : i)) % count]; + if (point.skip) { + continue; + } else if (move) { + ctx.moveTo(point.x, point.y); + move = false; + } else { + lineMethod(ctx, prev, point, reverse, options.stepped); + } + prev = point; + } + if (loop) { + point = points[(start + (reverse ? ilen : 0)) % count]; + lineMethod(ctx, prev, point, reverse, options.stepped); + } + return !!loop; +} +function fastPathSegment(ctx, line, segment, params) { + const points = line.points; + const { count, start, ilen } = pathVars(points, segment, params); + const { move = true, reverse } = params || {}; + let avgX = 0; + let countX = 0; + let i, point, prevX, minY, maxY, lastY; + const pointIndex = (index2) => (start + (reverse ? ilen - index2 : index2)) % count; + const drawX = () => { + if (minY !== maxY) { + ctx.lineTo(avgX, maxY); + ctx.lineTo(avgX, minY); + ctx.lineTo(avgX, lastY); + } + }; + if (move) { + point = points[pointIndex(0)]; + ctx.moveTo(point.x, point.y); + } + for (i = 0; i <= ilen; ++i) { + point = points[pointIndex(i)]; + if (point.skip) { + continue; + } + const x = point.x; + const y = point.y; + const truncX = x | 0; + if (truncX === prevX) { + if (y < minY) { + minY = y; + } else if (y > maxY) { + maxY = y; + } + avgX = (countX * avgX + x) / ++countX; + } else { + drawX(); + ctx.lineTo(x, y); + prevX = truncX; + countX = 0; + minY = maxY = y; + } + lastY = y; + } + drawX(); +} +function _getSegmentMethod(line) { + const opts = line.options; + const borderDash = opts.borderDash && opts.borderDash.length; + const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== "monotone" && !opts.stepped && !borderDash; + return useFastPath ? fastPathSegment : pathSegment; +} +function _getInterpolationMethod(options) { + if (options.stepped) { + return _steppedInterpolation; + } + if (options.tension || options.cubicInterpolationMode === "monotone") { + return _bezierInterpolation; + } + return _pointInLine; +} +function strokePathWithCache(ctx, line, start, count) { + let path = line._path; + if (!path) { + path = line._path = new Path2D(); + if (line.path(path, start, count)) { + path.closePath(); + } + } + setStyle(ctx, line.options); + ctx.stroke(path); +} +function strokePathDirect(ctx, line, start, count) { + const { segments, options } = line; + const segmentMethod = _getSegmentMethod(line); + for (const segment of segments) { + setStyle(ctx, options, segment.style); + ctx.beginPath(); + if (segmentMethod(ctx, line, segment, { + start, + end: start + count - 1 + })) { + ctx.closePath(); + } + ctx.stroke(); + } +} +var usePath2D = typeof Path2D === "function"; +function draw(ctx, line, start, count) { + if (usePath2D && !line.options.segment) { + strokePathWithCache(ctx, line, start, count); + } else { + strokePathDirect(ctx, line, start, count); + } +} +var LineElement = class extends Element { + constructor(cfg) { + super(); + this.animated = true; + this.options = void 0; + this._chart = void 0; + this._loop = void 0; + this._fullLoop = void 0; + this._path = void 0; + this._points = void 0; + this._segments = void 0; + this._decimated = false; + this._pointsUpdated = false; + this._datasetIndex = void 0; + if (cfg) { + Object.assign(this, cfg); + } + } + updateControlPoints(chartArea, indexAxis) { + const options = this.options; + if ((options.tension || options.cubicInterpolationMode === "monotone") && !options.stepped && !this._pointsUpdated) { + const loop = options.spanGaps ? this._loop : this._fullLoop; + _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis); + this._pointsUpdated = true; + } + } + set points(points) { + this._points = points; + delete this._segments; + delete this._path; + this._pointsUpdated = false; + } + get points() { + return this._points; + } + get segments() { + return this._segments || (this._segments = _computeSegments(this, this.options.segment)); + } + first() { + const segments = this.segments; + const points = this.points; + return segments.length && points[segments[0].start]; + } + last() { + const segments = this.segments; + const points = this.points; + const count = segments.length; + return count && points[segments[count - 1].end]; + } + interpolate(point, property) { + const options = this.options; + const value = point[property]; + const points = this.points; + const segments = _boundSegments(this, { + property, + start: value, + end: value + }); + if (!segments.length) { + return; + } + const result = []; + const _interpolate = _getInterpolationMethod(options); + let i, ilen; + for (i = 0, ilen = segments.length; i < ilen; ++i) { + const { start, end } = segments[i]; + const p1 = points[start]; + const p2 = points[end]; + if (p1 === p2) { + result.push(p1); + continue; + } + const t = Math.abs((value - p1[property]) / (p2[property] - p1[property])); + const interpolated = _interpolate(p1, p2, t, options.stepped); + interpolated[property] = point[property]; + result.push(interpolated); + } + return result.length === 1 ? result[0] : result; + } + pathSegment(ctx, segment, params) { + const segmentMethod = _getSegmentMethod(this); + return segmentMethod(ctx, this, segment, params); + } + path(ctx, start, count) { + const segments = this.segments; + const segmentMethod = _getSegmentMethod(this); + let loop = this._loop; + start = start || 0; + count = count || this.points.length - start; + for (const segment of segments) { + loop &= segmentMethod(ctx, this, segment, { + start, + end: start + count - 1 + }); + } + return !!loop; + } + draw(ctx, chartArea, start, count) { + const options = this.options || {}; + const points = this.points || []; + if (points.length && options.borderWidth) { + ctx.save(); + draw(ctx, this, start, count); + ctx.restore(); + } + if (this.animated) { + this._pointsUpdated = false; + this._path = void 0; + } + } +}; +__publicField(LineElement, "id", "line"); +__publicField(LineElement, "defaults", { + borderCapStyle: "butt", + borderDash: [], + borderDashOffset: 0, + borderJoinStyle: "miter", + borderWidth: 3, + capBezierPoints: true, + cubicInterpolationMode: "default", + fill: false, + spanGaps: false, + stepped: false, + tension: 0 +}); +__publicField(LineElement, "defaultRoutes", { + backgroundColor: "backgroundColor", + borderColor: "borderColor" +}); +__publicField(LineElement, "descriptors", { + _scriptable: true, + _indexable: (name) => name !== "borderDash" && name !== "fill" +}); +function inRange$1(el, pos, axis, useFinalPosition) { + const options = el.options; + const { [axis]: value } = el.getProps([ + axis + ], useFinalPosition); + return Math.abs(pos - value) < options.radius + options.hitRadius; +} +var PointElement = class extends Element { + constructor(cfg) { + super(); + __publicField(this, "parsed"); + __publicField(this, "skip"); + __publicField(this, "stop"); + this.options = void 0; + this.parsed = void 0; + this.skip = void 0; + this.stop = void 0; + if (cfg) { + Object.assign(this, cfg); + } + } + inRange(mouseX, mouseY, useFinalPosition) { + const options = this.options; + const { x, y } = this.getProps([ + "x", + "y" + ], useFinalPosition); + return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2); + } + inXRange(mouseX, useFinalPosition) { + return inRange$1(this, mouseX, "x", useFinalPosition); + } + inYRange(mouseY, useFinalPosition) { + return inRange$1(this, mouseY, "y", useFinalPosition); + } + getCenterPoint(useFinalPosition) { + const { x, y } = this.getProps([ + "x", + "y" + ], useFinalPosition); + return { + x, + y + }; + } + size(options) { + options = options || this.options || {}; + let radius = options.radius || 0; + radius = Math.max(radius, radius && options.hoverRadius || 0); + const borderWidth = radius && options.borderWidth || 0; + return (radius + borderWidth) * 2; + } + draw(ctx, area) { + const options = this.options; + if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) { + return; + } + ctx.strokeStyle = options.borderColor; + ctx.lineWidth = options.borderWidth; + ctx.fillStyle = options.backgroundColor; + drawPoint(ctx, options, this.x, this.y); + } + getRange() { + const options = this.options || {}; + return options.radius + options.hitRadius; + } +}; +__publicField(PointElement, "id", "point"); +/** +* @type {any} +*/ +__publicField(PointElement, "defaults", { + borderWidth: 1, + hitRadius: 1, + hoverBorderWidth: 1, + hoverRadius: 4, + pointStyle: "circle", + radius: 3, + rotation: 0 +}); +/** +* @type {any} +*/ +__publicField(PointElement, "defaultRoutes", { + backgroundColor: "backgroundColor", + borderColor: "borderColor" +}); +function getBarBounds(bar, useFinalPosition) { + const { x, y, base, width, height } = bar.getProps([ + "x", + "y", + "base", + "width", + "height" + ], useFinalPosition); + let left, right, top, bottom, half; + if (bar.horizontal) { + half = height / 2; + left = Math.min(x, base); + right = Math.max(x, base); + top = y - half; + bottom = y + half; + } else { + half = width / 2; + left = x - half; + right = x + half; + top = Math.min(y, base); + bottom = Math.max(y, base); + } + return { + left, + top, + right, + bottom + }; +} +function skipOrLimit(skip2, value, min, max) { + return skip2 ? 0 : _limitValue(value, min, max); +} +function parseBorderWidth(bar, maxW, maxH) { + const value = bar.options.borderWidth; + const skip2 = bar.borderSkipped; + const o = toTRBL(value); + return { + t: skipOrLimit(skip2.top, o.top, 0, maxH), + r: skipOrLimit(skip2.right, o.right, 0, maxW), + b: skipOrLimit(skip2.bottom, o.bottom, 0, maxH), + l: skipOrLimit(skip2.left, o.left, 0, maxW) + }; +} +function parseBorderRadius(bar, maxW, maxH) { + const { enableBorderRadius } = bar.getProps([ + "enableBorderRadius" + ]); + const value = bar.options.borderRadius; + const o = toTRBLCorners(value); + const maxR = Math.min(maxW, maxH); + const skip2 = bar.borderSkipped; + const enableBorder = enableBorderRadius || isObject(value); + return { + topLeft: skipOrLimit(!enableBorder || skip2.top || skip2.left, o.topLeft, 0, maxR), + topRight: skipOrLimit(!enableBorder || skip2.top || skip2.right, o.topRight, 0, maxR), + bottomLeft: skipOrLimit(!enableBorder || skip2.bottom || skip2.left, o.bottomLeft, 0, maxR), + bottomRight: skipOrLimit(!enableBorder || skip2.bottom || skip2.right, o.bottomRight, 0, maxR) + }; +} +function boundingRects(bar) { + const bounds = getBarBounds(bar); + const width = bounds.right - bounds.left; + const height = bounds.bottom - bounds.top; + const border = parseBorderWidth(bar, width / 2, height / 2); + const radius = parseBorderRadius(bar, width / 2, height / 2); + return { + outer: { + x: bounds.left, + y: bounds.top, + w: width, + h: height, + radius + }, + inner: { + x: bounds.left + border.l, + y: bounds.top + border.t, + w: width - border.l - border.r, + h: height - border.t - border.b, + radius: { + topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)), + topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)), + bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)), + bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)) + } + } + }; +} +function inRange(bar, x, y, useFinalPosition) { + const skipX = x === null; + const skipY = y === null; + const skipBoth = skipX && skipY; + const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition); + return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom)); +} +function hasRadius(radius) { + return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight; +} +function addNormalRectPath(ctx, rect) { + ctx.rect(rect.x, rect.y, rect.w, rect.h); +} +function inflateRect(rect, amount, refRect = {}) { + const x = rect.x !== refRect.x ? -amount : 0; + const y = rect.y !== refRect.y ? -amount : 0; + const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x; + const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y; + return { + x: rect.x + x, + y: rect.y + y, + w: rect.w + w, + h: rect.h + h, + radius: rect.radius + }; +} +var BarElement = class extends Element { + constructor(cfg) { + super(); + this.options = void 0; + this.horizontal = void 0; + this.base = void 0; + this.width = void 0; + this.height = void 0; + this.inflateAmount = void 0; + if (cfg) { + Object.assign(this, cfg); + } + } + draw(ctx) { + const { inflateAmount, options: { borderColor, backgroundColor } } = this; + const { inner, outer } = boundingRects(this); + const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath; + ctx.save(); + if (outer.w !== inner.w || outer.h !== inner.h) { + ctx.beginPath(); + addRectPath(ctx, inflateRect(outer, inflateAmount, inner)); + ctx.clip(); + addRectPath(ctx, inflateRect(inner, -inflateAmount, outer)); + ctx.fillStyle = borderColor; + ctx.fill("evenodd"); + } + ctx.beginPath(); + addRectPath(ctx, inflateRect(inner, inflateAmount)); + ctx.fillStyle = backgroundColor; + ctx.fill(); + ctx.restore(); + } + inRange(mouseX, mouseY, useFinalPosition) { + return inRange(this, mouseX, mouseY, useFinalPosition); + } + inXRange(mouseX, useFinalPosition) { + return inRange(this, mouseX, null, useFinalPosition); + } + inYRange(mouseY, useFinalPosition) { + return inRange(this, null, mouseY, useFinalPosition); + } + getCenterPoint(useFinalPosition) { + const { x, y, base, horizontal } = this.getProps([ + "x", + "y", + "base", + "horizontal" + ], useFinalPosition); + return { + x: horizontal ? (x + base) / 2 : x, + y: horizontal ? y : (y + base) / 2 + }; + } + getRange(axis) { + return axis === "x" ? this.width / 2 : this.height / 2; + } +}; +__publicField(BarElement, "id", "bar"); +__publicField(BarElement, "defaults", { + borderSkipped: "start", + borderWidth: 0, + borderRadius: 0, + inflateAmount: "auto", + pointStyle: void 0 +}); +__publicField(BarElement, "defaultRoutes", { + backgroundColor: "backgroundColor", + borderColor: "borderColor" +}); +var elements = Object.freeze({ + __proto__: null, + ArcElement, + BarElement, + LineElement, + PointElement +}); +var BORDER_COLORS = [ + "rgb(54, 162, 235)", + "rgb(255, 99, 132)", + "rgb(255, 159, 64)", + "rgb(255, 205, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)", + "rgb(201, 203, 207)" + // grey +]; +var BACKGROUND_COLORS = BORDER_COLORS.map((color2) => color2.replace("rgb(", "rgba(").replace(")", ", 0.5)")); +function getBorderColor(i) { + return BORDER_COLORS[i % BORDER_COLORS.length]; +} +function getBackgroundColor(i) { + return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length]; +} +function colorizeDefaultDataset(dataset, i) { + dataset.borderColor = getBorderColor(i); + dataset.backgroundColor = getBackgroundColor(i); + return ++i; +} +function colorizeDoughnutDataset(dataset, i) { + dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++)); + return i; +} +function colorizePolarAreaDataset(dataset, i) { + dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++)); + return i; +} +function getColorizer(chart) { + let i = 0; + return (dataset, datasetIndex) => { + const controller = chart.getDatasetMeta(datasetIndex).controller; + if (controller instanceof DoughnutController) { + i = colorizeDoughnutDataset(dataset, i); + } else if (controller instanceof PolarAreaController) { + i = colorizePolarAreaDataset(dataset, i); + } else if (controller) { + i = colorizeDefaultDataset(dataset, i); + } + }; +} +function containsColorsDefinitions(descriptors2) { + let k; + for (k in descriptors2) { + if (descriptors2[k].borderColor || descriptors2[k].backgroundColor) { + return true; + } + } + return false; +} +function containsColorsDefinition(descriptor) { + return descriptor && (descriptor.borderColor || descriptor.backgroundColor); +} +function containsDefaultColorsDefenitions() { + return defaults.borderColor !== "rgba(0,0,0,0.1)" || defaults.backgroundColor !== "rgba(0,0,0,0.1)"; +} +var plugin_colors = { + id: "colors", + defaults: { + enabled: true, + forceOverride: false + }, + beforeLayout(chart, _args, options) { + if (!options.enabled) { + return; + } + const { data: { datasets }, options: chartOptions } = chart.config; + const { elements: elements2 } = chartOptions; + const containsColorDefenition = containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements2 && containsColorsDefinitions(elements2) || containsDefaultColorsDefenitions(); + if (!options.forceOverride && containsColorDefenition) { + return; + } + const colorizer = getColorizer(chart); + datasets.forEach(colorizer); + } +}; +function lttbDecimation(data, start, count, availableWidth, options) { + const samples = options.samples || availableWidth; + if (samples >= count) { + return data.slice(start, start + count); + } + const decimated = []; + const bucketWidth = (count - 2) / (samples - 2); + let sampledIndex = 0; + const endIndex = start + count - 1; + let a = start; + let i, maxAreaPoint, maxArea, area, nextA; + decimated[sampledIndex++] = data[a]; + for (i = 0; i < samples - 2; i++) { + let avgX = 0; + let avgY = 0; + let j; + const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start; + const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start; + const avgRangeLength = avgRangeEnd - avgRangeStart; + for (j = avgRangeStart; j < avgRangeEnd; j++) { + avgX += data[j].x; + avgY += data[j].y; + } + avgX /= avgRangeLength; + avgY /= avgRangeLength; + const rangeOffs = Math.floor(i * bucketWidth) + 1 + start; + const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start; + const { x: pointAx, y: pointAy } = data[a]; + maxArea = area = -1; + for (j = rangeOffs; j < rangeTo; j++) { + area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy)); + if (area > maxArea) { + maxArea = area; + maxAreaPoint = data[j]; + nextA = j; + } + } + decimated[sampledIndex++] = maxAreaPoint; + a = nextA; + } + decimated[sampledIndex++] = data[endIndex]; + return decimated; +} +function minMaxDecimation(data, start, count, availableWidth) { + let avgX = 0; + let countX = 0; + let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY; + const decimated = []; + const endIndex = start + count - 1; + const xMin = data[start].x; + const xMax = data[endIndex].x; + const dx = xMax - xMin; + for (i = start; i < start + count; ++i) { + point = data[i]; + x = (point.x - xMin) / dx * availableWidth; + y = point.y; + const truncX = x | 0; + if (truncX === prevX) { + if (y < minY) { + minY = y; + minIndex = i; + } else if (y > maxY) { + maxY = y; + maxIndex = i; + } + avgX = (countX * avgX + point.x) / ++countX; + } else { + const lastIndex = i - 1; + if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) { + const intermediateIndex1 = Math.min(minIndex, maxIndex); + const intermediateIndex2 = Math.max(minIndex, maxIndex); + if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) { + decimated.push({ + ...data[intermediateIndex1], + x: avgX + }); + } + if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) { + decimated.push({ + ...data[intermediateIndex2], + x: avgX + }); + } + } + if (i > 0 && lastIndex !== startIndex) { + decimated.push(data[lastIndex]); + } + decimated.push(point); + prevX = truncX; + countX = 0; + minY = maxY = y; + minIndex = maxIndex = startIndex = i; + } + } + return decimated; +} +function cleanDecimatedDataset(dataset) { + if (dataset._decimated) { + const data = dataset._data; + delete dataset._decimated; + delete dataset._data; + Object.defineProperty(dataset, "data", { + configurable: true, + enumerable: true, + writable: true, + value: data + }); + } +} +function cleanDecimatedData(chart) { + chart.data.datasets.forEach((dataset) => { + cleanDecimatedDataset(dataset); + }); +} +function getStartAndCountOfVisiblePointsSimplified(meta, points) { + const pointCount = points.length; + let start = 0; + let count; + const { iScale } = meta; + const { min, max, minDefined, maxDefined } = iScale.getUserBounds(); + if (minDefined) { + start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1); + } + if (maxDefined) { + count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start; + } else { + count = pointCount - start; + } + return { + start, + count + }; +} +var plugin_decimation = { + id: "decimation", + defaults: { + algorithm: "min-max", + enabled: false + }, + beforeElementsUpdate: (chart, args, options) => { + if (!options.enabled) { + cleanDecimatedData(chart); + return; + } + const availableWidth = chart.width; + chart.data.datasets.forEach((dataset, datasetIndex) => { + const { _data, indexAxis } = dataset; + const meta = chart.getDatasetMeta(datasetIndex); + const data = _data || dataset.data; + if (resolve([ + indexAxis, + chart.options.indexAxis + ]) === "y") { + return; + } + if (!meta.controller.supportsDecimation) { + return; + } + const xAxis = chart.scales[meta.xAxisID]; + if (xAxis.type !== "linear" && xAxis.type !== "time") { + return; + } + if (chart.options.parsing) { + return; + } + let { start, count } = getStartAndCountOfVisiblePointsSimplified(meta, data); + const threshold = options.threshold || 4 * availableWidth; + if (count <= threshold) { + cleanDecimatedDataset(dataset); + return; + } + if (isNullOrUndef(_data)) { + dataset._data = data; + delete dataset.data; + Object.defineProperty(dataset, "data", { + configurable: true, + enumerable: true, + get: function() { + return this._decimated; + }, + set: function(d) { + this._data = d; + } + }); + } + let decimated; + switch (options.algorithm) { + case "lttb": + decimated = lttbDecimation(data, start, count, availableWidth, options); + break; + case "min-max": + decimated = minMaxDecimation(data, start, count, availableWidth); + break; + default: + throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`); + } + dataset._decimated = decimated; + }); + }, + destroy(chart) { + cleanDecimatedData(chart); + } +}; +function _segments(line, target, property) { + const segments = line.segments; + const points = line.points; + const tpoints = target.points; + const parts = []; + for (const segment of segments) { + let { start, end } = segment; + end = _findSegmentEnd(start, end, points); + const bounds = _getBounds(property, points[start], points[end], segment.loop); + if (!target.segments) { + parts.push({ + source: segment, + target: bounds, + start: points[start], + end: points[end] + }); + continue; + } + const targetSegments = _boundSegments(target, bounds); + for (const tgt of targetSegments) { + const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop); + const fillSources = _boundSegment(segment, points, subBounds); + for (const fillSource of fillSources) { + parts.push({ + source: fillSource, + target: tgt, + start: { + [property]: _getEdge(bounds, subBounds, "start", Math.max) + }, + end: { + [property]: _getEdge(bounds, subBounds, "end", Math.min) + } + }); + } + } + } + return parts; +} +function _getBounds(property, first, last, loop) { + if (loop) { + return; + } + let start = first[property]; + let end = last[property]; + if (property === "angle") { + start = _normalizeAngle(start); + end = _normalizeAngle(end); + } + return { + property, + start, + end + }; +} +function _pointsFromSegments(boundary, line) { + const { x = null, y = null } = boundary || {}; + const linePoints = line.points; + const points = []; + line.segments.forEach(({ start, end }) => { + end = _findSegmentEnd(start, end, linePoints); + const first = linePoints[start]; + const last = linePoints[end]; + if (y !== null) { + points.push({ + x: first.x, + y + }); + points.push({ + x: last.x, + y + }); + } else if (x !== null) { + points.push({ + x, + y: first.y + }); + points.push({ + x, + y: last.y + }); + } + }); + return points; +} +function _findSegmentEnd(start, end, points) { + for (; end > start; end--) { + const point = points[end]; + if (!isNaN(point.x) && !isNaN(point.y)) { + break; + } + } + return end; +} +function _getEdge(a, b, prop, fn) { + if (a && b) { + return fn(a[prop], b[prop]); + } + return a ? a[prop] : b ? b[prop] : 0; +} +function _createBoundaryLine(boundary, line) { + let points = []; + let _loop = false; + if (isArray(boundary)) { + _loop = true; + points = boundary; + } else { + points = _pointsFromSegments(boundary, line); + } + return points.length ? new LineElement({ + points, + options: { + tension: 0 + }, + _loop, + _fullLoop: _loop + }) : null; +} +function _shouldApplyFill(source) { + return source && source.fill !== false; +} +function _resolveTarget(sources, index2, propagate) { + const source = sources[index2]; + let fill2 = source.fill; + const visited = [ + index2 + ]; + let target; + if (!propagate) { + return fill2; + } + while (fill2 !== false && visited.indexOf(fill2) === -1) { + if (!isNumberFinite(fill2)) { + return fill2; + } + target = sources[fill2]; + if (!target) { + return false; + } + if (target.visible) { + return fill2; + } + visited.push(fill2); + fill2 = target.fill; + } + return false; +} +function _decodeFill(line, index2, count) { + const fill2 = parseFillOption(line); + if (isObject(fill2)) { + return isNaN(fill2.value) ? false : fill2; + } + let target = parseFloat(fill2); + if (isNumberFinite(target) && Math.floor(target) === target) { + return decodeTargetIndex(fill2[0], index2, target, count); + } + return [ + "origin", + "start", + "end", + "stack", + "shape" + ].indexOf(fill2) >= 0 && fill2; +} +function decodeTargetIndex(firstCh, index2, target, count) { + if (firstCh === "-" || firstCh === "+") { + target = index2 + target; + } + if (target === index2 || target < 0 || target >= count) { + return false; + } + return target; +} +function _getTargetPixel(fill2, scale) { + let pixel = null; + if (fill2 === "start") { + pixel = scale.bottom; + } else if (fill2 === "end") { + pixel = scale.top; + } else if (isObject(fill2)) { + pixel = scale.getPixelForValue(fill2.value); + } else if (scale.getBasePixel) { + pixel = scale.getBasePixel(); + } + return pixel; +} +function _getTargetValue(fill2, scale, startValue) { + let value; + if (fill2 === "start") { + value = startValue; + } else if (fill2 === "end") { + value = scale.options.reverse ? scale.min : scale.max; + } else if (isObject(fill2)) { + value = fill2.value; + } else { + value = scale.getBaseValue(); + } + return value; +} +function parseFillOption(line) { + const options = line.options; + const fillOption = options.fill; + let fill2 = valueOrDefault(fillOption && fillOption.target, fillOption); + if (fill2 === void 0) { + fill2 = !!options.backgroundColor; + } + if (fill2 === false || fill2 === null) { + return false; + } + if (fill2 === true) { + return "origin"; + } + return fill2; +} +function _buildStackLine(source) { + const { scale, index: index2, line } = source; + const points = []; + const segments = line.segments; + const sourcePoints = line.points; + const linesBelow = getLinesBelow(scale, index2); + linesBelow.push(_createBoundaryLine({ + x: null, + y: scale.bottom + }, line)); + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + for (let j = segment.start; j <= segment.end; j++) { + addPointsBelow(points, sourcePoints[j], linesBelow); + } + } + return new LineElement({ + points, + options: {} + }); +} +function getLinesBelow(scale, index2) { + const below = []; + const metas = scale.getMatchingVisibleMetas("line"); + for (let i = 0; i < metas.length; i++) { + const meta = metas[i]; + if (meta.index === index2) { + break; + } + if (!meta.hidden) { + below.unshift(meta.dataset); + } + } + return below; +} +function addPointsBelow(points, sourcePoint, linesBelow) { + const postponed = []; + for (let j = 0; j < linesBelow.length; j++) { + const line = linesBelow[j]; + const { first, last, point } = findPoint(line, sourcePoint, "x"); + if (!point || first && last) { + continue; + } + if (first) { + postponed.unshift(point); + } else { + points.push(point); + if (!last) { + break; + } + } + } + points.push(...postponed); +} +function findPoint(line, sourcePoint, property) { + const point = line.interpolate(sourcePoint, property); + if (!point) { + return {}; + } + const pointValue = point[property]; + const segments = line.segments; + const linePoints = line.points; + let first = false; + let last = false; + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + const firstValue = linePoints[segment.start][property]; + const lastValue = linePoints[segment.end][property]; + if (_isBetween(pointValue, firstValue, lastValue)) { + first = pointValue === firstValue; + last = pointValue === lastValue; + break; + } + } + return { + first, + last, + point + }; +} +var simpleArc = class { + constructor(opts) { + this.x = opts.x; + this.y = opts.y; + this.radius = opts.radius; + } + pathSegment(ctx, bounds, opts) { + const { x, y, radius } = this; + bounds = bounds || { + start: 0, + end: TAU + }; + ctx.arc(x, y, radius, bounds.end, bounds.start, true); + return !opts.bounds; + } + interpolate(point) { + const { x, y, radius } = this; + const angle = point.angle; + return { + x: x + Math.cos(angle) * radius, + y: y + Math.sin(angle) * radius, + angle + }; + } +}; +function _getTarget(source) { + const { chart, fill: fill2, line } = source; + if (isNumberFinite(fill2)) { + return getLineByIndex(chart, fill2); + } + if (fill2 === "stack") { + return _buildStackLine(source); + } + if (fill2 === "shape") { + return true; + } + const boundary = computeBoundary(source); + if (boundary instanceof simpleArc) { + return boundary; + } + return _createBoundaryLine(boundary, line); +} +function getLineByIndex(chart, index2) { + const meta = chart.getDatasetMeta(index2); + const visible = meta && chart.isDatasetVisible(index2); + return visible ? meta.dataset : null; +} +function computeBoundary(source) { + const scale = source.scale || {}; + if (scale.getPointPositionForValue) { + return computeCircularBoundary(source); + } + return computeLinearBoundary(source); +} +function computeLinearBoundary(source) { + const { scale = {}, fill: fill2 } = source; + const pixel = _getTargetPixel(fill2, scale); + if (isNumberFinite(pixel)) { + const horizontal = scale.isHorizontal(); + return { + x: horizontal ? pixel : null, + y: horizontal ? null : pixel + }; + } + return null; +} +function computeCircularBoundary(source) { + const { scale, fill: fill2 } = source; + const options = scale.options; + const length = scale.getLabels().length; + const start = options.reverse ? scale.max : scale.min; + const value = _getTargetValue(fill2, scale, start); + const target = []; + if (options.grid.circular) { + const center = scale.getPointPositionForValue(0, start); + return new simpleArc({ + x: center.x, + y: center.y, + radius: scale.getDistanceFromCenterForValue(value) + }); + } + for (let i = 0; i < length; ++i) { + target.push(scale.getPointPositionForValue(i, value)); + } + return target; +} +function _drawfill(ctx, source, area) { + const target = _getTarget(source); + const { chart, index: index2, line, scale, axis } = source; + const lineOpts = line.options; + const fillOption = lineOpts.fill; + const color2 = lineOpts.backgroundColor; + const { above = color2, below = color2 } = fillOption || {}; + const meta = chart.getDatasetMeta(index2); + const clip = getDatasetClipArea(chart, meta); + if (target && line.points.length) { + clipArea(ctx, area); + doFill(ctx, { + line, + target, + above, + below, + area, + scale, + axis, + clip + }); + unclipArea(ctx); + } +} +function doFill(ctx, cfg) { + const { line, target, above, below, area, scale, clip } = cfg; + const property = line._loop ? "angle" : cfg.axis; + ctx.save(); + let fillColor = below; + if (below !== above) { + if (property === "x") { + clipVertical(ctx, target, area.top); + fill(ctx, { + line, + target, + color: above, + scale, + property, + clip + }); + ctx.restore(); + ctx.save(); + clipVertical(ctx, target, area.bottom); + } else if (property === "y") { + clipHorizontal(ctx, target, area.left); + fill(ctx, { + line, + target, + color: below, + scale, + property, + clip + }); + ctx.restore(); + ctx.save(); + clipHorizontal(ctx, target, area.right); + fillColor = above; + } + } + fill(ctx, { + line, + target, + color: fillColor, + scale, + property, + clip + }); + ctx.restore(); +} +function clipVertical(ctx, target, clipY) { + const { segments, points } = target; + let first = true; + let lineLoop = false; + ctx.beginPath(); + for (const segment of segments) { + const { start, end } = segment; + const firstPoint = points[start]; + const lastPoint = points[_findSegmentEnd(start, end, points)]; + if (first) { + ctx.moveTo(firstPoint.x, firstPoint.y); + first = false; + } else { + ctx.lineTo(firstPoint.x, clipY); + ctx.lineTo(firstPoint.x, firstPoint.y); + } + lineLoop = !!target.pathSegment(ctx, segment, { + move: lineLoop + }); + if (lineLoop) { + ctx.closePath(); + } else { + ctx.lineTo(lastPoint.x, clipY); + } + } + ctx.lineTo(target.first().x, clipY); + ctx.closePath(); + ctx.clip(); +} +function clipHorizontal(ctx, target, clipX) { + const { segments, points } = target; + let first = true; + let lineLoop = false; + ctx.beginPath(); + for (const segment of segments) { + const { start, end } = segment; + const firstPoint = points[start]; + const lastPoint = points[_findSegmentEnd(start, end, points)]; + if (first) { + ctx.moveTo(firstPoint.x, firstPoint.y); + first = false; + } else { + ctx.lineTo(clipX, firstPoint.y); + ctx.lineTo(firstPoint.x, firstPoint.y); + } + lineLoop = !!target.pathSegment(ctx, segment, { + move: lineLoop + }); + if (lineLoop) { + ctx.closePath(); + } else { + ctx.lineTo(clipX, lastPoint.y); + } + } + ctx.lineTo(clipX, target.first().y); + ctx.closePath(); + ctx.clip(); +} +function fill(ctx, cfg) { + const { line, target, property, color: color2, scale, clip } = cfg; + const segments = _segments(line, target, property); + for (const { source: src, target: tgt, start, end } of segments) { + const { style: { backgroundColor = color2 } = {} } = src; + const notShape = target !== true; + ctx.save(); + ctx.fillStyle = backgroundColor; + clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end)); + ctx.beginPath(); + const lineLoop = !!line.pathSegment(ctx, src); + let loop; + if (notShape) { + if (lineLoop) { + ctx.closePath(); + } else { + interpolatedLineTo(ctx, target, end, property); + } + const targetLoop = !!target.pathSegment(ctx, tgt, { + move: lineLoop, + reverse: true + }); + loop = lineLoop && targetLoop; + if (!loop) { + interpolatedLineTo(ctx, target, start, property); + } + } + ctx.closePath(); + ctx.fill(loop ? "evenodd" : "nonzero"); + ctx.restore(); + } +} +function clipBounds(ctx, scale, clip, bounds) { + const chartArea = scale.chart.chartArea; + const { property, start, end } = bounds || {}; + if (property === "x" || property === "y") { + let left, top, right, bottom; + if (property === "x") { + left = start; + top = chartArea.top; + right = end; + bottom = chartArea.bottom; + } else { + left = chartArea.left; + top = start; + right = chartArea.right; + bottom = end; + } + ctx.beginPath(); + if (clip) { + left = Math.max(left, clip.left); + right = Math.min(right, clip.right); + top = Math.max(top, clip.top); + bottom = Math.min(bottom, clip.bottom); + } + ctx.rect(left, top, right - left, bottom - top); + ctx.clip(); + } +} +function interpolatedLineTo(ctx, target, point, property) { + const interpolatedPoint = target.interpolate(point, property); + if (interpolatedPoint) { + ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y); + } +} +var index = { + id: "filler", + afterDatasetsUpdate(chart, _args, options) { + const count = (chart.data.datasets || []).length; + const sources = []; + let meta, i, line, source; + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + line = meta.dataset; + source = null; + if (line && line.options && line instanceof LineElement) { + source = { + visible: chart.isDatasetVisible(i), + index: i, + fill: _decodeFill(line, i, count), + chart, + axis: meta.controller.options.indexAxis, + scale: meta.vScale, + line + }; + } + meta.$filler = source; + sources.push(source); + } + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source || source.fill === false) { + continue; + } + source.fill = _resolveTarget(sources, i, options.propagate); + } + }, + beforeDraw(chart, _args, options) { + const draw2 = options.drawTime === "beforeDraw"; + const metasets = chart.getSortedVisibleDatasetMetas(); + const area = chart.chartArea; + for (let i = metasets.length - 1; i >= 0; --i) { + const source = metasets[i].$filler; + if (!source) { + continue; + } + source.line.updateControlPoints(area, source.axis); + if (draw2 && source.fill) { + _drawfill(chart.ctx, source, area); + } + } + }, + beforeDatasetsDraw(chart, _args, options) { + if (options.drawTime !== "beforeDatasetsDraw") { + return; + } + const metasets = chart.getSortedVisibleDatasetMetas(); + for (let i = metasets.length - 1; i >= 0; --i) { + const source = metasets[i].$filler; + if (_shouldApplyFill(source)) { + _drawfill(chart.ctx, source, chart.chartArea); + } + } + }, + beforeDatasetDraw(chart, args, options) { + const source = args.meta.$filler; + if (!_shouldApplyFill(source) || options.drawTime !== "beforeDatasetDraw") { + return; + } + _drawfill(chart.ctx, source, chart.chartArea); + }, + defaults: { + propagate: true, + drawTime: "beforeDatasetDraw" + } +}; +var getBoxSize = (labelOpts, fontSize) => { + let { boxHeight = fontSize, boxWidth = fontSize } = labelOpts; + if (labelOpts.usePointStyle) { + boxHeight = Math.min(boxHeight, fontSize); + boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize); + } + return { + boxWidth, + boxHeight, + itemHeight: Math.max(fontSize, boxHeight) + }; +}; +var itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index; +var Legend = class extends Element { + constructor(config) { + super(); + this._added = false; + this.legendHitBoxes = []; + this._hoveredItem = null; + this.doughnutMode = false; + this.chart = config.chart; + this.options = config.options; + this.ctx = config.ctx; + this.legendItems = void 0; + this.columnSizes = void 0; + this.lineWidths = void 0; + this.maxHeight = void 0; + this.maxWidth = void 0; + this.top = void 0; + this.bottom = void 0; + this.left = void 0; + this.right = void 0; + this.height = void 0; + this.width = void 0; + this._margins = void 0; + this.position = void 0; + this.weight = void 0; + this.fullSize = void 0; + } + update(maxWidth, maxHeight, margins) { + this.maxWidth = maxWidth; + this.maxHeight = maxHeight; + this._margins = margins; + this.setDimensions(); + this.buildLabels(); + this.fit(); + } + setDimensions() { + if (this.isHorizontal()) { + this.width = this.maxWidth; + this.left = this._margins.left; + this.right = this.width; + } else { + this.height = this.maxHeight; + this.top = this._margins.top; + this.bottom = this.height; + } + } + buildLabels() { + const labelOpts = this.options.labels || {}; + let legendItems = callback(labelOpts.generateLabels, [ + this.chart + ], this) || []; + if (labelOpts.filter) { + legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data)); + } + if (labelOpts.sort) { + legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data)); + } + if (this.options.reverse) { + legendItems.reverse(); + } + this.legendItems = legendItems; + } + fit() { + const { options, ctx } = this; + if (!options.display) { + this.width = this.height = 0; + return; + } + const labelOpts = options.labels; + const labelFont = toFont(labelOpts.font); + const fontSize = labelFont.size; + const titleHeight = this._computeTitleHeight(); + const { boxWidth, itemHeight } = getBoxSize(labelOpts, fontSize); + let width, height; + ctx.font = labelFont.string; + if (this.isHorizontal()) { + width = this.maxWidth; + height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10; + } else { + height = this.maxHeight; + width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10; + } + this.width = Math.min(width, options.maxWidth || this.maxWidth); + this.height = Math.min(height, options.maxHeight || this.maxHeight); + } + _fitRows(titleHeight, fontSize, boxWidth, itemHeight) { + const { ctx, maxWidth, options: { labels: { padding } } } = this; + const hitboxes = this.legendHitBoxes = []; + const lineWidths = this.lineWidths = [ + 0 + ]; + const lineHeight = itemHeight + padding; + let totalHeight = titleHeight; + ctx.textAlign = "left"; + ctx.textBaseline = "middle"; + let row = -1; + let top = -lineHeight; + this.legendItems.forEach((legendItem, i) => { + const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width; + if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) { + totalHeight += lineHeight; + lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; + top += lineHeight; + row++; + } + hitboxes[i] = { + left: 0, + top, + row, + width: itemWidth, + height: itemHeight + }; + lineWidths[lineWidths.length - 1] += itemWidth + padding; + }); + return totalHeight; + } + _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) { + const { ctx, maxHeight, options: { labels: { padding } } } = this; + const hitboxes = this.legendHitBoxes = []; + const columnSizes = this.columnSizes = []; + const heightLimit = maxHeight - titleHeight; + let totalWidth = padding; + let currentColWidth = 0; + let currentColHeight = 0; + let left = 0; + let col = 0; + this.legendItems.forEach((legendItem, i) => { + const { itemWidth, itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight); + if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { + totalWidth += currentColWidth + padding; + columnSizes.push({ + width: currentColWidth, + height: currentColHeight + }); + left += currentColWidth + padding; + col++; + currentColWidth = currentColHeight = 0; + } + hitboxes[i] = { + left, + top: currentColHeight, + col, + width: itemWidth, + height: itemHeight + }; + currentColWidth = Math.max(currentColWidth, itemWidth); + currentColHeight += itemHeight + padding; + }); + totalWidth += currentColWidth; + columnSizes.push({ + width: currentColWidth, + height: currentColHeight + }); + return totalWidth; + } + adjustHitBoxes() { + if (!this.options.display) { + return; + } + const titleHeight = this._computeTitleHeight(); + const { legendHitBoxes: hitboxes, options: { align, labels: { padding }, rtl } } = this; + const rtlHelper = getRtlAdapter(rtl, this.left, this.width); + if (this.isHorizontal()) { + let row = 0; + let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); + for (const hitbox of hitboxes) { + if (row !== hitbox.row) { + row = hitbox.row; + left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); + } + hitbox.top += this.top + titleHeight + padding; + hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width); + left += hitbox.width + padding; + } + } else { + let col = 0; + let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); + for (const hitbox of hitboxes) { + if (hitbox.col !== col) { + col = hitbox.col; + top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); + } + hitbox.top = top; + hitbox.left += this.left + padding; + hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width); + top += hitbox.height + padding; + } + } + } + isHorizontal() { + return this.options.position === "top" || this.options.position === "bottom"; + } + draw() { + if (this.options.display) { + const ctx = this.ctx; + clipArea(ctx, this); + this._draw(); + unclipArea(ctx); + } + } + _draw() { + const { options: opts, columnSizes, lineWidths, ctx } = this; + const { align, labels: labelOpts } = opts; + const defaultColor = defaults.color; + const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); + const labelFont = toFont(labelOpts.font); + const { padding } = labelOpts; + const fontSize = labelFont.size; + const halfFontSize = fontSize / 2; + let cursor; + this.drawTitle(); + ctx.textAlign = rtlHelper.textAlign("left"); + ctx.textBaseline = "middle"; + ctx.lineWidth = 0.5; + ctx.font = labelFont.string; + const { boxWidth, boxHeight, itemHeight } = getBoxSize(labelOpts, fontSize); + const drawLegendBox = function(x, y, legendItem) { + if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) { + return; + } + ctx.save(); + const lineWidth = valueOrDefault(legendItem.lineWidth, 1); + ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor); + ctx.lineCap = valueOrDefault(legendItem.lineCap, "butt"); + ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0); + ctx.lineJoin = valueOrDefault(legendItem.lineJoin, "miter"); + ctx.lineWidth = lineWidth; + ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor); + ctx.setLineDash(valueOrDefault(legendItem.lineDash, [])); + if (labelOpts.usePointStyle) { + const drawOptions = { + radius: boxHeight * Math.SQRT2 / 2, + pointStyle: legendItem.pointStyle, + rotation: legendItem.rotation, + borderWidth: lineWidth + }; + const centerX = rtlHelper.xPlus(x, boxWidth / 2); + const centerY = y + halfFontSize; + drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth); + } else { + const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0); + const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth); + const borderRadius = toTRBLCorners(legendItem.borderRadius); + ctx.beginPath(); + if (Object.values(borderRadius).some((v) => v !== 0)) { + addRoundedRectPath(ctx, { + x: xBoxLeft, + y: yBoxTop, + w: boxWidth, + h: boxHeight, + radius: borderRadius + }); + } else { + ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight); + } + ctx.fill(); + if (lineWidth !== 0) { + ctx.stroke(); + } + } + ctx.restore(); + }; + const fillText = function(x, y, legendItem) { + renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, { + strikethrough: legendItem.hidden, + textAlign: rtlHelper.textAlign(legendItem.textAlign) + }); + }; + const isHorizontal = this.isHorizontal(); + const titleHeight = this._computeTitleHeight(); + if (isHorizontal) { + cursor = { + x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]), + y: this.top + padding + titleHeight, + line: 0 + }; + } else { + cursor = { + x: this.left + padding, + y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height), + line: 0 + }; + } + overrideTextDirection(this.ctx, opts.textDirection); + const lineHeight = itemHeight + padding; + this.legendItems.forEach((legendItem, i) => { + ctx.strokeStyle = legendItem.fontColor; + ctx.fillStyle = legendItem.fontColor; + const textWidth = ctx.measureText(legendItem.text).width; + const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign)); + const width = boxWidth + halfFontSize + textWidth; + let x = cursor.x; + let y = cursor.y; + rtlHelper.setWidth(this.width); + if (isHorizontal) { + if (i > 0 && x + width + padding > this.right) { + y = cursor.y += lineHeight; + cursor.line++; + x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]); + } + } else if (i > 0 && y + lineHeight > this.bottom) { + x = cursor.x = x + columnSizes[cursor.line].width + padding; + cursor.line++; + y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height); + } + const realX = rtlHelper.x(x); + drawLegendBox(realX, y, legendItem); + x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl); + fillText(rtlHelper.x(x), y, legendItem); + if (isHorizontal) { + cursor.x += width + padding; + } else if (typeof legendItem.text !== "string") { + const fontLineHeight = labelFont.lineHeight; + cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding; + } else { + cursor.y += lineHeight; + } + }); + restoreTextDirection(this.ctx, opts.textDirection); + } + drawTitle() { + const opts = this.options; + const titleOpts = opts.title; + const titleFont = toFont(titleOpts.font); + const titlePadding = toPadding(titleOpts.padding); + if (!titleOpts.display) { + return; + } + const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); + const ctx = this.ctx; + const position = titleOpts.position; + const halfFontSize = titleFont.size / 2; + const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; + let y; + let left = this.left; + let maxWidth = this.width; + if (this.isHorizontal()) { + maxWidth = Math.max(...this.lineWidths); + y = this.top + topPaddingPlusHalfFontSize; + left = _alignStartEnd(opts.align, left, this.right - maxWidth); + } else { + const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); + y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight()); + } + const x = _alignStartEnd(position, left, left + maxWidth); + ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position)); + ctx.textBaseline = "middle"; + ctx.strokeStyle = titleOpts.color; + ctx.fillStyle = titleOpts.color; + ctx.font = titleFont.string; + renderText(ctx, titleOpts.text, x, y, titleFont); + } + _computeTitleHeight() { + const titleOpts = this.options.title; + const titleFont = toFont(titleOpts.font); + const titlePadding = toPadding(titleOpts.padding); + return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0; + } + _getLegendItemAt(x, y) { + let i, hitBox, lh; + if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) { + lh = this.legendHitBoxes; + for (i = 0; i < lh.length; ++i) { + hitBox = lh[i]; + if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) { + return this.legendItems[i]; + } + } + } + return null; + } + handleEvent(e) { + const opts = this.options; + if (!isListened(e.type, opts)) { + return; + } + const hoveredItem = this._getLegendItemAt(e.x, e.y); + if (e.type === "mousemove" || e.type === "mouseout") { + const previous = this._hoveredItem; + const sameItem = itemsEqual(previous, hoveredItem); + if (previous && !sameItem) { + callback(opts.onLeave, [ + e, + previous, + this + ], this); + } + this._hoveredItem = hoveredItem; + if (hoveredItem && !sameItem) { + callback(opts.onHover, [ + e, + hoveredItem, + this + ], this); + } + } else if (hoveredItem) { + callback(opts.onClick, [ + e, + hoveredItem, + this + ], this); + } + } +}; +function calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) { + const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx); + const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight); + return { + itemWidth, + itemHeight + }; +} +function calculateItemWidth(legendItem, boxWidth, labelFont, ctx) { + let legendItemText = legendItem.text; + if (legendItemText && typeof legendItemText !== "string") { + legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b); + } + return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width; +} +function calculateItemHeight(_itemHeight, legendItem, fontLineHeight) { + let itemHeight = _itemHeight; + if (typeof legendItem.text !== "string") { + itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight); + } + return itemHeight; +} +function calculateLegendItemHeight(legendItem, fontLineHeight) { + const labelHeight = legendItem.text ? legendItem.text.length : 0; + return fontLineHeight * labelHeight; +} +function isListened(type, opts) { + if ((type === "mousemove" || type === "mouseout") && (opts.onHover || opts.onLeave)) { + return true; + } + if (opts.onClick && (type === "click" || type === "mouseup")) { + return true; + } + return false; +} +var plugin_legend = { + id: "legend", + _element: Legend, + start(chart, _args, options) { + const legend = chart.legend = new Legend({ + ctx: chart.ctx, + options, + chart + }); + layouts.configure(chart, legend, options); + layouts.addBox(chart, legend); + }, + stop(chart) { + layouts.removeBox(chart, chart.legend); + delete chart.legend; + }, + beforeUpdate(chart, _args, options) { + const legend = chart.legend; + layouts.configure(chart, legend, options); + legend.options = options; + }, + afterUpdate(chart) { + const legend = chart.legend; + legend.buildLabels(); + legend.adjustHitBoxes(); + }, + afterEvent(chart, args) { + if (!args.replay) { + chart.legend.handleEvent(args.event); + } + }, + defaults: { + display: true, + position: "top", + align: "center", + fullSize: true, + reverse: false, + weight: 1e3, + onClick(e, legendItem, legend) { + const index2 = legendItem.datasetIndex; + const ci = legend.chart; + if (ci.isDatasetVisible(index2)) { + ci.hide(index2); + legendItem.hidden = true; + } else { + ci.show(index2); + legendItem.hidden = false; + } + }, + onHover: null, + onLeave: null, + labels: { + color: (ctx) => ctx.chart.options.color, + boxWidth: 40, + padding: 10, + generateLabels(chart) { + const datasets = chart.data.datasets; + const { labels: { usePointStyle, pointStyle, textAlign, color: color2, useBorderRadius, borderRadius } } = chart.legend.options; + return chart._getSortedDatasetMetas().map((meta) => { + const style = meta.controller.getStyle(usePointStyle ? 0 : void 0); + const borderWidth = toPadding(style.borderWidth); + return { + text: datasets[meta.index].label, + fillStyle: style.backgroundColor, + fontColor: color2, + hidden: !meta.visible, + lineCap: style.borderCapStyle, + lineDash: style.borderDash, + lineDashOffset: style.borderDashOffset, + lineJoin: style.borderJoinStyle, + lineWidth: (borderWidth.width + borderWidth.height) / 4, + strokeStyle: style.borderColor, + pointStyle: pointStyle || style.pointStyle, + rotation: style.rotation, + textAlign: textAlign || style.textAlign, + borderRadius: useBorderRadius && (borderRadius || style.borderRadius), + datasetIndex: meta.index + }; + }, this); + } + }, + title: { + color: (ctx) => ctx.chart.options.color, + display: false, + position: "center", + text: "" + } + }, + descriptors: { + _scriptable: (name) => !name.startsWith("on"), + labels: { + _scriptable: (name) => ![ + "generateLabels", + "filter", + "sort" + ].includes(name) + } + } +}; +var Title = class extends Element { + constructor(config) { + super(); + this.chart = config.chart; + this.options = config.options; + this.ctx = config.ctx; + this._padding = void 0; + this.top = void 0; + this.bottom = void 0; + this.left = void 0; + this.right = void 0; + this.width = void 0; + this.height = void 0; + this.position = void 0; + this.weight = void 0; + this.fullSize = void 0; + } + update(maxWidth, maxHeight) { + const opts = this.options; + this.left = 0; + this.top = 0; + if (!opts.display) { + this.width = this.height = this.right = this.bottom = 0; + return; + } + this.width = this.right = maxWidth; + this.height = this.bottom = maxHeight; + const lineCount = isArray(opts.text) ? opts.text.length : 1; + this._padding = toPadding(opts.padding); + const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height; + if (this.isHorizontal()) { + this.height = textSize; + } else { + this.width = textSize; + } + } + isHorizontal() { + const pos = this.options.position; + return pos === "top" || pos === "bottom"; + } + _drawArgs(offset) { + const { top, left, bottom, right, options } = this; + const align = options.align; + let rotation = 0; + let maxWidth, titleX, titleY; + if (this.isHorizontal()) { + titleX = _alignStartEnd(align, left, right); + titleY = top + offset; + maxWidth = right - left; + } else { + if (options.position === "left") { + titleX = left + offset; + titleY = _alignStartEnd(align, bottom, top); + rotation = PI * -0.5; + } else { + titleX = right - offset; + titleY = _alignStartEnd(align, top, bottom); + rotation = PI * 0.5; + } + maxWidth = bottom - top; + } + return { + titleX, + titleY, + maxWidth, + rotation + }; + } + draw() { + const ctx = this.ctx; + const opts = this.options; + if (!opts.display) { + return; + } + const fontOpts = toFont(opts.font); + const lineHeight = fontOpts.lineHeight; + const offset = lineHeight / 2 + this._padding.top; + const { titleX, titleY, maxWidth, rotation } = this._drawArgs(offset); + renderText(ctx, opts.text, 0, 0, fontOpts, { + color: opts.color, + maxWidth, + rotation, + textAlign: _toLeftRightCenter(opts.align), + textBaseline: "middle", + translation: [ + titleX, + titleY + ] + }); + } +}; +function createTitle(chart, titleOpts) { + const title = new Title({ + ctx: chart.ctx, + options: titleOpts, + chart + }); + layouts.configure(chart, title, titleOpts); + layouts.addBox(chart, title); + chart.titleBlock = title; +} +var plugin_title = { + id: "title", + _element: Title, + start(chart, _args, options) { + createTitle(chart, options); + }, + stop(chart) { + const titleBlock = chart.titleBlock; + layouts.removeBox(chart, titleBlock); + delete chart.titleBlock; + }, + beforeUpdate(chart, _args, options) { + const title = chart.titleBlock; + layouts.configure(chart, title, options); + title.options = options; + }, + defaults: { + align: "center", + display: false, + font: { + weight: "bold" + }, + fullSize: true, + padding: 10, + position: "top", + text: "", + weight: 2e3 + }, + defaultRoutes: { + color: "color" + }, + descriptors: { + _scriptable: true, + _indexable: false + } +}; +var map2 = /* @__PURE__ */ new WeakMap(); +var plugin_subtitle = { + id: "subtitle", + start(chart, _args, options) { + const title = new Title({ + ctx: chart.ctx, + options, + chart + }); + layouts.configure(chart, title, options); + layouts.addBox(chart, title); + map2.set(chart, title); + }, + stop(chart) { + layouts.removeBox(chart, map2.get(chart)); + map2.delete(chart); + }, + beforeUpdate(chart, _args, options) { + const title = map2.get(chart); + layouts.configure(chart, title, options); + title.options = options; + }, + defaults: { + align: "center", + display: false, + font: { + weight: "normal" + }, + fullSize: true, + padding: 0, + position: "top", + text: "", + weight: 1500 + }, + defaultRoutes: { + color: "color" + }, + descriptors: { + _scriptable: true, + _indexable: false + } +}; +var positioners = { + average(items) { + if (!items.length) { + return false; + } + let i, len; + let xSet = /* @__PURE__ */ new Set(); + let y = 0; + let count = 0; + for (i = 0, len = items.length; i < len; ++i) { + const el = items[i].element; + if (el && el.hasValue()) { + const pos = el.tooltipPosition(); + xSet.add(pos.x); + y += pos.y; + ++count; + } + } + if (count === 0 || xSet.size === 0) { + return false; + } + const xAverage = [ + ...xSet + ].reduce((a, b) => a + b) / xSet.size; + return { + x: xAverage, + y: y / count + }; + }, + nearest(items, eventPosition) { + if (!items.length) { + return false; + } + let x = eventPosition.x; + let y = eventPosition.y; + let minDistance = Number.POSITIVE_INFINITY; + let i, len, nearestElement; + for (i = 0, len = items.length; i < len; ++i) { + const el = items[i].element; + if (el && el.hasValue()) { + const center = el.getCenterPoint(); + const d = distanceBetweenPoints(eventPosition, center); + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } + if (nearestElement) { + const tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } + return { + x, + y + }; + } +}; +function pushOrConcat(base, toPush) { + if (toPush) { + if (isArray(toPush)) { + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } + return base; +} +function splitNewlines(str) { + if ((typeof str === "string" || str instanceof String) && str.indexOf("\n") > -1) { + return str.split("\n"); + } + return str; +} +function createTooltipItem(chart, item) { + const { element, datasetIndex, index: index2 } = item; + const controller = chart.getDatasetMeta(datasetIndex).controller; + const { label, value } = controller.getLabelAndValue(index2); + return { + chart, + label, + parsed: controller.getParsed(index2), + raw: chart.data.datasets[datasetIndex].data[index2], + formattedValue: value, + dataset: controller.getDataset(), + dataIndex: index2, + datasetIndex, + element + }; +} +function getTooltipSize(tooltip, options) { + const ctx = tooltip.chart.ctx; + const { body, footer, title } = tooltip; + const { boxWidth, boxHeight } = options; + const bodyFont = toFont(options.bodyFont); + const titleFont = toFont(options.titleFont); + const footerFont = toFont(options.footerFont); + const titleLineCount = title.length; + const footerLineCount = footer.length; + const bodyLineItemCount = body.length; + const padding = toPadding(options.padding); + let height = padding.height; + let width = 0; + let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0); + combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length; + if (titleLineCount) { + height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom; + } + if (combinedBodyLength) { + const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight; + height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing; + } + if (footerLineCount) { + height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing; + } + let widthPadding = 0; + const maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; + ctx.save(); + ctx.font = titleFont.string; + each(tooltip.title, maxLineWidth); + ctx.font = bodyFont.string; + each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth); + widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0; + each(body, (bodyItem) => { + each(bodyItem.before, maxLineWidth); + each(bodyItem.lines, maxLineWidth); + each(bodyItem.after, maxLineWidth); + }); + widthPadding = 0; + ctx.font = footerFont.string; + each(tooltip.footer, maxLineWidth); + ctx.restore(); + width += padding.width; + return { + width, + height + }; +} +function determineYAlign(chart, size) { + const { y, height } = size; + if (y < height / 2) { + return "top"; + } else if (y > chart.height - height / 2) { + return "bottom"; + } + return "center"; +} +function doesNotFitWithAlign(xAlign, chart, options, size) { + const { x, width } = size; + const caret = options.caretSize + options.caretPadding; + if (xAlign === "left" && x + width + caret > chart.width) { + return true; + } + if (xAlign === "right" && x - width - caret < 0) { + return true; + } +} +function determineXAlign(chart, options, size, yAlign) { + const { x, width } = size; + const { width: chartWidth, chartArea: { left, right } } = chart; + let xAlign = "center"; + if (yAlign === "center") { + xAlign = x <= (left + right) / 2 ? "left" : "right"; + } else if (x <= width / 2) { + xAlign = "left"; + } else if (x >= chartWidth - width / 2) { + xAlign = "right"; + } + if (doesNotFitWithAlign(xAlign, chart, options, size)) { + xAlign = "center"; + } + return xAlign; +} +function determineAlignment(chart, options, size) { + const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size); + return { + xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign), + yAlign + }; +} +function alignX(size, xAlign) { + let { x, width } = size; + if (xAlign === "right") { + x -= width; + } else if (xAlign === "center") { + x -= width / 2; + } + return x; +} +function alignY(size, yAlign, paddingAndSize) { + let { y, height } = size; + if (yAlign === "top") { + y += paddingAndSize; + } else if (yAlign === "bottom") { + y -= height + paddingAndSize; + } else { + y -= height / 2; + } + return y; +} +function getBackgroundPoint(options, size, alignment, chart) { + const { caretSize, caretPadding, cornerRadius } = options; + const { xAlign, yAlign } = alignment; + const paddingAndSize = caretSize + caretPadding; + const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); + let x = alignX(size, xAlign); + const y = alignY(size, yAlign, paddingAndSize); + if (yAlign === "center") { + if (xAlign === "left") { + x += paddingAndSize; + } else if (xAlign === "right") { + x -= paddingAndSize; + } + } else if (xAlign === "left") { + x -= Math.max(topLeft, bottomLeft) + caretSize; + } else if (xAlign === "right") { + x += Math.max(topRight, bottomRight) + caretSize; + } + return { + x: _limitValue(x, 0, chart.width - size.width), + y: _limitValue(y, 0, chart.height - size.height) + }; +} +function getAlignedX(tooltip, align, options) { + const padding = toPadding(options.padding); + return align === "center" ? tooltip.x + tooltip.width / 2 : align === "right" ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left; +} +function getBeforeAfterBodyLines(callback2) { + return pushOrConcat([], splitNewlines(callback2)); +} +function createTooltipContext(parent, tooltip, tooltipItems) { + return createContext(parent, { + tooltip, + tooltipItems, + type: "tooltip" + }); +} +function overrideCallbacks(callbacks, context) { + const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks; + return override ? callbacks.override(override) : callbacks; +} +var defaultCallbacks = { + beforeTitle: noop, + title(tooltipItems) { + if (tooltipItems.length > 0) { + const item = tooltipItems[0]; + const labels = item.chart.data.labels; + const labelCount = labels ? labels.length : 0; + if (this && this.options && this.options.mode === "dataset") { + return item.dataset.label || ""; + } else if (item.label) { + return item.label; + } else if (labelCount > 0 && item.dataIndex < labelCount) { + return labels[item.dataIndex]; + } + } + return ""; + }, + afterTitle: noop, + beforeBody: noop, + beforeLabel: noop, + label(tooltipItem) { + if (this && this.options && this.options.mode === "dataset") { + return tooltipItem.label + ": " + tooltipItem.formattedValue || tooltipItem.formattedValue; + } + let label = tooltipItem.dataset.label || ""; + if (label) { + label += ": "; + } + const value = tooltipItem.formattedValue; + if (!isNullOrUndef(value)) { + label += value; + } + return label; + }, + labelColor(tooltipItem) { + const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); + const options = meta.controller.getStyle(tooltipItem.dataIndex); + return { + borderColor: options.borderColor, + backgroundColor: options.backgroundColor, + borderWidth: options.borderWidth, + borderDash: options.borderDash, + borderDashOffset: options.borderDashOffset, + borderRadius: 0 + }; + }, + labelTextColor() { + return this.options.bodyColor; + }, + labelPointStyle(tooltipItem) { + const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); + const options = meta.controller.getStyle(tooltipItem.dataIndex); + return { + pointStyle: options.pointStyle, + rotation: options.rotation + }; + }, + afterLabel: noop, + afterBody: noop, + beforeFooter: noop, + footer: noop, + afterFooter: noop +}; +function invokeCallbackWithFallback(callbacks, name, ctx, arg) { + const result = callbacks[name].call(ctx, arg); + if (typeof result === "undefined") { + return defaultCallbacks[name].call(ctx, arg); + } + return result; +} +var Tooltip = class extends Element { + constructor(config) { + super(); + this.opacity = 0; + this._active = []; + this._eventPosition = void 0; + this._size = void 0; + this._cachedAnimations = void 0; + this._tooltipItems = []; + this.$animations = void 0; + this.$context = void 0; + this.chart = config.chart; + this.options = config.options; + this.dataPoints = void 0; + this.title = void 0; + this.beforeBody = void 0; + this.body = void 0; + this.afterBody = void 0; + this.footer = void 0; + this.xAlign = void 0; + this.yAlign = void 0; + this.x = void 0; + this.y = void 0; + this.height = void 0; + this.width = void 0; + this.caretX = void 0; + this.caretY = void 0; + this.labelColors = void 0; + this.labelPointStyles = void 0; + this.labelTextColors = void 0; + } + initialize(options) { + this.options = options; + this._cachedAnimations = void 0; + this.$context = void 0; + } + _resolveAnimations() { + const cached = this._cachedAnimations; + if (cached) { + return cached; + } + const chart = this.chart; + const options = this.options.setContext(this.getContext()); + const opts = options.enabled && chart.options.animation && options.animations; + const animations = new Animations(this.chart, opts); + if (opts._cacheable) { + this._cachedAnimations = Object.freeze(animations); + } + return animations; + } + getContext() { + return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems)); + } + getTitle(context, options) { + const { callbacks } = options; + const beforeTitle = invokeCallbackWithFallback(callbacks, "beforeTitle", this, context); + const title = invokeCallbackWithFallback(callbacks, "title", this, context); + const afterTitle = invokeCallbackWithFallback(callbacks, "afterTitle", this, context); + let lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); + return lines; + } + getBeforeBody(tooltipItems, options) { + return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, "beforeBody", this, tooltipItems)); + } + getBody(tooltipItems, options) { + const { callbacks } = options; + const bodyItems = []; + each(tooltipItems, (context) => { + const bodyItem = { + before: [], + lines: [], + after: [] + }; + const scoped = overrideCallbacks(callbacks, context); + pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, "beforeLabel", this, context))); + pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, "label", this, context)); + pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, "afterLabel", this, context))); + bodyItems.push(bodyItem); + }); + return bodyItems; + } + getAfterBody(tooltipItems, options) { + return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, "afterBody", this, tooltipItems)); + } + getFooter(tooltipItems, options) { + const { callbacks } = options; + const beforeFooter = invokeCallbackWithFallback(callbacks, "beforeFooter", this, tooltipItems); + const footer = invokeCallbackWithFallback(callbacks, "footer", this, tooltipItems); + const afterFooter = invokeCallbackWithFallback(callbacks, "afterFooter", this, tooltipItems); + let lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); + return lines; + } + _createItems(options) { + const active = this._active; + const data = this.chart.data; + const labelColors = []; + const labelPointStyles = []; + const labelTextColors = []; + let tooltipItems = []; + let i, len; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(this.chart, active[i])); + } + if (options.filter) { + tooltipItems = tooltipItems.filter((element, index2, array) => options.filter(element, index2, array, data)); + } + if (options.itemSort) { + tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data)); + } + each(tooltipItems, (context) => { + const scoped = overrideCallbacks(options.callbacks, context); + labelColors.push(invokeCallbackWithFallback(scoped, "labelColor", this, context)); + labelPointStyles.push(invokeCallbackWithFallback(scoped, "labelPointStyle", this, context)); + labelTextColors.push(invokeCallbackWithFallback(scoped, "labelTextColor", this, context)); + }); + this.labelColors = labelColors; + this.labelPointStyles = labelPointStyles; + this.labelTextColors = labelTextColors; + this.dataPoints = tooltipItems; + return tooltipItems; + } + update(changed, replay) { + const options = this.options.setContext(this.getContext()); + const active = this._active; + let properties; + let tooltipItems = []; + if (!active.length) { + if (this.opacity !== 0) { + properties = { + opacity: 0 + }; + } + } else { + const position = positioners[options.position].call(this, active, this._eventPosition); + tooltipItems = this._createItems(options); + this.title = this.getTitle(tooltipItems, options); + this.beforeBody = this.getBeforeBody(tooltipItems, options); + this.body = this.getBody(tooltipItems, options); + this.afterBody = this.getAfterBody(tooltipItems, options); + this.footer = this.getFooter(tooltipItems, options); + const size = this._size = getTooltipSize(this, options); + const positionAndSize = Object.assign({}, position, size); + const alignment = determineAlignment(this.chart, options, positionAndSize); + const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart); + this.xAlign = alignment.xAlign; + this.yAlign = alignment.yAlign; + properties = { + opacity: 1, + x: backgroundPoint.x, + y: backgroundPoint.y, + width: size.width, + height: size.height, + caretX: position.x, + caretY: position.y + }; + } + this._tooltipItems = tooltipItems; + this.$context = void 0; + if (properties) { + this._resolveAnimations().update(this, properties); + } + if (changed && options.external) { + options.external.call(this, { + chart: this.chart, + tooltip: this, + replay + }); + } + } + drawCaret(tooltipPoint, ctx, size, options) { + const caretPosition = this.getCaretPosition(tooltipPoint, size, options); + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + } + getCaretPosition(tooltipPoint, size, options) { + const { xAlign, yAlign } = this; + const { caretSize, cornerRadius } = options; + const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); + const { x: ptX, y: ptY } = tooltipPoint; + const { width, height } = size; + let x1, x2, x3, y1, y2, y3; + if (yAlign === "center") { + y2 = ptY + height / 2; + if (xAlign === "left") { + x1 = ptX; + x2 = x1 - caretSize; + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + x3 = x1; + } else { + if (xAlign === "left") { + x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize; + } else if (xAlign === "right") { + x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize; + } else { + x2 = this.caretX; + } + if (yAlign === "top") { + y1 = ptY; + y2 = y1 - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + x1 = x2 + caretSize; + x3 = x2 - caretSize; + } + y3 = y1; + } + return { + x1, + x2, + x3, + y1, + y2, + y3 + }; + } + drawTitle(pt, ctx, options) { + const title = this.title; + const length = title.length; + let titleFont, titleSpacing, i; + if (length) { + const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); + pt.x = getAlignedX(this, options.titleAlign, options); + ctx.textAlign = rtlHelper.textAlign(options.titleAlign); + ctx.textBaseline = "middle"; + titleFont = toFont(options.titleFont); + titleSpacing = options.titleSpacing; + ctx.fillStyle = options.titleColor; + ctx.font = titleFont.string; + for (i = 0; i < length; ++i) { + ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2); + pt.y += titleFont.lineHeight + titleSpacing; + if (i + 1 === length) { + pt.y += options.titleMarginBottom - titleSpacing; + } + } + } + } + _drawColorBox(ctx, pt, i, rtlHelper, options) { + const labelColor = this.labelColors[i]; + const labelPointStyle = this.labelPointStyles[i]; + const { boxHeight, boxWidth } = options; + const bodyFont = toFont(options.bodyFont); + const colorX = getAlignedX(this, "left", options); + const rtlColorX = rtlHelper.x(colorX); + const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0; + const colorY = pt.y + yOffSet; + if (options.usePointStyle) { + const drawOptions = { + radius: Math.min(boxWidth, boxHeight) / 2, + pointStyle: labelPointStyle.pointStyle, + rotation: labelPointStyle.rotation, + borderWidth: 1 + }; + const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2; + const centerY = colorY + boxHeight / 2; + ctx.strokeStyle = options.multiKeyBackground; + ctx.fillStyle = options.multiKeyBackground; + drawPoint(ctx, drawOptions, centerX, centerY); + ctx.strokeStyle = labelColor.borderColor; + ctx.fillStyle = labelColor.backgroundColor; + drawPoint(ctx, drawOptions, centerX, centerY); + } else { + ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1; + ctx.strokeStyle = labelColor.borderColor; + ctx.setLineDash(labelColor.borderDash || []); + ctx.lineDashOffset = labelColor.borderDashOffset || 0; + const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth); + const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2); + const borderRadius = toTRBLCorners(labelColor.borderRadius); + if (Object.values(borderRadius).some((v) => v !== 0)) { + ctx.beginPath(); + ctx.fillStyle = options.multiKeyBackground; + addRoundedRectPath(ctx, { + x: outerX, + y: colorY, + w: boxWidth, + h: boxHeight, + radius: borderRadius + }); + ctx.fill(); + ctx.stroke(); + ctx.fillStyle = labelColor.backgroundColor; + ctx.beginPath(); + addRoundedRectPath(ctx, { + x: innerX, + y: colorY + 1, + w: boxWidth - 2, + h: boxHeight - 2, + radius: borderRadius + }); + ctx.fill(); + } else { + ctx.fillStyle = options.multiKeyBackground; + ctx.fillRect(outerX, colorY, boxWidth, boxHeight); + ctx.strokeRect(outerX, colorY, boxWidth, boxHeight); + ctx.fillStyle = labelColor.backgroundColor; + ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2); + } + } + ctx.fillStyle = this.labelTextColors[i]; + } + drawBody(pt, ctx, options) { + const { body } = this; + const { bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding } = options; + const bodyFont = toFont(options.bodyFont); + let bodyLineHeight = bodyFont.lineHeight; + let xLinePadding = 0; + const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); + const fillLineOfText = function(line) { + ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2); + pt.y += bodyLineHeight + bodySpacing; + }; + const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); + let bodyItem, textColor, lines, i, j, ilen, jlen; + ctx.textAlign = bodyAlign; + ctx.textBaseline = "middle"; + ctx.font = bodyFont.string; + pt.x = getAlignedX(this, bodyAlignForCalculation, options); + ctx.fillStyle = options.bodyColor; + each(this.beforeBody, fillLineOfText); + xLinePadding = displayColors && bodyAlignForCalculation !== "right" ? bodyAlign === "center" ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0; + for (i = 0, ilen = body.length; i < ilen; ++i) { + bodyItem = body[i]; + textColor = this.labelTextColors[i]; + ctx.fillStyle = textColor; + each(bodyItem.before, fillLineOfText); + lines = bodyItem.lines; + if (displayColors && lines.length) { + this._drawColorBox(ctx, pt, i, rtlHelper, options); + bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight); + } + for (j = 0, jlen = lines.length; j < jlen; ++j) { + fillLineOfText(lines[j]); + bodyLineHeight = bodyFont.lineHeight; + } + each(bodyItem.after, fillLineOfText); + } + xLinePadding = 0; + bodyLineHeight = bodyFont.lineHeight; + each(this.afterBody, fillLineOfText); + pt.y -= bodySpacing; + } + drawFooter(pt, ctx, options) { + const footer = this.footer; + const length = footer.length; + let footerFont, i; + if (length) { + const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); + pt.x = getAlignedX(this, options.footerAlign, options); + pt.y += options.footerMarginTop; + ctx.textAlign = rtlHelper.textAlign(options.footerAlign); + ctx.textBaseline = "middle"; + footerFont = toFont(options.footerFont); + ctx.fillStyle = options.footerColor; + ctx.font = footerFont.string; + for (i = 0; i < length; ++i) { + ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2); + pt.y += footerFont.lineHeight + options.footerSpacing; + } + } + } + drawBackground(pt, ctx, tooltipSize, options) { + const { xAlign, yAlign } = this; + const { x, y } = pt; + const { width, height } = tooltipSize; + const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(options.cornerRadius); + ctx.fillStyle = options.backgroundColor; + ctx.strokeStyle = options.borderColor; + ctx.lineWidth = options.borderWidth; + ctx.beginPath(); + ctx.moveTo(x + topLeft, y); + if (yAlign === "top") { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + width - topRight, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + topRight); + if (yAlign === "center" && xAlign === "right") { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + width, y + height - bottomRight); + ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height); + if (yAlign === "bottom") { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x + bottomLeft, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft); + if (yAlign === "center" && xAlign === "left") { + this.drawCaret(pt, ctx, tooltipSize, options); + } + ctx.lineTo(x, y + topLeft); + ctx.quadraticCurveTo(x, y, x + topLeft, y); + ctx.closePath(); + ctx.fill(); + if (options.borderWidth > 0) { + ctx.stroke(); + } + } + _updateAnimationTarget(options) { + const chart = this.chart; + const anims = this.$animations; + const animX = anims && anims.x; + const animY = anims && anims.y; + if (animX || animY) { + const position = positioners[options.position].call(this, this._active, this._eventPosition); + if (!position) { + return; + } + const size = this._size = getTooltipSize(this, options); + const positionAndSize = Object.assign({}, position, this._size); + const alignment = determineAlignment(chart, options, positionAndSize); + const point = getBackgroundPoint(options, positionAndSize, alignment, chart); + if (animX._to !== point.x || animY._to !== point.y) { + this.xAlign = alignment.xAlign; + this.yAlign = alignment.yAlign; + this.width = size.width; + this.height = size.height; + this.caretX = position.x; + this.caretY = position.y; + this._resolveAnimations().update(this, point); + } + } + } + _willRender() { + return !!this.opacity; + } + draw(ctx) { + const options = this.options.setContext(this.getContext()); + let opacity = this.opacity; + if (!opacity) { + return; + } + this._updateAnimationTarget(options); + const tooltipSize = { + width: this.width, + height: this.height + }; + const pt = { + x: this.x, + y: this.y + }; + opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity; + const padding = toPadding(options.padding); + const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length; + if (options.enabled && hasTooltipContent) { + ctx.save(); + ctx.globalAlpha = opacity; + this.drawBackground(pt, ctx, tooltipSize, options); + overrideTextDirection(ctx, options.textDirection); + pt.y += padding.top; + this.drawTitle(pt, ctx, options); + this.drawBody(pt, ctx, options); + this.drawFooter(pt, ctx, options); + restoreTextDirection(ctx, options.textDirection); + ctx.restore(); + } + } + getActiveElements() { + return this._active || []; + } + setActiveElements(activeElements, eventPosition) { + const lastActive = this._active; + const active = activeElements.map(({ datasetIndex, index: index2 }) => { + const meta = this.chart.getDatasetMeta(datasetIndex); + if (!meta) { + throw new Error("Cannot find a dataset at index " + datasetIndex); + } + return { + datasetIndex, + element: meta.data[index2], + index: index2 + }; + }); + const changed = !_elementsEqual(lastActive, active); + const positionChanged = this._positionChanged(active, eventPosition); + if (changed || positionChanged) { + this._active = active; + this._eventPosition = eventPosition; + this._ignoreReplayEvents = true; + this.update(true); + } + } + handleEvent(e, replay, inChartArea = true) { + if (replay && this._ignoreReplayEvents) { + return false; + } + this._ignoreReplayEvents = false; + const options = this.options; + const lastActive = this._active || []; + const active = this._getActiveElements(e, lastActive, replay, inChartArea); + const positionChanged = this._positionChanged(active, e); + const changed = replay || !_elementsEqual(active, lastActive) || positionChanged; + if (changed) { + this._active = active; + if (options.enabled || options.external) { + this._eventPosition = { + x: e.x, + y: e.y + }; + this.update(true, replay); + } + } + return changed; + } + _getActiveElements(e, lastActive, replay, inChartArea) { + const options = this.options; + if (e.type === "mouseout") { + return []; + } + if (!inChartArea) { + return lastActive.filter((i) => this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== void 0); + } + const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay); + if (options.reverse) { + active.reverse(); + } + return active; + } + _positionChanged(active, e) { + const { caretX, caretY, options } = this; + const position = positioners[options.position].call(this, active, e); + return position !== false && (caretX !== position.x || caretY !== position.y); + } +}; +__publicField(Tooltip, "positioners", positioners); +var plugin_tooltip = { + id: "tooltip", + _element: Tooltip, + positioners, + afterInit(chart, _args, options) { + if (options) { + chart.tooltip = new Tooltip({ + chart, + options + }); + } + }, + beforeUpdate(chart, _args, options) { + if (chart.tooltip) { + chart.tooltip.initialize(options); + } + }, + reset(chart, _args, options) { + if (chart.tooltip) { + chart.tooltip.initialize(options); + } + }, + afterDraw(chart) { + const tooltip = chart.tooltip; + if (tooltip && tooltip._willRender()) { + const args = { + tooltip + }; + if (chart.notifyPlugins("beforeTooltipDraw", { + ...args, + cancelable: true + }) === false) { + return; + } + tooltip.draw(chart.ctx); + chart.notifyPlugins("afterTooltipDraw", args); + } + }, + afterEvent(chart, args) { + if (chart.tooltip) { + const useFinalPosition = args.replay; + if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) { + args.changed = true; + } + } + }, + defaults: { + enabled: true, + external: null, + position: "average", + backgroundColor: "rgba(0,0,0,0.8)", + titleColor: "#fff", + titleFont: { + weight: "bold" + }, + titleSpacing: 2, + titleMarginBottom: 6, + titleAlign: "left", + bodyColor: "#fff", + bodySpacing: 2, + bodyFont: {}, + bodyAlign: "left", + footerColor: "#fff", + footerSpacing: 2, + footerMarginTop: 6, + footerFont: { + weight: "bold" + }, + footerAlign: "left", + padding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + boxHeight: (ctx, opts) => opts.bodyFont.size, + boxWidth: (ctx, opts) => opts.bodyFont.size, + multiKeyBackground: "#fff", + displayColors: true, + boxPadding: 0, + borderColor: "rgba(0,0,0,0)", + borderWidth: 0, + animation: { + duration: 400, + easing: "easeOutQuart" + }, + animations: { + numbers: { + type: "number", + properties: [ + "x", + "y", + "width", + "height", + "caretX", + "caretY" + ] + }, + opacity: { + easing: "linear", + duration: 200 + } + }, + callbacks: defaultCallbacks + }, + defaultRoutes: { + bodyFont: "font", + footerFont: "font", + titleFont: "font" + }, + descriptors: { + _scriptable: (name) => name !== "filter" && name !== "itemSort" && name !== "external", + _indexable: false, + callbacks: { + _scriptable: false, + _indexable: false + }, + animation: { + _fallback: false + }, + animations: { + _fallback: "animation" + } + }, + additionalOptionScopes: [ + "interaction" + ] +}; +var plugins = Object.freeze({ + __proto__: null, + Colors: plugin_colors, + Decimation: plugin_decimation, + Filler: index, + Legend: plugin_legend, + SubTitle: plugin_subtitle, + Title: plugin_title, + Tooltip: plugin_tooltip +}); +var addIfString = (labels, raw, index2, addedLabels) => { + if (typeof raw === "string") { + index2 = labels.push(raw) - 1; + addedLabels.unshift({ + index: index2, + label: raw + }); + } else if (isNaN(raw)) { + index2 = null; + } + return index2; +}; +function findOrAddLabel(labels, raw, index2, addedLabels) { + const first = labels.indexOf(raw); + if (first === -1) { + return addIfString(labels, raw, index2, addedLabels); + } + const last = labels.lastIndexOf(raw); + return first !== last ? index2 : first; +} +var validIndex = (index2, max) => index2 === null ? null : _limitValue(Math.round(index2), 0, max); +function _getLabelForValue(value) { + const labels = this.getLabels(); + if (value >= 0 && value < labels.length) { + return labels[value]; + } + return value; +} +var CategoryScale = class extends Scale { + constructor(cfg) { + super(cfg); + this._startValue = void 0; + this._valueRange = 0; + this._addedLabels = []; + } + init(scaleOptions) { + const added = this._addedLabels; + if (added.length) { + const labels = this.getLabels(); + for (const { index: index2, label } of added) { + if (labels[index2] === label) { + labels.splice(index2, 1); + } + } + this._addedLabels = []; + } + super.init(scaleOptions); + } + parse(raw, index2) { + if (isNullOrUndef(raw)) { + return null; + } + const labels = this.getLabels(); + index2 = isFinite(index2) && labels[index2] === raw ? index2 : findOrAddLabel(labels, raw, valueOrDefault(index2, raw), this._addedLabels); + return validIndex(index2, labels.length - 1); + } + determineDataLimits() { + const { minDefined, maxDefined } = this.getUserBounds(); + let { min, max } = this.getMinMax(true); + if (this.options.bounds === "ticks") { + if (!minDefined) { + min = 0; + } + if (!maxDefined) { + max = this.getLabels().length - 1; + } + } + this.min = min; + this.max = max; + } + buildTicks() { + const min = this.min; + const max = this.max; + const offset = this.options.offset; + const ticks = []; + let labels = this.getLabels(); + labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1); + this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1); + this._startValue = this.min - (offset ? 0.5 : 0); + for (let value = min; value <= max; value++) { + ticks.push({ + value + }); + } + return ticks; + } + getLabelForValue(value) { + return _getLabelForValue.call(this, value); + } + configure() { + super.configure(); + if (!this.isHorizontal()) { + this._reversePixels = !this._reversePixels; + } + } + getPixelForValue(value) { + if (typeof value !== "number") { + value = this.parse(value); + } + return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); + } + getPixelForTick(index2) { + const ticks = this.ticks; + if (index2 < 0 || index2 > ticks.length - 1) { + return null; + } + return this.getPixelForValue(ticks[index2].value); + } + getValueForPixel(pixel) { + return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange); + } + getBasePixel() { + return this.bottom; + } +}; +__publicField(CategoryScale, "id", "category"); +__publicField(CategoryScale, "defaults", { + ticks: { + callback: _getLabelForValue + } +}); +function generateTicks$1(generationOptions, dataRange) { + const ticks = []; + const MIN_SPACING = 1e-14; + const { bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds } = generationOptions; + const unit = step || 1; + const maxSpaces = maxTicks - 1; + const { min: rmin, max: rmax } = dataRange; + const minDefined = !isNullOrUndef(min); + const maxDefined = !isNullOrUndef(max); + const countDefined = !isNullOrUndef(count); + const minSpacing = (rmax - rmin) / (maxDigits + 1); + let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit; + let factor, niceMin, niceMax, numSpaces; + if (spacing < MIN_SPACING && !minDefined && !maxDefined) { + return [ + { + value: rmin + }, + { + value: rmax + } + ]; + } + numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); + if (numSpaces > maxSpaces) { + spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit; + } + if (!isNullOrUndef(precision)) { + factor = Math.pow(10, precision); + spacing = Math.ceil(spacing * factor) / factor; + } + if (bounds === "ticks") { + niceMin = Math.floor(rmin / spacing) * spacing; + niceMax = Math.ceil(rmax / spacing) * spacing; + } else { + niceMin = rmin; + niceMax = rmax; + } + if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1e3)) { + numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks)); + spacing = (max - min) / numSpaces; + niceMin = min; + niceMax = max; + } else if (countDefined) { + niceMin = minDefined ? min : niceMin; + niceMax = maxDefined ? max : niceMax; + numSpaces = count - 1; + spacing = (niceMax - niceMin) / numSpaces; + } else { + numSpaces = (niceMax - niceMin) / spacing; + if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1e3)) { + numSpaces = Math.round(numSpaces); + } else { + numSpaces = Math.ceil(numSpaces); + } + } + const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin)); + factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision); + niceMin = Math.round(niceMin * factor) / factor; + niceMax = Math.round(niceMax * factor) / factor; + let j = 0; + if (minDefined) { + if (includeBounds && niceMin !== min) { + ticks.push({ + value: min + }); + if (niceMin < min) { + j++; + } + if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) { + j++; + } + } else if (niceMin < min) { + j++; + } + } + for (; j < numSpaces; ++j) { + const tickValue = Math.round((niceMin + j * spacing) * factor) / factor; + if (maxDefined && tickValue > max) { + break; + } + ticks.push({ + value: tickValue + }); + } + if (maxDefined && includeBounds && niceMax !== max) { + if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) { + ticks[ticks.length - 1].value = max; + } else { + ticks.push({ + value: max + }); + } + } else if (!maxDefined || niceMax === max) { + ticks.push({ + value: niceMax + }); + } + return ticks; +} +function relativeLabelSize(value, minSpacing, { horizontal, minRotation }) { + const rad = toRadians(minRotation); + const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 1e-3; + const length = 0.75 * minSpacing * ("" + value).length; + return Math.min(minSpacing / ratio, length); +} +var LinearScaleBase = class extends Scale { + constructor(cfg) { + super(cfg); + this.start = void 0; + this.end = void 0; + this._startValue = void 0; + this._endValue = void 0; + this._valueRange = 0; + } + parse(raw, index2) { + if (isNullOrUndef(raw)) { + return null; + } + if ((typeof raw === "number" || raw instanceof Number) && !isFinite(+raw)) { + return null; + } + return +raw; + } + handleTickRangeOptions() { + const { beginAtZero } = this.options; + const { minDefined, maxDefined } = this.getUserBounds(); + let { min, max } = this; + const setMin = (v) => min = minDefined ? min : v; + const setMax = (v) => max = maxDefined ? max : v; + if (beginAtZero) { + const minSign = sign(min); + const maxSign = sign(max); + if (minSign < 0 && maxSign < 0) { + setMax(0); + } else if (minSign > 0 && maxSign > 0) { + setMin(0); + } + } + if (min === max) { + let offset = max === 0 ? 1 : Math.abs(max * 0.05); + setMax(max + offset); + if (!beginAtZero) { + setMin(min - offset); + } + } + this.min = min; + this.max = max; + } + getTickLimit() { + const tickOpts = this.options.ticks; + let { maxTicksLimit, stepSize } = tickOpts; + let maxTicks; + if (stepSize) { + maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1; + if (maxTicks > 1e3) { + console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`); + maxTicks = 1e3; + } + } else { + maxTicks = this.computeTickLimit(); + maxTicksLimit = maxTicksLimit || 11; + } + if (maxTicksLimit) { + maxTicks = Math.min(maxTicksLimit, maxTicks); + } + return maxTicks; + } + computeTickLimit() { + return Number.POSITIVE_INFINITY; + } + buildTicks() { + const opts = this.options; + const tickOpts = opts.ticks; + let maxTicks = this.getTickLimit(); + maxTicks = Math.max(2, maxTicks); + const numericGeneratorOptions = { + maxTicks, + bounds: opts.bounds, + min: opts.min, + max: opts.max, + precision: tickOpts.precision, + step: tickOpts.stepSize, + count: tickOpts.count, + maxDigits: this._maxDigits(), + horizontal: this.isHorizontal(), + minRotation: tickOpts.minRotation || 0, + includeBounds: tickOpts.includeBounds !== false + }; + const dataRange = this._range || this; + const ticks = generateTicks$1(numericGeneratorOptions, dataRange); + if (opts.bounds === "ticks") { + _setMinAndMaxByKey(ticks, this, "value"); + } + if (opts.reverse) { + ticks.reverse(); + this.start = this.max; + this.end = this.min; + } else { + this.start = this.min; + this.end = this.max; + } + return ticks; + } + configure() { + const ticks = this.ticks; + let start = this.min; + let end = this.max; + super.configure(); + if (this.options.offset && ticks.length) { + const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; + start -= offset; + end += offset; + } + this._startValue = start; + this._endValue = end; + this._valueRange = end - start; + } + getLabelForValue(value) { + return formatNumber(value, this.chart.options.locale, this.options.ticks.format); + } +}; +var LinearScale = class extends LinearScaleBase { + determineDataLimits() { + const { min, max } = this.getMinMax(true); + this.min = isNumberFinite(min) ? min : 0; + this.max = isNumberFinite(max) ? max : 1; + this.handleTickRangeOptions(); + } + computeTickLimit() { + const horizontal = this.isHorizontal(); + const length = horizontal ? this.width : this.height; + const minRotation = toRadians(this.options.ticks.minRotation); + const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 1e-3; + const tickFont = this._resolveTickFontOptions(0); + return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio)); + } + getPixelForValue(value) { + return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); + } + getValueForPixel(pixel) { + return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; + } +}; +__publicField(LinearScale, "id", "linear"); +__publicField(LinearScale, "defaults", { + ticks: { + callback: Ticks.formatters.numeric + } +}); +var log10Floor = (v) => Math.floor(log10(v)); +var changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m); +function isMajor(tickVal) { + const remain = tickVal / Math.pow(10, log10Floor(tickVal)); + return remain === 1; +} +function steps(min, max, rangeExp) { + const rangeStep = Math.pow(10, rangeExp); + const start = Math.floor(min / rangeStep); + const end = Math.ceil(max / rangeStep); + return end - start; +} +function startExp(min, max) { + const range = max - min; + let rangeExp = log10Floor(range); + while (steps(min, max, rangeExp) > 10) { + rangeExp++; + } + while (steps(min, max, rangeExp) < 10) { + rangeExp--; + } + return Math.min(rangeExp, log10Floor(min)); +} +function generateTicks(generationOptions, { min, max }) { + min = finiteOrDefault(generationOptions.min, min); + const ticks = []; + const minExp = log10Floor(min); + let exp = startExp(min, max); + let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; + const stepSize = Math.pow(10, exp); + const base = minExp > exp ? Math.pow(10, minExp) : 0; + const start = Math.round((min - base) * precision) / precision; + const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10; + let significand = Math.floor((start - offset) / Math.pow(10, exp)); + let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision); + while (value < max) { + ticks.push({ + value, + major: isMajor(value), + significand + }); + if (significand >= 10) { + significand = significand < 15 ? 15 : 20; + } else { + significand++; + } + if (significand >= 20) { + exp++; + significand = 2; + precision = exp >= 0 ? 1 : precision; + } + value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; + } + const lastTick = finiteOrDefault(generationOptions.max, value); + ticks.push({ + value: lastTick, + major: isMajor(lastTick), + significand + }); + return ticks; +} +var LogarithmicScale = class extends Scale { + constructor(cfg) { + super(cfg); + this.start = void 0; + this.end = void 0; + this._startValue = void 0; + this._valueRange = 0; + } + parse(raw, index2) { + const value = LinearScaleBase.prototype.parse.apply(this, [ + raw, + index2 + ]); + if (value === 0) { + this._zero = true; + return void 0; + } + return isNumberFinite(value) && value > 0 ? value : null; + } + determineDataLimits() { + const { min, max } = this.getMinMax(true); + this.min = isNumberFinite(min) ? Math.max(0, min) : null; + this.max = isNumberFinite(max) ? Math.max(0, max) : null; + if (this.options.beginAtZero) { + this._zero = true; + } + if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) { + this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0); + } + this.handleTickRangeOptions(); + } + handleTickRangeOptions() { + const { minDefined, maxDefined } = this.getUserBounds(); + let min = this.min; + let max = this.max; + const setMin = (v) => min = minDefined ? min : v; + const setMax = (v) => max = maxDefined ? max : v; + if (min === max) { + if (min <= 0) { + setMin(1); + setMax(10); + } else { + setMin(changeExponent(min, -1)); + setMax(changeExponent(max, 1)); + } + } + if (min <= 0) { + setMin(changeExponent(max, -1)); + } + if (max <= 0) { + setMax(changeExponent(min, 1)); + } + this.min = min; + this.max = max; + } + buildTicks() { + const opts = this.options; + const generationOptions = { + min: this._userMin, + max: this._userMax + }; + const ticks = generateTicks(generationOptions, this); + if (opts.bounds === "ticks") { + _setMinAndMaxByKey(ticks, this, "value"); + } + if (opts.reverse) { + ticks.reverse(); + this.start = this.max; + this.end = this.min; + } else { + this.start = this.min; + this.end = this.max; + } + return ticks; + } + getLabelForValue(value) { + return value === void 0 ? "0" : formatNumber(value, this.chart.options.locale, this.options.ticks.format); + } + configure() { + const start = this.min; + super.configure(); + this._startValue = log10(start); + this._valueRange = log10(this.max) - log10(start); + } + getPixelForValue(value) { + if (value === void 0 || value === 0) { + value = this.min; + } + if (value === null || isNaN(value)) { + return NaN; + } + return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange); + } + getValueForPixel(pixel) { + const decimal = this.getDecimalForPixel(pixel); + return Math.pow(10, this._startValue + decimal * this._valueRange); + } +}; +__publicField(LogarithmicScale, "id", "logarithmic"); +__publicField(LogarithmicScale, "defaults", { + ticks: { + callback: Ticks.formatters.logarithmic, + major: { + enabled: true + } + } +}); +function getTickBackdropHeight(opts) { + const tickOpts = opts.ticks; + if (tickOpts.display && opts.display) { + const padding = toPadding(tickOpts.backdropPadding); + return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height; + } + return 0; +} +function measureLabelSize(ctx, font, label) { + label = isArray(label) ? label : [ + label + ]; + return { + w: _longestText(ctx, font.string, label), + h: label.length * font.lineHeight + }; +} +function determineLimits(angle, pos, size, min, max) { + if (angle === min || angle === max) { + return { + start: pos - size / 2, + end: pos + size / 2 + }; + } else if (angle < min || angle > max) { + return { + start: pos - size, + end: pos + }; + } + return { + start: pos, + end: pos + size + }; +} +function fitWithPointLabels(scale) { + const orig = { + l: scale.left + scale._padding.left, + r: scale.right - scale._padding.right, + t: scale.top + scale._padding.top, + b: scale.bottom - scale._padding.bottom + }; + const limits = Object.assign({}, orig); + const labelSizes = []; + const padding = []; + const valueCount = scale._pointLabels.length; + const pointLabelOpts = scale.options.pointLabels; + const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0; + for (let i = 0; i < valueCount; i++) { + const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i)); + padding[i] = opts.padding; + const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle); + const plFont = toFont(opts.font); + const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]); + labelSizes[i] = textSize; + const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle); + const angle = Math.round(toDegrees(angleRadians)); + const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); + const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); + updateLimits(limits, orig, angleRadians, hLimits, vLimits); + } + scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b); + scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding); +} +function updateLimits(limits, orig, angle, hLimits, vLimits) { + const sin = Math.abs(Math.sin(angle)); + const cos = Math.abs(Math.cos(angle)); + let x = 0; + let y = 0; + if (hLimits.start < orig.l) { + x = (orig.l - hLimits.start) / sin; + limits.l = Math.min(limits.l, orig.l - x); + } else if (hLimits.end > orig.r) { + x = (hLimits.end - orig.r) / sin; + limits.r = Math.max(limits.r, orig.r + x); + } + if (vLimits.start < orig.t) { + y = (orig.t - vLimits.start) / cos; + limits.t = Math.min(limits.t, orig.t - y); + } else if (vLimits.end > orig.b) { + y = (vLimits.end - orig.b) / cos; + limits.b = Math.max(limits.b, orig.b + y); + } +} +function createPointLabelItem(scale, index2, itemOpts) { + const outerDistance = scale.drawingArea; + const { extra, additionalAngle, padding, size } = itemOpts; + const pointLabelPosition = scale.getPointPosition(index2, outerDistance + extra + padding, additionalAngle); + const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI))); + const y = yForAngle(pointLabelPosition.y, size.h, angle); + const textAlign = getTextAlignForAngle(angle); + const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign); + return { + visible: true, + x: pointLabelPosition.x, + y, + textAlign, + left, + top: y, + right: left + size.w, + bottom: y + size.h + }; +} +function isNotOverlapped(item, area) { + if (!area) { + return true; + } + const { left, top, right, bottom } = item; + const apexesInArea = _isPointInArea({ + x: left, + y: top + }, area) || _isPointInArea({ + x: left, + y: bottom + }, area) || _isPointInArea({ + x: right, + y: top + }, area) || _isPointInArea({ + x: right, + y: bottom + }, area); + return !apexesInArea; +} +function buildPointLabelItems(scale, labelSizes, padding) { + const items = []; + const valueCount = scale._pointLabels.length; + const opts = scale.options; + const { centerPointLabels, display } = opts.pointLabels; + const itemOpts = { + extra: getTickBackdropHeight(opts) / 2, + additionalAngle: centerPointLabels ? PI / valueCount : 0 + }; + let area; + for (let i = 0; i < valueCount; i++) { + itemOpts.padding = padding[i]; + itemOpts.size = labelSizes[i]; + const item = createPointLabelItem(scale, i, itemOpts); + items.push(item); + if (display === "auto") { + item.visible = isNotOverlapped(item, area); + if (item.visible) { + area = item; + } + } + } + return items; +} +function getTextAlignForAngle(angle) { + if (angle === 0 || angle === 180) { + return "center"; + } else if (angle < 180) { + return "left"; + } + return "right"; +} +function leftForTextAlign(x, w, align) { + if (align === "right") { + x -= w; + } else if (align === "center") { + x -= w / 2; + } + return x; +} +function yForAngle(y, h, angle) { + if (angle === 90 || angle === 270) { + y -= h / 2; + } else if (angle > 270 || angle < 90) { + y -= h; + } + return y; +} +function drawPointLabelBox(ctx, opts, item) { + const { left, top, right, bottom } = item; + const { backdropColor } = opts; + if (!isNullOrUndef(backdropColor)) { + const borderRadius = toTRBLCorners(opts.borderRadius); + const padding = toPadding(opts.backdropPadding); + ctx.fillStyle = backdropColor; + const backdropLeft = left - padding.left; + const backdropTop = top - padding.top; + const backdropWidth = right - left + padding.width; + const backdropHeight = bottom - top + padding.height; + if (Object.values(borderRadius).some((v) => v !== 0)) { + ctx.beginPath(); + addRoundedRectPath(ctx, { + x: backdropLeft, + y: backdropTop, + w: backdropWidth, + h: backdropHeight, + radius: borderRadius + }); + ctx.fill(); + } else { + ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight); + } + } +} +function drawPointLabels(scale, labelCount) { + const { ctx, options: { pointLabels } } = scale; + for (let i = labelCount - 1; i >= 0; i--) { + const item = scale._pointLabelItems[i]; + if (!item.visible) { + continue; + } + const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i)); + drawPointLabelBox(ctx, optsAtIndex, item); + const plFont = toFont(optsAtIndex.font); + const { x, y, textAlign } = item; + renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, { + color: optsAtIndex.color, + textAlign, + textBaseline: "middle" + }); + } +} +function pathRadiusLine(scale, radius, circular, labelCount) { + const { ctx } = scale; + if (circular) { + ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU); + } else { + let pointPosition = scale.getPointPosition(0, radius); + ctx.moveTo(pointPosition.x, pointPosition.y); + for (let i = 1; i < labelCount; i++) { + pointPosition = scale.getPointPosition(i, radius); + ctx.lineTo(pointPosition.x, pointPosition.y); + } + } +} +function drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) { + const ctx = scale.ctx; + const circular = gridLineOpts.circular; + const { color: color2, lineWidth } = gridLineOpts; + if (!circular && !labelCount || !color2 || !lineWidth || radius < 0) { + return; + } + ctx.save(); + ctx.strokeStyle = color2; + ctx.lineWidth = lineWidth; + ctx.setLineDash(borderOpts.dash || []); + ctx.lineDashOffset = borderOpts.dashOffset; + ctx.beginPath(); + pathRadiusLine(scale, radius, circular, labelCount); + ctx.closePath(); + ctx.stroke(); + ctx.restore(); +} +function createPointLabelContext(parent, index2, label) { + return createContext(parent, { + label, + index: index2, + type: "pointLabel" + }); +} +var RadialLinearScale = class extends LinearScaleBase { + constructor(cfg) { + super(cfg); + this.xCenter = void 0; + this.yCenter = void 0; + this.drawingArea = void 0; + this._pointLabels = []; + this._pointLabelItems = []; + } + setDimensions() { + const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2); + const w = this.width = this.maxWidth - padding.width; + const h = this.height = this.maxHeight - padding.height; + this.xCenter = Math.floor(this.left + w / 2 + padding.left); + this.yCenter = Math.floor(this.top + h / 2 + padding.top); + this.drawingArea = Math.floor(Math.min(w, h) / 2); + } + determineDataLimits() { + const { min, max } = this.getMinMax(false); + this.min = isNumberFinite(min) && !isNaN(min) ? min : 0; + this.max = isNumberFinite(max) && !isNaN(max) ? max : 0; + this.handleTickRangeOptions(); + } + computeTickLimit() { + return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); + } + generateTickLabels(ticks) { + LinearScaleBase.prototype.generateTickLabels.call(this, ticks); + this._pointLabels = this.getLabels().map((value, index2) => { + const label = callback(this.options.pointLabels.callback, [ + value, + index2 + ], this); + return label || label === 0 ? label : ""; + }).filter((v, i) => this.chart.getDataVisibility(i)); + } + fit() { + const opts = this.options; + if (opts.display && opts.pointLabels.display) { + fitWithPointLabels(this); + } else { + this.setCenterPoint(0, 0, 0, 0); + } + } + setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) { + this.xCenter += Math.floor((leftMovement - rightMovement) / 2); + this.yCenter += Math.floor((topMovement - bottomMovement) / 2); + this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement)); + } + getIndexAngle(index2) { + const angleMultiplier = TAU / (this._pointLabels.length || 1); + const startAngle = this.options.startAngle || 0; + return _normalizeAngle(index2 * angleMultiplier + toRadians(startAngle)); + } + getDistanceFromCenterForValue(value) { + if (isNullOrUndef(value)) { + return NaN; + } + const scalingFactor = this.drawingArea / (this.max - this.min); + if (this.options.reverse) { + return (this.max - value) * scalingFactor; + } + return (value - this.min) * scalingFactor; + } + getValueForDistanceFromCenter(distance) { + if (isNullOrUndef(distance)) { + return NaN; + } + const scaledDistance = distance / (this.drawingArea / (this.max - this.min)); + return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance; + } + getPointLabelContext(index2) { + const pointLabels = this._pointLabels || []; + if (index2 >= 0 && index2 < pointLabels.length) { + const pointLabel = pointLabels[index2]; + return createPointLabelContext(this.getContext(), index2, pointLabel); + } + } + getPointPosition(index2, distanceFromCenter, additionalAngle = 0) { + const angle = this.getIndexAngle(index2) - HALF_PI + additionalAngle; + return { + x: Math.cos(angle) * distanceFromCenter + this.xCenter, + y: Math.sin(angle) * distanceFromCenter + this.yCenter, + angle + }; + } + getPointPositionForValue(index2, value) { + return this.getPointPosition(index2, this.getDistanceFromCenterForValue(value)); + } + getBasePosition(index2) { + return this.getPointPositionForValue(index2 || 0, this.getBaseValue()); + } + getPointLabelPosition(index2) { + const { left, top, right, bottom } = this._pointLabelItems[index2]; + return { + left, + top, + right, + bottom + }; + } + drawBackground() { + const { backgroundColor, grid: { circular } } = this.options; + if (backgroundColor) { + const ctx = this.ctx; + ctx.save(); + ctx.beginPath(); + pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length); + ctx.closePath(); + ctx.fillStyle = backgroundColor; + ctx.fill(); + ctx.restore(); + } + } + drawGrid() { + const ctx = this.ctx; + const opts = this.options; + const { angleLines, grid, border } = opts; + const labelCount = this._pointLabels.length; + let i, offset, position; + if (opts.pointLabels.display) { + drawPointLabels(this, labelCount); + } + if (grid.display) { + this.ticks.forEach((tick, index2) => { + if (index2 !== 0 || index2 === 0 && this.min < 0) { + offset = this.getDistanceFromCenterForValue(tick.value); + const context = this.getContext(index2); + const optsAtIndex = grid.setContext(context); + const optsAtIndexBorder = border.setContext(context); + drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder); + } + }); + } + if (angleLines.display) { + ctx.save(); + for (i = labelCount - 1; i >= 0; i--) { + const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i)); + const { color: color2, lineWidth } = optsAtIndex; + if (!lineWidth || !color2) { + continue; + } + ctx.lineWidth = lineWidth; + ctx.strokeStyle = color2; + ctx.setLineDash(optsAtIndex.borderDash); + ctx.lineDashOffset = optsAtIndex.borderDashOffset; + offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max); + position = this.getPointPosition(i, offset); + ctx.beginPath(); + ctx.moveTo(this.xCenter, this.yCenter); + ctx.lineTo(position.x, position.y); + ctx.stroke(); + } + ctx.restore(); + } + } + drawBorder() { + } + drawLabels() { + const ctx = this.ctx; + const opts = this.options; + const tickOpts = opts.ticks; + if (!tickOpts.display) { + return; + } + const startAngle = this.getIndexAngle(0); + let offset, width; + ctx.save(); + ctx.translate(this.xCenter, this.yCenter); + ctx.rotate(startAngle); + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + this.ticks.forEach((tick, index2) => { + if (index2 === 0 && this.min >= 0 && !opts.reverse) { + return; + } + const optsAtIndex = tickOpts.setContext(this.getContext(index2)); + const tickFont = toFont(optsAtIndex.font); + offset = this.getDistanceFromCenterForValue(this.ticks[index2].value); + if (optsAtIndex.showLabelBackdrop) { + ctx.font = tickFont.string; + width = ctx.measureText(tick.label).width; + ctx.fillStyle = optsAtIndex.backdropColor; + const padding = toPadding(optsAtIndex.backdropPadding); + ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height); + } + renderText(ctx, tick.label, 0, -offset, tickFont, { + color: optsAtIndex.color, + strokeColor: optsAtIndex.textStrokeColor, + strokeWidth: optsAtIndex.textStrokeWidth + }); + }); + ctx.restore(); + } + drawTitle() { + } +}; +__publicField(RadialLinearScale, "id", "radialLinear"); +__publicField(RadialLinearScale, "defaults", { + display: true, + animate: true, + position: "chartArea", + angleLines: { + display: true, + lineWidth: 1, + borderDash: [], + borderDashOffset: 0 + }, + grid: { + circular: false + }, + startAngle: 0, + ticks: { + showLabelBackdrop: true, + callback: Ticks.formatters.numeric + }, + pointLabels: { + backdropColor: void 0, + backdropPadding: 2, + display: true, + font: { + size: 10 + }, + callback(label) { + return label; + }, + padding: 5, + centerPointLabels: false + } +}); +__publicField(RadialLinearScale, "defaultRoutes", { + "angleLines.color": "borderColor", + "pointLabels.color": "color", + "ticks.color": "color" +}); +__publicField(RadialLinearScale, "descriptors", { + angleLines: { + _fallback: "grid" + } +}); +var INTERVALS = { + millisecond: { + common: true, + size: 1, + steps: 1e3 + }, + second: { + common: true, + size: 1e3, + steps: 60 + }, + minute: { + common: true, + size: 6e4, + steps: 60 + }, + hour: { + common: true, + size: 36e5, + steps: 24 + }, + day: { + common: true, + size: 864e5, + steps: 30 + }, + week: { + common: false, + size: 6048e5, + steps: 4 + }, + month: { + common: true, + size: 2628e6, + steps: 12 + }, + quarter: { + common: false, + size: 7884e6, + steps: 4 + }, + year: { + common: true, + size: 3154e7 + } +}; +var UNITS = Object.keys(INTERVALS); +function sorter(a, b) { + return a - b; +} +function parse(scale, input) { + if (isNullOrUndef(input)) { + return null; + } + const adapter = scale._adapter; + const { parser, round: round2, isoWeekday } = scale._parseOpts; + let value = input; + if (typeof parser === "function") { + value = parser(value); + } + if (!isNumberFinite(value)) { + value = typeof parser === "string" ? adapter.parse(value, parser) : adapter.parse(value); + } + if (value === null) { + return null; + } + if (round2) { + value = round2 === "week" && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, "isoWeek", isoWeekday) : adapter.startOf(value, round2); + } + return +value; +} +function determineUnitForAutoTicks(minUnit, min, max, capacity) { + const ilen = UNITS.length; + for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { + const interval = INTERVALS[UNITS[i]]; + const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER; + if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { + return UNITS[i]; + } + } + return UNITS[ilen - 1]; +} +function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { + for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { + const unit = UNITS[i]; + if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { + return unit; + } + } + return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; +} +function determineMajorUnit(unit) { + for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { + if (INTERVALS[UNITS[i]].common) { + return UNITS[i]; + } + } +} +function addTick(ticks, time, timestamps) { + if (!timestamps) { + ticks[time] = true; + } else if (timestamps.length) { + const { lo, hi } = _lookup(timestamps, time); + const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi]; + ticks[timestamp] = true; + } +} +function setMajorTicks(scale, ticks, map3, majorUnit) { + const adapter = scale._adapter; + const first = +adapter.startOf(ticks[0].value, majorUnit); + const last = ticks[ticks.length - 1].value; + let major, index2; + for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { + index2 = map3[major]; + if (index2 >= 0) { + ticks[index2].major = true; + } + } + return ticks; +} +function ticksFromTimestamps(scale, values, majorUnit) { + const ticks = []; + const map3 = {}; + const ilen = values.length; + let i, value; + for (i = 0; i < ilen; ++i) { + value = values[i]; + map3[value] = i; + ticks.push({ + value, + major: false + }); + } + return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map3, majorUnit); +} +var TimeScale = class extends Scale { + constructor(props) { + super(props); + this._cache = { + data: [], + labels: [], + all: [] + }; + this._unit = "day"; + this._majorUnit = void 0; + this._offsets = {}; + this._normalized = false; + this._parseOpts = void 0; + } + init(scaleOpts, opts = {}) { + const time = scaleOpts.time || (scaleOpts.time = {}); + const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date); + adapter.init(opts); + mergeIf(time.displayFormats, adapter.formats()); + this._parseOpts = { + parser: time.parser, + round: time.round, + isoWeekday: time.isoWeekday + }; + super.init(scaleOpts); + this._normalized = opts.normalized; + } + parse(raw, index2) { + if (raw === void 0) { + return null; + } + return parse(this, raw); + } + beforeLayout() { + super.beforeLayout(); + this._cache = { + data: [], + labels: [], + all: [] + }; + } + determineDataLimits() { + const options = this.options; + const adapter = this._adapter; + const unit = options.time.unit || "day"; + let { min, max, minDefined, maxDefined } = this.getUserBounds(); + function _applyBounds(bounds) { + if (!minDefined && !isNaN(bounds.min)) { + min = Math.min(min, bounds.min); + } + if (!maxDefined && !isNaN(bounds.max)) { + max = Math.max(max, bounds.max); + } + } + if (!minDefined || !maxDefined) { + _applyBounds(this._getLabelBounds()); + if (options.bounds !== "ticks" || options.ticks.source !== "labels") { + _applyBounds(this.getMinMax(false)); + } + } + min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit); + max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1; + this.min = Math.min(min, max - 1); + this.max = Math.max(min + 1, max); + } + _getLabelBounds() { + const arr = this.getLabelTimestamps(); + let min = Number.POSITIVE_INFINITY; + let max = Number.NEGATIVE_INFINITY; + if (arr.length) { + min = arr[0]; + max = arr[arr.length - 1]; + } + return { + min, + max + }; + } + buildTicks() { + const options = this.options; + const timeOpts = options.time; + const tickOpts = options.ticks; + const timestamps = tickOpts.source === "labels" ? this.getLabelTimestamps() : this._generate(); + if (options.bounds === "ticks" && timestamps.length) { + this.min = this._userMin || timestamps[0]; + this.max = this._userMax || timestamps[timestamps.length - 1]; + } + const min = this.min; + const max = this.max; + const ticks = _filterBetween(timestamps, min, max); + this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max)); + this._majorUnit = !tickOpts.major.enabled || this._unit === "year" ? void 0 : determineMajorUnit(this._unit); + this.initOffsets(timestamps); + if (options.reverse) { + ticks.reverse(); + } + return ticksFromTimestamps(this, ticks, this._majorUnit); + } + afterAutoSkip() { + if (this.options.offsetAfterAutoskip) { + this.initOffsets(this.ticks.map((tick) => +tick.value)); + } + } + initOffsets(timestamps = []) { + let start = 0; + let end = 0; + let first, last; + if (this.options.offset && timestamps.length) { + first = this.getDecimalForValue(timestamps[0]); + if (timestamps.length === 1) { + start = 1 - first; + } else { + start = (this.getDecimalForValue(timestamps[1]) - first) / 2; + } + last = this.getDecimalForValue(timestamps[timestamps.length - 1]); + if (timestamps.length === 1) { + end = last; + } else { + end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2; + } + } + const limit = timestamps.length < 3 ? 0.5 : 0.25; + start = _limitValue(start, 0, limit); + end = _limitValue(end, 0, limit); + this._offsets = { + start, + end, + factor: 1 / (start + 1 + end) + }; + } + _generate() { + const adapter = this._adapter; + const min = this.min; + const max = this.max; + const options = this.options; + const timeOpts = options.time; + const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min)); + const stepSize = valueOrDefault(options.ticks.stepSize, 1); + const weekday = minor === "week" ? timeOpts.isoWeekday : false; + const hasWeekday = isNumber(weekday) || weekday === true; + const ticks = {}; + let first = min; + let time, count; + if (hasWeekday) { + first = +adapter.startOf(first, "isoWeek", weekday); + } + first = +adapter.startOf(first, hasWeekday ? "day" : minor); + if (adapter.diff(max, min, minor) > 1e5 * stepSize) { + throw new Error(min + " and " + max + " are too far apart with stepSize of " + stepSize + " " + minor); + } + const timestamps = options.ticks.source === "data" && this.getDataTimestamps(); + for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) { + addTick(ticks, time, timestamps); + } + if (time === max || options.bounds === "ticks" || count === 1) { + addTick(ticks, time, timestamps); + } + return Object.keys(ticks).sort(sorter).map((x) => +x); + } + getLabelForValue(value) { + const adapter = this._adapter; + const timeOpts = this.options.time; + if (timeOpts.tooltipFormat) { + return adapter.format(value, timeOpts.tooltipFormat); + } + return adapter.format(value, timeOpts.displayFormats.datetime); + } + format(value, format) { + const options = this.options; + const formats = options.time.displayFormats; + const unit = this._unit; + const fmt = format || formats[unit]; + return this._adapter.format(value, fmt); + } + _tickFormatFunction(time, index2, ticks, format) { + const options = this.options; + const formatter = options.ticks.callback; + if (formatter) { + return callback(formatter, [ + time, + index2, + ticks + ], this); + } + const formats = options.time.displayFormats; + const unit = this._unit; + const majorUnit = this._majorUnit; + const minorFormat = unit && formats[unit]; + const majorFormat = majorUnit && formats[majorUnit]; + const tick = ticks[index2]; + const major = majorUnit && majorFormat && tick && tick.major; + return this._adapter.format(time, format || (major ? majorFormat : minorFormat)); + } + generateTickLabels(ticks) { + let i, ilen, tick; + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + tick = ticks[i]; + tick.label = this._tickFormatFunction(tick.value, i, ticks); + } + } + getDecimalForValue(value) { + return value === null ? NaN : (value - this.min) / (this.max - this.min); + } + getPixelForValue(value) { + const offsets = this._offsets; + const pos = this.getDecimalForValue(value); + return this.getPixelForDecimal((offsets.start + pos) * offsets.factor); + } + getValueForPixel(pixel) { + const offsets = this._offsets; + const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; + return this.min + pos * (this.max - this.min); + } + _getLabelSize(label) { + const ticksOpts = this.options.ticks; + const tickLabelWidth = this.ctx.measureText(label).width; + const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); + const cosRotation = Math.cos(angle); + const sinRotation = Math.sin(angle); + const tickFontSize = this._resolveTickFontOptions(0).size; + return { + w: tickLabelWidth * cosRotation + tickFontSize * sinRotation, + h: tickLabelWidth * sinRotation + tickFontSize * cosRotation + }; + } + _getLabelCapacity(exampleTime) { + const timeOpts = this.options.time; + const displayFormats = timeOpts.displayFormats; + const format = displayFormats[timeOpts.unit] || displayFormats.millisecond; + const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [ + exampleTime + ], this._majorUnit), format); + const size = this._getLabelSize(exampleLabel); + const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1; + return capacity > 0 ? capacity : 1; + } + getDataTimestamps() { + let timestamps = this._cache.data || []; + let i, ilen; + if (timestamps.length) { + return timestamps; + } + const metas = this.getMatchingVisibleMetas(); + if (this._normalized && metas.length) { + return this._cache.data = metas[0].controller.getAllParsedValues(this); + } + for (i = 0, ilen = metas.length; i < ilen; ++i) { + timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this)); + } + return this._cache.data = this.normalize(timestamps); + } + getLabelTimestamps() { + const timestamps = this._cache.labels || []; + let i, ilen; + if (timestamps.length) { + return timestamps; + } + const labels = this.getLabels(); + for (i = 0, ilen = labels.length; i < ilen; ++i) { + timestamps.push(parse(this, labels[i])); + } + return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps); + } + normalize(values) { + return _arrayUnique(values.sort(sorter)); + } +}; +__publicField(TimeScale, "id", "time"); +__publicField(TimeScale, "defaults", { + bounds: "data", + adapters: {}, + time: { + parser: false, + unit: false, + round: false, + isoWeekday: false, + minUnit: "millisecond", + displayFormats: {} + }, + ticks: { + source: "auto", + callback: false, + major: { + enabled: false + } + } +}); +function interpolate2(table, val, reverse) { + let lo = 0; + let hi = table.length - 1; + let prevSource, nextSource, prevTarget, nextTarget; + if (reverse) { + if (val >= table[lo].pos && val <= table[hi].pos) { + ({ lo, hi } = _lookupByKey(table, "pos", val)); + } + ({ pos: prevSource, time: prevTarget } = table[lo]); + ({ pos: nextSource, time: nextTarget } = table[hi]); + } else { + if (val >= table[lo].time && val <= table[hi].time) { + ({ lo, hi } = _lookupByKey(table, "time", val)); + } + ({ time: prevSource, pos: prevTarget } = table[lo]); + ({ time: nextSource, pos: nextTarget } = table[hi]); + } + const span = nextSource - prevSource; + return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget; +} +var TimeSeriesScale = class extends TimeScale { + constructor(props) { + super(props); + this._table = []; + this._minPos = void 0; + this._tableRange = void 0; + } + initOffsets() { + const timestamps = this._getTimestampsForTable(); + const table = this._table = this.buildLookupTable(timestamps); + this._minPos = interpolate2(table, this.min); + this._tableRange = interpolate2(table, this.max) - this._minPos; + super.initOffsets(timestamps); + } + buildLookupTable(timestamps) { + const { min, max } = this; + const items = []; + const table = []; + let i, ilen, prev, curr, next; + for (i = 0, ilen = timestamps.length; i < ilen; ++i) { + curr = timestamps[i]; + if (curr >= min && curr <= max) { + items.push(curr); + } + } + if (items.length < 2) { + return [ + { + time: min, + pos: 0 + }, + { + time: max, + pos: 1 + } + ]; + } + for (i = 0, ilen = items.length; i < ilen; ++i) { + next = items[i + 1]; + prev = items[i - 1]; + curr = items[i]; + if (Math.round((next + prev) / 2) !== curr) { + table.push({ + time: curr, + pos: i / (ilen - 1) + }); + } + } + return table; + } + _generate() { + const min = this.min; + const max = this.max; + let timestamps = super.getDataTimestamps(); + if (!timestamps.includes(min) || !timestamps.length) { + timestamps.splice(0, 0, min); + } + if (!timestamps.includes(max) || timestamps.length === 1) { + timestamps.push(max); + } + return timestamps.sort((a, b) => a - b); + } + _getTimestampsForTable() { + let timestamps = this._cache.all || []; + if (timestamps.length) { + return timestamps; + } + const data = this.getDataTimestamps(); + const label = this.getLabelTimestamps(); + if (data.length && label.length) { + timestamps = this.normalize(data.concat(label)); + } else { + timestamps = data.length ? data : label; + } + timestamps = this._cache.all = timestamps; + return timestamps; + } + getDecimalForValue(value) { + return (interpolate2(this._table, value) - this._minPos) / this._tableRange; + } + getValueForPixel(pixel) { + const offsets = this._offsets; + const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; + return interpolate2(this._table, decimal * this._tableRange + this._minPos, true); + } +}; +__publicField(TimeSeriesScale, "id", "timeseries"); +__publicField(TimeSeriesScale, "defaults", TimeScale.defaults); +var scales = Object.freeze({ + __proto__: null, + CategoryScale, + LinearScale, + LogarithmicScale, RadialLinearScale, - Scale, - ScatterController, - Ticks, TimeScale, - TimeSeriesScale, - _detectPlatform, - adapters, - animator, + TimeSeriesScale +}); +var registerables = [ controllers, - defaults, elements, - index, - layouts, - plugin_colors, - plugin_decimation, - plugin_legend, - plugin_subtitle, - plugin_title, - plugin_tooltip, plugins, - registerables, - registry, scales -} from "./chunk-DTNR33MA.js"; -import "./chunk-DC5AMYBS.js"; +]; // node_modules/chart.js/auto/auto.js Chart.register(...registerables); @@ -102,4 +14514,30 @@ export { registry, scales }; +/*! Bundled license information: + +@kurkle/color/dist/color.esm.js: + (*! + * @kurkle/color v0.3.4 + * https://github.com/kurkle/color#readme + * (c) 2024 Jukka Kurkela + * Released under the MIT License + *) + +chart.js/dist/chunks/helpers.dataset.js: + (*! + * Chart.js v4.5.0 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + *) + +chart.js/dist/chart.js: + (*! + * Chart.js v4.5.0 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + *) +*/ //# sourceMappingURL=chart__js_auto.js.map diff --git a/vite/node_modules/.vite/deps/chart__js_auto.js.map b/vite/node_modules/.vite/deps/chart__js_auto.js.map index d1e5a49893ebf34b94f789f144b70cfbc6125b80..0ac8de4a100823d155dd1695e0bd8cbc9eb59e6f 100644 --- a/vite/node_modules/.vite/deps/chart__js_auto.js.map +++ b/vite/node_modules/.vite/deps/chart__js_auto.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../chart.js/auto/auto.js"], - "sourcesContent": ["import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,SAAS,GAAG,aAAa;AAG/B,IAAO,eAAQ;", - "names": [] + "sources": ["../../@kurkle/color/dist/color.esm.js", "../../chart.js/src/helpers/helpers.core.ts", "../../chart.js/src/helpers/helpers.math.ts", "../../chart.js/src/helpers/helpers.collection.ts", "../../chart.js/src/helpers/helpers.extras.ts", "../../chart.js/src/helpers/helpers.easing.ts", "../../chart.js/src/helpers/helpers.color.ts", "../../chart.js/src/core/core.animations.defaults.js", "../../chart.js/src/core/core.layouts.defaults.js", "../../chart.js/src/helpers/helpers.intl.ts", "../../chart.js/src/core/core.ticks.js", "../../chart.js/src/core/core.scale.defaults.js", "../../chart.js/src/core/core.defaults.js", "../../chart.js/src/helpers/helpers.canvas.ts", "../../chart.js/src/helpers/helpers.options.ts", "../../chart.js/src/helpers/helpers.config.ts", "../../chart.js/src/helpers/helpers.curve.ts", "../../chart.js/src/helpers/helpers.dom.ts", "../../chart.js/src/helpers/helpers.interpolation.ts", "../../chart.js/src/helpers/helpers.rtl.ts", "../../chart.js/src/helpers/helpers.segment.js", "../../chart.js/src/helpers/helpers.dataset.ts", "../../chart.js/src/core/core.animator.js", "../../chart.js/src/core/core.animation.js", "../../chart.js/src/core/core.animations.js", "../../chart.js/src/core/core.datasetController.js", "../../chart.js/src/controllers/controller.bar.js", "../../chart.js/src/controllers/controller.bubble.js", "../../chart.js/src/controllers/controller.doughnut.js", "../../chart.js/src/controllers/controller.line.js", "../../chart.js/src/controllers/controller.polarArea.js", "../../chart.js/src/controllers/controller.pie.js", "../../chart.js/src/controllers/controller.radar.js", "../../chart.js/src/controllers/controller.scatter.js", "../../chart.js/src/core/core.adapters.ts", "../../chart.js/src/core/core.interaction.js", "../../chart.js/src/core/core.layouts.js", "../../chart.js/src/platform/platform.base.js", "../../chart.js/src/platform/platform.basic.js", "../../chart.js/src/platform/platform.dom.js", "../../chart.js/src/platform/index.js", "../../chart.js/src/core/core.element.ts", "../../chart.js/src/core/core.scale.autoskip.js", "../../chart.js/src/core/core.scale.js", "../../chart.js/src/core/core.typedRegistry.js", "../../chart.js/src/core/core.registry.js", "../../chart.js/src/core/core.plugins.js", "../../chart.js/src/core/core.config.js", "../../chart.js/src/core/core.controller.js", "../../chart.js/src/elements/element.arc.ts", "../../chart.js/src/elements/element.line.js", "../../chart.js/src/elements/element.point.ts", "../../chart.js/src/elements/element.bar.js", "../../chart.js/src/plugins/plugin.colors.ts", "../../chart.js/src/plugins/plugin.decimation.js", "../../chart.js/src/plugins/plugin.filler/filler.segment.js", "../../chart.js/src/plugins/plugin.filler/filler.helper.js", "../../chart.js/src/plugins/plugin.filler/filler.options.js", "../../chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../chart.js/src/plugins/plugin.filler/simpleArc.js", "../../chart.js/src/plugins/plugin.filler/filler.target.js", "../../chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../chart.js/src/plugins/plugin.filler/index.js", "../../chart.js/src/plugins/plugin.legend.js", "../../chart.js/src/plugins/plugin.title.js", "../../chart.js/src/plugins/plugin.subtitle.js", "../../chart.js/src/plugins/plugin.tooltip.js", "../../chart.js/src/scales/scale.category.js", "../../chart.js/src/scales/scale.linearbase.js", "../../chart.js/src/scales/scale.linear.js", "../../chart.js/src/scales/scale.logarithmic.js", "../../chart.js/src/scales/scale.radialLinear.js", "../../chart.js/src/scales/scale.time.js", "../../chart.js/src/scales/scale.timeseries.js", "../../chart.js/src/index.ts", "../../chart.js/auto/auto.js"], + "sourcesContent": ["/*!\r\n * @kurkle/color v0.3.4\r\n * https://github.com/kurkle/color#readme\r\n * (c) 2024 Jukka Kurkela\r\n * Released under the MIT License\r\n */\r\nfunction round(v) {\r\n return v + 0.5 | 0;\r\n}\r\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\r\nfunction p2b(v) {\r\n return lim(round(v * 2.55), 0, 255);\r\n}\r\nfunction b2p(v) {\r\n return lim(round(v / 2.55), 0, 100);\r\n}\r\nfunction n2b(v) {\r\n return lim(round(v * 255), 0, 255);\r\n}\r\nfunction b2n(v) {\r\n return lim(round(v / 2.55) / 100, 0, 1);\r\n}\r\nfunction n2p(v) {\r\n return lim(round(v * 100), 0, 100);\r\n}\r\n\r\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\r\nconst hex = [...'0123456789ABCDEF'];\r\nconst h1 = b => hex[b & 0xF];\r\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\r\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\r\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\r\nfunction hexParse(str) {\r\n var len = str.length;\r\n var ret;\r\n if (str[0] === '#') {\r\n if (len === 4 || len === 5) {\r\n ret = {\r\n r: 255 & map$1[str[1]] * 17,\r\n g: 255 & map$1[str[2]] * 17,\r\n b: 255 & map$1[str[3]] * 17,\r\n a: len === 5 ? map$1[str[4]] * 17 : 255\r\n };\r\n } else if (len === 7 || len === 9) {\r\n ret = {\r\n r: map$1[str[1]] << 4 | map$1[str[2]],\r\n g: map$1[str[3]] << 4 | map$1[str[4]],\r\n b: map$1[str[5]] << 4 | map$1[str[6]],\r\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\r\n };\r\n }\r\n }\r\n return ret;\r\n}\r\nconst alpha = (a, f) => a < 255 ? f(a) : '';\r\nfunction hexString(v) {\r\n var f = isShort(v) ? h1 : h2;\r\n return v\r\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\r\n : undefined;\r\n}\r\n\r\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\r\nfunction hsl2rgbn(h, s, l) {\r\n const a = s * Math.min(l, 1 - l);\r\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\r\n return [f(0), f(8), f(4)];\r\n}\r\nfunction hsv2rgbn(h, s, v) {\r\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\r\n return [f(5), f(3), f(1)];\r\n}\r\nfunction hwb2rgbn(h, w, b) {\r\n const rgb = hsl2rgbn(h, 1, 0.5);\r\n let i;\r\n if (w + b > 1) {\r\n i = 1 / (w + b);\r\n w *= i;\r\n b *= i;\r\n }\r\n for (i = 0; i < 3; i++) {\r\n rgb[i] *= 1 - w - b;\r\n rgb[i] += w;\r\n }\r\n return rgb;\r\n}\r\nfunction hueValue(r, g, b, d, max) {\r\n if (r === max) {\r\n return ((g - b) / d) + (g < b ? 6 : 0);\r\n }\r\n if (g === max) {\r\n return (b - r) / d + 2;\r\n }\r\n return (r - g) / d + 4;\r\n}\r\nfunction rgb2hsl(v) {\r\n const range = 255;\r\n const r = v.r / range;\r\n const g = v.g / range;\r\n const b = v.b / range;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n const l = (max + min) / 2;\r\n let h, s, d;\r\n if (max !== min) {\r\n d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n h = hueValue(r, g, b, d, max);\r\n h = h * 60 + 0.5;\r\n }\r\n return [h | 0, s || 0, l];\r\n}\r\nfunction calln(f, a, b, c) {\r\n return (\r\n Array.isArray(a)\r\n ? f(a[0], a[1], a[2])\r\n : f(a, b, c)\r\n ).map(n2b);\r\n}\r\nfunction hsl2rgb(h, s, l) {\r\n return calln(hsl2rgbn, h, s, l);\r\n}\r\nfunction hwb2rgb(h, w, b) {\r\n return calln(hwb2rgbn, h, w, b);\r\n}\r\nfunction hsv2rgb(h, s, v) {\r\n return calln(hsv2rgbn, h, s, v);\r\n}\r\nfunction hue(h) {\r\n return (h % 360 + 360) % 360;\r\n}\r\nfunction hueParse(str) {\r\n const m = HUE_RE.exec(str);\r\n let a = 255;\r\n let v;\r\n if (!m) {\r\n return;\r\n }\r\n if (m[5] !== v) {\r\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\r\n }\r\n const h = hue(+m[2]);\r\n const p1 = +m[3] / 100;\r\n const p2 = +m[4] / 100;\r\n if (m[1] === 'hwb') {\r\n v = hwb2rgb(h, p1, p2);\r\n } else if (m[1] === 'hsv') {\r\n v = hsv2rgb(h, p1, p2);\r\n } else {\r\n v = hsl2rgb(h, p1, p2);\r\n }\r\n return {\r\n r: v[0],\r\n g: v[1],\r\n b: v[2],\r\n a: a\r\n };\r\n}\r\nfunction rotate(v, deg) {\r\n var h = rgb2hsl(v);\r\n h[0] = hue(h[0] + deg);\r\n h = hsl2rgb(h);\r\n v.r = h[0];\r\n v.g = h[1];\r\n v.b = h[2];\r\n}\r\nfunction hslString(v) {\r\n if (!v) {\r\n return;\r\n }\r\n const a = rgb2hsl(v);\r\n const h = a[0];\r\n const s = n2p(a[1]);\r\n const l = n2p(a[2]);\r\n return v.a < 255\r\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\r\n : `hsl(${h}, ${s}%, ${l}%)`;\r\n}\r\n\r\nconst map = {\r\n\tx: 'dark',\r\n\tZ: 'light',\r\n\tY: 're',\r\n\tX: 'blu',\r\n\tW: 'gr',\r\n\tV: 'medium',\r\n\tU: 'slate',\r\n\tA: 'ee',\r\n\tT: 'ol',\r\n\tS: 'or',\r\n\tB: 'ra',\r\n\tC: 'lateg',\r\n\tD: 'ights',\r\n\tR: 'in',\r\n\tQ: 'turquois',\r\n\tE: 'hi',\r\n\tP: 'ro',\r\n\tO: 'al',\r\n\tN: 'le',\r\n\tM: 'de',\r\n\tL: 'yello',\r\n\tF: 'en',\r\n\tK: 'ch',\r\n\tG: 'arks',\r\n\tH: 'ea',\r\n\tI: 'ightg',\r\n\tJ: 'wh'\r\n};\r\nconst names$1 = {\r\n\tOiceXe: 'f0f8ff',\r\n\tantiquewEte: 'faebd7',\r\n\taqua: 'ffff',\r\n\taquamarRe: '7fffd4',\r\n\tazuY: 'f0ffff',\r\n\tbeige: 'f5f5dc',\r\n\tbisque: 'ffe4c4',\r\n\tblack: '0',\r\n\tblanKedOmond: 'ffebcd',\r\n\tXe: 'ff',\r\n\tXeviTet: '8a2be2',\r\n\tbPwn: 'a52a2a',\r\n\tburlywood: 'deb887',\r\n\tcaMtXe: '5f9ea0',\r\n\tKartYuse: '7fff00',\r\n\tKocTate: 'd2691e',\r\n\tcSO: 'ff7f50',\r\n\tcSnflowerXe: '6495ed',\r\n\tcSnsilk: 'fff8dc',\r\n\tcrimson: 'dc143c',\r\n\tcyan: 'ffff',\r\n\txXe: '8b',\r\n\txcyan: '8b8b',\r\n\txgTMnPd: 'b8860b',\r\n\txWay: 'a9a9a9',\r\n\txgYF: '6400',\r\n\txgYy: 'a9a9a9',\r\n\txkhaki: 'bdb76b',\r\n\txmagFta: '8b008b',\r\n\txTivegYF: '556b2f',\r\n\txSange: 'ff8c00',\r\n\txScEd: '9932cc',\r\n\txYd: '8b0000',\r\n\txsOmon: 'e9967a',\r\n\txsHgYF: '8fbc8f',\r\n\txUXe: '483d8b',\r\n\txUWay: '2f4f4f',\r\n\txUgYy: '2f4f4f',\r\n\txQe: 'ced1',\r\n\txviTet: '9400d3',\r\n\tdAppRk: 'ff1493',\r\n\tdApskyXe: 'bfff',\r\n\tdimWay: '696969',\r\n\tdimgYy: '696969',\r\n\tdodgerXe: '1e90ff',\r\n\tfiYbrick: 'b22222',\r\n\tflSOwEte: 'fffaf0',\r\n\tfoYstWAn: '228b22',\r\n\tfuKsia: 'ff00ff',\r\n\tgaRsbSo: 'dcdcdc',\r\n\tghostwEte: 'f8f8ff',\r\n\tgTd: 'ffd700',\r\n\tgTMnPd: 'daa520',\r\n\tWay: '808080',\r\n\tgYF: '8000',\r\n\tgYFLw: 'adff2f',\r\n\tgYy: '808080',\r\n\thoneyMw: 'f0fff0',\r\n\thotpRk: 'ff69b4',\r\n\tRdianYd: 'cd5c5c',\r\n\tRdigo: '4b0082',\r\n\tivSy: 'fffff0',\r\n\tkhaki: 'f0e68c',\r\n\tlavFMr: 'e6e6fa',\r\n\tlavFMrXsh: 'fff0f5',\r\n\tlawngYF: '7cfc00',\r\n\tNmoncEffon: 'fffacd',\r\n\tZXe: 'add8e6',\r\n\tZcSO: 'f08080',\r\n\tZcyan: 'e0ffff',\r\n\tZgTMnPdLw: 'fafad2',\r\n\tZWay: 'd3d3d3',\r\n\tZgYF: '90ee90',\r\n\tZgYy: 'd3d3d3',\r\n\tZpRk: 'ffb6c1',\r\n\tZsOmon: 'ffa07a',\r\n\tZsHgYF: '20b2aa',\r\n\tZskyXe: '87cefa',\r\n\tZUWay: '778899',\r\n\tZUgYy: '778899',\r\n\tZstAlXe: 'b0c4de',\r\n\tZLw: 'ffffe0',\r\n\tlime: 'ff00',\r\n\tlimegYF: '32cd32',\r\n\tlRF: 'faf0e6',\r\n\tmagFta: 'ff00ff',\r\n\tmaPon: '800000',\r\n\tVaquamarRe: '66cdaa',\r\n\tVXe: 'cd',\r\n\tVScEd: 'ba55d3',\r\n\tVpurpN: '9370db',\r\n\tVsHgYF: '3cb371',\r\n\tVUXe: '7b68ee',\r\n\tVsprRggYF: 'fa9a',\r\n\tVQe: '48d1cc',\r\n\tVviTetYd: 'c71585',\r\n\tmidnightXe: '191970',\r\n\tmRtcYam: 'f5fffa',\r\n\tmistyPse: 'ffe4e1',\r\n\tmoccasR: 'ffe4b5',\r\n\tnavajowEte: 'ffdead',\r\n\tnavy: '80',\r\n\tTdlace: 'fdf5e6',\r\n\tTive: '808000',\r\n\tTivedBb: '6b8e23',\r\n\tSange: 'ffa500',\r\n\tSangeYd: 'ff4500',\r\n\tScEd: 'da70d6',\r\n\tpOegTMnPd: 'eee8aa',\r\n\tpOegYF: '98fb98',\r\n\tpOeQe: 'afeeee',\r\n\tpOeviTetYd: 'db7093',\r\n\tpapayawEp: 'ffefd5',\r\n\tpHKpuff: 'ffdab9',\r\n\tperu: 'cd853f',\r\n\tpRk: 'ffc0cb',\r\n\tplum: 'dda0dd',\r\n\tpowMrXe: 'b0e0e6',\r\n\tpurpN: '800080',\r\n\tYbeccapurpN: '663399',\r\n\tYd: 'ff0000',\r\n\tPsybrown: 'bc8f8f',\r\n\tPyOXe: '4169e1',\r\n\tsaddNbPwn: '8b4513',\r\n\tsOmon: 'fa8072',\r\n\tsandybPwn: 'f4a460',\r\n\tsHgYF: '2e8b57',\r\n\tsHshell: 'fff5ee',\r\n\tsiFna: 'a0522d',\r\n\tsilver: 'c0c0c0',\r\n\tskyXe: '87ceeb',\r\n\tUXe: '6a5acd',\r\n\tUWay: '708090',\r\n\tUgYy: '708090',\r\n\tsnow: 'fffafa',\r\n\tsprRggYF: 'ff7f',\r\n\tstAlXe: '4682b4',\r\n\ttan: 'd2b48c',\r\n\tteO: '8080',\r\n\ttEstN: 'd8bfd8',\r\n\ttomato: 'ff6347',\r\n\tQe: '40e0d0',\r\n\tviTet: 'ee82ee',\r\n\tJHt: 'f5deb3',\r\n\twEte: 'ffffff',\r\n\twEtesmoke: 'f5f5f5',\r\n\tLw: 'ffff00',\r\n\tLwgYF: '9acd32'\r\n};\r\nfunction unpack() {\r\n const unpacked = {};\r\n const keys = Object.keys(names$1);\r\n const tkeys = Object.keys(map);\r\n let i, j, k, ok, nk;\r\n for (i = 0; i < keys.length; i++) {\r\n ok = nk = keys[i];\r\n for (j = 0; j < tkeys.length; j++) {\r\n k = tkeys[j];\r\n nk = nk.replace(k, map[k]);\r\n }\r\n k = parseInt(names$1[ok], 16);\r\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\r\n }\r\n return unpacked;\r\n}\r\n\r\nlet names;\r\nfunction nameParse(str) {\r\n if (!names) {\r\n names = unpack();\r\n names.transparent = [0, 0, 0, 0];\r\n }\r\n const a = names[str.toLowerCase()];\r\n return a && {\r\n r: a[0],\r\n g: a[1],\r\n b: a[2],\r\n a: a.length === 4 ? a[3] : 255\r\n };\r\n}\r\n\r\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\r\nfunction rgbParse(str) {\r\n const m = RGB_RE.exec(str);\r\n let a = 255;\r\n let r, g, b;\r\n if (!m) {\r\n return;\r\n }\r\n if (m[7] !== r) {\r\n const v = +m[7];\r\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\r\n }\r\n r = +m[1];\r\n g = +m[3];\r\n b = +m[5];\r\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\r\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\r\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\r\n return {\r\n r: r,\r\n g: g,\r\n b: b,\r\n a: a\r\n };\r\n}\r\nfunction rgbString(v) {\r\n return v && (\r\n v.a < 255\r\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\r\n : `rgb(${v.r}, ${v.g}, ${v.b})`\r\n );\r\n}\r\n\r\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\r\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\nfunction interpolate(rgb1, rgb2, t) {\r\n const r = from(b2n(rgb1.r));\r\n const g = from(b2n(rgb1.g));\r\n const b = from(b2n(rgb1.b));\r\n return {\r\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\r\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\r\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\r\n a: rgb1.a + t * (rgb2.a - rgb1.a)\r\n };\r\n}\r\n\r\nfunction modHSL(v, i, ratio) {\r\n if (v) {\r\n let tmp = rgb2hsl(v);\r\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\r\n tmp = hsl2rgb(tmp);\r\n v.r = tmp[0];\r\n v.g = tmp[1];\r\n v.b = tmp[2];\r\n }\r\n}\r\nfunction clone(v, proto) {\r\n return v ? Object.assign(proto || {}, v) : v;\r\n}\r\nfunction fromObject(input) {\r\n var v = {r: 0, g: 0, b: 0, a: 255};\r\n if (Array.isArray(input)) {\r\n if (input.length >= 3) {\r\n v = {r: input[0], g: input[1], b: input[2], a: 255};\r\n if (input.length > 3) {\r\n v.a = n2b(input[3]);\r\n }\r\n }\r\n } else {\r\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\r\n v.a = n2b(v.a);\r\n }\r\n return v;\r\n}\r\nfunction functionParse(str) {\r\n if (str.charAt(0) === 'r') {\r\n return rgbParse(str);\r\n }\r\n return hueParse(str);\r\n}\r\nclass Color {\r\n constructor(input) {\r\n if (input instanceof Color) {\r\n return input;\r\n }\r\n const type = typeof input;\r\n let v;\r\n if (type === 'object') {\r\n v = fromObject(input);\r\n } else if (type === 'string') {\r\n v = hexParse(input) || nameParse(input) || functionParse(input);\r\n }\r\n this._rgb = v;\r\n this._valid = !!v;\r\n }\r\n get valid() {\r\n return this._valid;\r\n }\r\n get rgb() {\r\n var v = clone(this._rgb);\r\n if (v) {\r\n v.a = b2n(v.a);\r\n }\r\n return v;\r\n }\r\n set rgb(obj) {\r\n this._rgb = fromObject(obj);\r\n }\r\n rgbString() {\r\n return this._valid ? rgbString(this._rgb) : undefined;\r\n }\r\n hexString() {\r\n return this._valid ? hexString(this._rgb) : undefined;\r\n }\r\n hslString() {\r\n return this._valid ? hslString(this._rgb) : undefined;\r\n }\r\n mix(color, weight) {\r\n if (color) {\r\n const c1 = this.rgb;\r\n const c2 = color.rgb;\r\n let w2;\r\n const p = weight === w2 ? 0.5 : weight;\r\n const w = 2 * p - 1;\r\n const a = c1.a - c2.a;\r\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\r\n w2 = 1 - w1;\r\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\r\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\r\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\r\n c1.a = p * c1.a + (1 - p) * c2.a;\r\n this.rgb = c1;\r\n }\r\n return this;\r\n }\r\n interpolate(color, t) {\r\n if (color) {\r\n this._rgb = interpolate(this._rgb, color._rgb, t);\r\n }\r\n return this;\r\n }\r\n clone() {\r\n return new Color(this.rgb);\r\n }\r\n alpha(a) {\r\n this._rgb.a = n2b(a);\r\n return this;\r\n }\r\n clearer(ratio) {\r\n const rgb = this._rgb;\r\n rgb.a *= 1 - ratio;\r\n return this;\r\n }\r\n greyscale() {\r\n const rgb = this._rgb;\r\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\r\n rgb.r = rgb.g = rgb.b = val;\r\n return this;\r\n }\r\n opaquer(ratio) {\r\n const rgb = this._rgb;\r\n rgb.a *= 1 + ratio;\r\n return this;\r\n }\r\n negate() {\r\n const v = this._rgb;\r\n v.r = 255 - v.r;\r\n v.g = 255 - v.g;\r\n v.b = 255 - v.b;\r\n return this;\r\n }\r\n lighten(ratio) {\r\n modHSL(this._rgb, 2, ratio);\r\n return this;\r\n }\r\n darken(ratio) {\r\n modHSL(this._rgb, 2, -ratio);\r\n return this;\r\n }\r\n saturate(ratio) {\r\n modHSL(this._rgb, 1, ratio);\r\n return this;\r\n }\r\n desaturate(ratio) {\r\n modHSL(this._rgb, 1, -ratio);\r\n return this;\r\n }\r\n rotate(deg) {\r\n rotate(this._rgb, deg);\r\n return this;\r\n }\r\n}\r\n\r\nfunction index_esm(input) {\r\n return new Color(input);\r\n}\r\n\r\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\r\n", "/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n", "import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\n/**\n * Verifies that attempting to coerce n to string or number won't throw a TypeError.\n */\nfunction isNonPrimitive(n: unknown) {\n return typeof n === 'symbol' || (typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n));\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNonPrimitive(n) && !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n", "import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n", "import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\nimport {isNullOrUndef} from './helpers.core.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, vScale, _parsed} = meta;\n const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);\n if (spanGaps) {\n const distanceToDefinedLo = (_parsed\n .slice(0, start + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n start -= Math.max(0, distanceToDefinedLo);\n }\n start = _limitValue(start, 0, pointCount - 1);\n }\n if (maxDefined) {\n let end = Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);\n if (spanGaps) {\n const distanceToDefinedHi = (_parsed\n .slice(end - 1)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n end += Math.max(0, distanceToDefinedHi);\n }\n count = _limitValue(end, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n", "import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n", "import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n", "const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n", "export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n", "\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n", "import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n", "import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n", "import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n", "import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n", "import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n", "import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n", "import type {ChartArea, Scale} from '../types/index.js';\nimport type PrivateChart from '../core/core.controller.js';\nimport type {Chart, ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart | PrivateChart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart | PrivateChart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n (chart as PrivateChart).height = Math.floor(chart.height);\n (chart as PrivateChart).width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n (chart as PrivateChart).currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n", "import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n", "export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n", "import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n", "import type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n const clip = meta._clip;\n if (clip.disabled) {\n return false;\n }\n const area = getDatasetArea(meta, chart.chartArea);\n\n return {\n left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n };\n}\n", "import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n", "import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n", "import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n", "import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n let found = false;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n\n if (!found && !options.all) {\n return 0;\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getAxisCount() {\n return this._getAxis().length;\n }\n\n getFirstScaleIdForIndexAxis() {\n const scales = this.chart.scales;\n const indexScaleId = this.chart.options.indexAxis;\n return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n }\n\n _getAxis() {\n const axis = {};\n const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n for (const dataset of this.chart.data.datasets) {\n axis[valueOrDefault(\n this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n )] = true;\n }\n return Object.keys(axis);\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n const axisCount = this._getAxisCount();\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount * axisCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n", "import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n", "/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: string): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: string): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number | boolean): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options?: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase as {\n new (options?: AnyObject): DateAdapter;\n override(\n members: Partial, 'options'>>\n ): void;\n }\n};\n", "import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea, isNullOrUndef} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;\n\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n const result = lookupMethod(data, axis, value);\n if (spanGaps) {\n const {vScale} = controller._cachedMeta;\n const {_parsed} = metaset;\n\n const distanceToDefinedLo = (_parsed\n .slice(0, result.lo + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.lo -= Math.max(0, distanceToDefinedLo);\n\n const distanceToDefinedHi = (_parsed\n .slice(result.hi)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.hi += Math.max(0, distanceToDefinedHi);\n }\n return result;\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n", "import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n", "\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n", "/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n", "/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n", "import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n", "import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n", "import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n", "import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n", "import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n", "import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n", "import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n", "import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n", "import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n // @ts-expect-error\n const clip = getDatasetClipArea(this, meta);\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (clip) {\n clipArea(ctx, clip);\n }\n\n meta.controller.draw();\n\n if (clip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n", "import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.beginPath();\n ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n if (innerRadius > 0) {\n const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n } else {\n const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n if (borderJoinStyle === 'round') {\n ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n } else if (borderJoinStyle === 'bevel') {\n const r = 2 * clipWidth * clipWidth;\n const endX = -r * Math.cos(endAngle + PI / 2) + x;\n const endY = -r * Math.sin(endAngle + PI / 2) + y;\n const startX = r * Math.cos(startAngle + PI / 2) + x;\n const startY = r * Math.sin(startAngle + PI / 2) + y;\n ctx.lineTo(endX, endY);\n ctx.lineTo(startX, startY);\n }\n }\n ctx.closePath();\n\n ctx.moveTo(0, 0);\n ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n ctx.clip('evenodd');\n}\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n clipSelf(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n selfJoin: false,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n", "import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n", "import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n", "import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n", "import {DoughnutController, PolarAreaController, defaults} from '../index.js';\nimport type {Chart, ChartDataset} from '../types.js';\n\nexport interface ColorsPluginOptions {\n enabled?: boolean;\n forceOverride?: boolean;\n}\n\ninterface ColorsDescriptor {\n backgroundColor?: unknown;\n borderColor?: unknown;\n}\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)', // blue\n 'rgb(255, 99, 132)', // red\n 'rgb(255, 159, 64)', // orange\n 'rgb(255, 205, 86)', // yellow\n 'rgb(75, 192, 192)', // green\n 'rgb(153, 102, 255)', // purple\n 'rgb(201, 203, 207)' // grey\n];\n\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\n\nfunction getBorderColor(i: number) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i: number) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset: ChartDataset, i: number) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n\n return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset: ChartDataset, i: number) {\n dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n\n return i;\n}\n\nfunction colorizePolarAreaDataset(dataset: ChartDataset, i: number) {\n dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n\n return i;\n}\n\nfunction getColorizer(chart: Chart) {\n let i = 0;\n\n return (dataset: ChartDataset, datasetIndex: number) => {\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\n\nfunction containsColorsDefinitions(\n descriptors: ColorsDescriptor[] | Record\n) {\n let k: number | string;\n\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction containsColorsDefinition(\n descriptor: ColorsDescriptor\n) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nfunction containsDefaultColorsDefenitions() {\n return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\n\nexport default {\n id: 'colors',\n\n defaults: {\n enabled: true,\n forceOverride: false\n } as ColorsPluginOptions,\n\n beforeLayout(chart: Chart, _args, options: ColorsPluginOptions) {\n if (!options.enabled) {\n return;\n }\n\n const {\n data: {datasets},\n options: chartOptions\n } = chart.config;\n const {elements} = chartOptions;\n\n const containsColorDefenition = (\n containsColorsDefinitions(datasets) ||\n containsColorsDefinition(chartOptions) ||\n (elements && containsColorsDefinitions(elements)) ||\n containsDefaultColorsDefenitions());\n\n if (!options.forceOverride && containsColorDefenition) {\n return;\n }\n\n const colorizer = getColorizer(chart);\n\n datasets.forEach(colorizer);\n }\n};\n", "import {_limitValue, _lookupByKey, isNullOrUndef, resolve} from '../helpers/index.js';\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n /**\n * Implementation of the Largest Triangle Three Buckets algorithm.\n *\n * This implementation is based on the original implementation by Sveinn Steinarsson\n * in https://github.com/sveinn-steinarsson/flot-downsample/blob/master/jquery.flot.downsample.js\n *\n * The original implementation is MIT licensed.\n */\n const samples = options.samples || availableWidth;\n // There are less points than the threshold, returning the whole array\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n\n const decimated = [];\n\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n // Starting from offset\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n\n decimated[sampledIndex++] = data[a];\n\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n\n // Adding offset\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n\n // Adding offset\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n\n // Note that this is changed from the original algorithm which initializes these\n // values to 1. The reason for this change is that if the area is small, nextA\n // would never be set and thus a crash would occur in the next loop as `a` would become\n // `undefined`. Since the area is always positive, but could be 0 in the case of a flat trace,\n // initializing with a negative number is the correct solution.\n maxArea = area = -1;\n\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n\n // Include the last point\n decimated[sampledIndex++] = data[endIndex];\n\n return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n // Use point.x here because we're computing the average data `x` value\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n // Push up to 4 points, 3 for the last interval and the first point for this interval\n const lastIndex = i - 1;\n\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n // The interval is defined by 4 points: start, min, max, end.\n // The starting point is already considered at this point, so we need to determine which\n // of the other points to add. We need to sort these points to ensure the decimated data\n // is still sorted and then ensure there are no duplicates.\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n\n // lastIndex === startIndex will occur when a range has only 1 point which could\n // happen with very uneven data\n if (i > 0 && lastIndex !== startIndex) {\n // Last point in the previous interval\n decimated.push(data[lastIndex]);\n }\n\n // Start of the new interval\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n\n return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data,\n });\n }\n}\n\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n\n let start = 0;\n let count;\n\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n\n return {start, count};\n}\n\nexport default {\n id: 'decimation',\n\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n // The decimation plugin may have been previously enabled. Need to remove old `dataset._data` handlers\n cleanDecimatedData(chart);\n return;\n }\n\n // Assume the entire chart is available to show a few more points than needed\n const availableWidth = chart.width;\n\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n // Decimation is only supported for lines that have an X indexAxis\n return;\n }\n\n if (!meta.controller.supportsDecimation) {\n // Only line datasets are supported\n return;\n }\n\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n // Only linear interpolation is supported\n return;\n }\n\n if (chart.options.parsing) {\n // Plugin only supports data that does not need parsing\n return;\n }\n\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n // No decimation is required until we are above this threshold\n cleanDecimatedDataset(dataset);\n return;\n }\n\n if (isNullOrUndef(_data)) {\n // First time we are seeing this dataset\n // We override the 'data' property with a setter that stores the\n // raw data in _data, but reads the decimated data from _decimated\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n\n // Point the chart to the decimated data\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n\n dataset._decimated = decimated;\n });\n },\n\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n", "import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n // Special case for boundary not supporting `segments` (simpleArc)\n // Bounds are provided as `target` for partial circle, or undefined for full circle\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n // Get all segments from `target` that intersect the bounds of current segment of `line`\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n // @ts-ignore\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n", "import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n /** @type {string | {value: number}} */\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n // @ts-ignore\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n let value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n // @ts-ignore\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n // First point of a segment -> need to add another point before this,\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n // In the middle of a segment, no need to add more points.\n break;\n }\n }\n }\n points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n", "import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n", "import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n const {chart, fill, line} = source;\n\n if (isFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n\n if (isFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\n", "import {clipArea, unclipArea, getDatasetClipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {chart, index, line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n const meta = chart.getDatasetMeta(index);\n const clip = getDatasetClipArea(chart, meta);\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale, clip} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n\n ctx.save();\n\n let fillColor = below;\n if (below !== above) {\n if (property === 'x') {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n } else if (property === 'y') {\n clipHorizontal(ctx, target, area.left);\n fill(ctx, {line, target, color: below, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipHorizontal(ctx, target, area.right);\n fillColor = above;\n }\n }\n fill(ctx, {line, target, color: fillColor, scale, property, clip});\n\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction clipHorizontal(ctx, target, clipX) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(clipX, firstPoint.y);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(clipX, lastPoint.y);\n }\n }\n\n ctx.lineTo(clipX, target.first().y);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale, clip} = cfg;\n const segments = _segments(line, target, property);\n\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n\n clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));\n\n ctx.beginPath();\n\n const lineLoop = !!line.pathSegment(ctx, src);\n\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n ctx.restore();\n }\n}\n\nfunction clipBounds(ctx, scale, clip, bounds) {\n const chartArea = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n\n if (property === 'x' || property === 'y') {\n let left, top, right, bottom;\n\n if (property === 'x') {\n left = start;\n top = chartArea.top;\n right = end;\n bottom = chartArea.bottom;\n } else {\n left = chartArea.left;\n top = start;\n right = chartArea.right;\n bottom = end;\n }\n\n ctx.beginPath();\n\n if (clip) {\n left = Math.max(left, clip.left);\n right = Math.min(right, clip.right);\n top = Math.max(top, clip.top);\n bottom = Math.min(bottom, clip.bottom);\n }\n\n ctx.rect(left, top, right - left, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\n", "/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n", "import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n", "import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n", "import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n", "import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n", "import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n", "import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n", "import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n", "import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n", "import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n", "import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n", "import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n", "export * from './controllers/index.js';\nexport * from './core/index.js';\nexport * from './elements/index.js';\nexport * from './platform/index.js';\nexport * from './plugins/index.js';\nexport * from './scales/index.js';\n\nimport * as controllers from './controllers/index.js';\nimport * as elements from './elements/index.js';\nimport * as plugins from './plugins/index.js';\nimport * as scales from './scales/index.js';\n\nexport {\n controllers,\n elements,\n plugins,\n scales,\n};\n\nexport const registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n", "import {Chart, registerables} from '../dist/chart.js';\r\n\r\nChart.register(...registerables);\r\n\r\nexport * from '../dist/chart.js';\r\nexport default Chart;\r\n"], + "mappings": "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", + "names": ["color", "noop", "uid", "id", "isNullOrUndef", "value", "undefined", "isArray", "Array", "type", "Object", "prototype", "toString", "call", "slice", "isObject", "isNumberFinite", "Number", "isFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "toPercentage", "dimension", "endsWith", "parseFloat", "toDimension", "callback", "fn", "args", "thisArg", "apply", "each", "loopable", "reverse", "i", "len", "keys", "length", "_elementsEqual", "a0", "a1", "ilen", "v0", "v1", "datasetIndex", "index", "clone", "source", "map", "target", "create", "klen", "k", "isValidKey", "key", "indexOf", "_merger", "options", "tval", "sval", "merge", "sources", "merger", "current", "mergeIf", "_mergerIf", "hasOwnProperty", "keyResolvers", "v", "x", "o", "y", "_splitKey", "key", "parts", "split", "keys", "tmp", "part", "endsWith", "slice", "push", "_getKeyResolver", "obj", "k", "resolveObjectKey", "resolver", "_capitalize", "str", "charAt", "toUpperCase", "defined", "value", "isFunction", "setsEqual", "a", "b", "size", "item", "has", "_isClickEvent", "e", "type", "PI", "Math", "TAU", "PITAU", "INFINITY", "Number", "POSITIVE_INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "almostEquals", "epsilon", "abs", "niceNum", "range", "roundedRange", "round", "niceRange", "pow", "floor", "fraction", "niceFraction", "_factorize", "result", "sqrt", "i", "sort", "pop", "isNonPrimitive", "n", "Symbol", "toPrimitive", "isNumber", "isNaN", "parseFloat", "isFinite", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "target", "property", "ilen", "length", "min", "max", "toRadians", "degrees", "toDegrees", "radians", "_decimalPlaces", "isFiniteNumber", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "atan2", "distance", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "s", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "index", "hi", "lo", "mid", "_lookupByKey", "last", "ti", "_rlookupByKey", "_filterBetween", "values", "arrayEvents", "listenArrayEvents", "listener", "_chartjs", "listeners", "Object", "defineProperty", "configurable", "enumerable", "forEach", "method", "base", "args", "res", "apply", "object", "unlistenArrayEvents", "stub", "indexOf", "splice", "_arrayUnique", "items", "set", "Set", "Array", "from", "requestAnimFrame", "window", "callback", "requestAnimationFrame", "throttled", "fn", "thisArg", "argsToUse", "ticking", "args", "call", "apply", "debounce", "delay", "timeout", "clearTimeout", "setTimeout", "_toLeftRightCenter", "align", "_alignStartEnd", "start", "end", "_textX", "left", "right", "rtl", "check", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "length", "count", "_sorted", "iScale", "vScale", "_parsed", "spanGaps", "dataset", "options", "axis", "min", "max", "minDefined", "maxDefined", "getUserBounds", "Math", "_lookupByKey", "lo", "getPixelForValue", "distanceToDefinedLo", "slice", "reverse", "findIndex", "point", "isNullOrUndef", "_limitValue", "hi", "distanceToDefinedHi", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "xmin", "xmax", "ymin", "ymax", "changed", "Object", "assign", "atEdge", "t", "elasticIn", "s", "p", "pow", "sin", "TAU", "elasticOut", "effects", "linear", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "cos", "HALF_PI", "easeOutSine", "easeInOutSine", "PI", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "sqrt", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "m", "d", "easeInOutBounce", "isPatternOrGradient", "value", "type", "toString", "color", "Color", "getHoverColor", "saturate", "darken", "hexString", "numbers", "colors", "applyAnimationsDefaults", "defaults", "set", "undefined", "duration", "easing", "from", "loop", "to", "describe", "_fallback", "_indexable", "_scriptable", "name", "properties", "active", "animation", "resize", "show", "animations", "visible", "hide", "v", "applyLayoutsDefaults", "autoPadding", "padding", "top", "bottom", "intlCache", "Map", "getNumberFormat", "locale", "cacheKey", "JSON", "stringify", "formatter", "get", "Intl", "NumberFormat", "formatNumber", "num", "format", "formatters", "values", "isArray", "numeric", "tickValue", "index", "ticks", "chart", "notation", "delta", "maxTick", "abs", "calculateDelta", "logDelta", "log10", "numDecimal", "isNaN", "floor", "minimumFractionDigits", "maximumFractionDigits", "logarithmic", "remain", "significand", "includes", "applyScaleDefaults", "display", "offset", "beginAtZero", "bounds", "clip", "grace", "grid", "lineWidth", "drawOnChartArea", "drawTicks", "tickLength", "tickWidth", "_ctx", "tickColor", "border", "dash", "dashOffset", "width", "title", "text", "minRotation", "maxRotation", "mirror", "textStrokeWidth", "textStrokeColor", "autoSkip", "autoSkipPadding", "labelOffset", "Ticks", "minor", "major", "crossAlign", "showLabelBackdrop", "backdropColor", "backdropPadding", "route", "startsWith", "overrides", "create", "descriptors", "getScope", "node", "key", "keys", "split", "i", "n", "k", "root", "scope", "merge", "Defaults", "constructor", "_descriptors", "_appliers", "backgroundColor", "borderColor", "datasets", "devicePixelRatio", "context", "platform", "getDevicePixelRatio", "elements", "events", "font", "family", "size", "style", "lineHeight", "weight", "hover", "hoverBackgroundColor", "ctx", "hoverBorderColor", "hoverColor", "indexAxis", "interaction", "mode", "intersect", "includeInvisible", "maintainAspectRatio", "onHover", "onClick", "parsing", "plugins", "responsive", "scale", "scales", "showLine", "drawActiveElementsOnTop", "override", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "defineProperties", "writable", "enumerable", "local", "target", "isObject", "valueOrDefault", "appliers", "forEach", "toFontString", "_measureText", "data", "gc", "longest", "string", "textWidth", "measureText", "push", "_longestText", "arrayOfThings", "cache", "garbageCollect", "save", "ilen", "j", "jlen", "thing", "nestedThing", "restore", "gcLen", "splice", "_alignPixel", "pixel", "currentDevicePixelRatio", "halfWidth", "round", "clearCanvas", "canvas", "getContext", "resetTransform", "clearRect", "height", "drawPoint", "x", "y", "drawPointLegend", "w", "xOffset", "yOffset", "cornerRadius", "xOffsetW", "yOffsetW", "pointStyle", "rotation", "radius", "rad", "RAD_PER_DEG", "translate", "rotate", "drawImage", "beginPath", "ellipse", "arc", "closePath", "moveTo", "TWO_THIRDS_PI", "lineTo", "QUARTER_PI", "SQRT1_2", "rect", "fill", "borderWidth", "stroke", "_isPointInArea", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "midpoint", "_bezierCurveTo", "bezierCurveTo", "cp1x", "cp2x", "cp1y", "cp2y", "setRenderOpts", "opts", "translation", "fillStyle", "textAlign", "textBaseline", "decorateText", "line", "strikethrough", "underline", "metrics", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "yDecoration", "strokeStyle", "decorationWidth", "drawBackdrop", "oldColor", "fillRect", "renderText", "lines", "strokeWidth", "strokeColor", "backdrop", "strokeText", "maxWidth", "fillText", "Number", "addRoundedRectPath", "h", "topLeft", "bottomLeft", "bottomRight", "topRight", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "match", "numberOrZero", "_readValueToProps", "props", "ret", "objProps", "read", "prop", "toTRBL", "toTRBLCorners", "toPadding", "obj", "toFont", "fallback", "parseInt", "console", "warn", "resolve", "inputs", "info", "cacheable", "_addGrace", "minmax", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "finalRootScopes", "_resolve", "Symbol", "toStringTag", "_cacheable", "_scopes", "_rootScopes", "_getTarget", "Proxy", "deleteProperty", "_keys", "_cached", "_resolveWithPrefixes", "getOwnPropertyDescriptor", "Reflect", "getPrototypeOf", "has", "getKeysFromAllScopes", "ownKeys", "storage", "_storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "_proxy", "_context", "_subProxy", "_stack", "Set", "setContext", "receiver", "_resolveWithContext", "allKeys", "configurable", "scriptable", "indexable", "_allKeys", "isScriptable", "isFunction", "isIndexable", "readKey", "prefix", "_capitalize", "needsSubResolver", "prototype", "hasOwnProperty", "_resolveScriptable", "_resolveArray", "getValue", "Error", "Array", "join", "delete", "createSubResolver", "arr", "filter", "item", "resolver", "resolveFallback", "parent", "resolveObjectKey", "addScopes", "parentScopes", "parentFallback", "allScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "_parsing", "parsed", "r", "parse", "EPSILON", "getPoint", "skip", "getValueAxis", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "current", "next", "d01", "distanceBetweenPoints", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "almostEquals", "monotoneCompute", "valueAxis", "pointBefore", "iPixel", "vPixel", "splineCurveMonotone", "slopeDelta", "sign", "capControlPoint", "pt", "capBezierPoints", "inArea", "inAreaPrev", "inAreaNext", "_updateBezierControlPoints", "controlPoints", "cubicInterpolationMode", "prev", "tension", "_isDomSupported", "document", "_getParentNode", "domNode", "parentNode", "host", "parseMaxStyle", "styleValue", "parentProperty", "valueInPixels", "indexOf", "getComputedStyle", "element", "ownerDocument", "defaultView", "getStyle", "el", "property", "getPropertyValue", "positions", "getPositionedStyle", "styles", "suffix", "result", "pos", "parseFloat", "useOffsetPos", "shadowRoot", "getCanvasPosition", "e", "touches", "source", "offsetX", "offsetY", "box", "getBoundingClientRect", "clientX", "clientY", "getRelativePosition", "event", "borderBox", "boxSizing", "paddings", "borders", "getContainerSize", "maxHeight", "container", "clientWidth", "clientHeight", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "round1", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "maintainHeight", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "setTransform", "supportsEventListenerOptions", "passiveSupported", "passive", "addEventListener", "removeEventListener", "readUsedSize", "_pointInLine", "p1", "p2", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "a", "b", "c", "getRightToLeftAdapter", "rectX", "setWidth", "xPlus", "leftForLtr", "itemWidth", "getLeftToRightAdapter", "_itemWidth", "getRtlAdapter", "overrideTextDirection", "direction", "original", "getPropertyPriority", "setProperty", "prevTextDirection", "restoreTextDirection", "propertyFn", "between", "_angleBetween", "compare", "_angleDiff", "normalize", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "segment", "startBound", "endBound", "_boundSegment", "inside", "subStart", "prevValue", "startIsBefore", "endIsBefore", "shouldStart", "shouldStop", "_boundSegments", "segments", "sub", "findStartAndEnd", "solidSegments", "last", "cur", "stop", "_computeSegments", "segmentOptions", "_loop", "splitByStyles", "completeLoop", "_fullLoop", "doSplitByStyles", "chartContext", "_chart", "baseStyle", "readStyle", "_datasetIndex", "datasetIndex", "prevStyle", "addStyle", "l", "st", "dir", "p0", "p0DataIndex", "p1DataIndex", "styleChanged", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "replacer", "getSizeForArea", "chartArea", "field", "getDatasetArea", "getDatasetClipArea", "_clip", "disabled", "Animator", "constructor", "_request", "_charts", "Map", "_running", "_lastDate", "undefined", "_notify", "chart", "anims", "date", "type", "callbacks", "listeners", "numSteps", "duration", "forEach", "fn", "initial", "currentStep", "Math", "min", "start", "_refresh", "requestAnimFrame", "call", "window", "_update", "Date", "now", "remaining", "running", "items", "length", "i", "draw", "item", "_active", "_total", "tick", "pop", "_getAnims", "charts", "get", "complete", "progress", "set", "listen", "event", "cb", "push", "add", "has", "reduce", "acc", "cur", "max", "_duration", "stop", "cancel", "remove", "delete", "transparent", "interpolators", "boolean", "from", "to", "factor", "color", "c0", "helpersColor", "c1", "valid", "mix", "hexString", "number", "Animation", "cfg", "target", "prop", "currentValue", "resolve", "_fn", "_easing", "effects", "easing", "linear", "_start", "floor", "delay", "_loop", "loop", "_target", "_prop", "_from", "_to", "_promises", "active", "update", "elapsed", "remain", "wait", "promises", "Promise", "res", "rej", "resolved", "method", "Animations", "config", "_chart", "_properties", "configure", "isObject", "animationOptions", "Object", "keys", "defaults", "animation", "animatedProps", "getOwnPropertyNames", "key", "option", "isArray", "properties", "_animateOptions", "values", "newOptions", "options", "resolveTargetOptions", "animations", "_createAnimations", "$shared", "awaitAll", "$animations", "then", "props", "charAt", "value", "size", "assign", "animator", "anim", "all", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "end", "defaultClip", "xScale", "yScale", "x", "y", "top", "right", "bottom", "left", "toClip", "t", "r", "b", "l", "disabled", "getSortedDatasetIndices", "filterVisible", "metasets", "_getSortedDatasetMetas", "ilen", "index", "applyStack", "stack", "dsIndex", "singleMode", "mode", "datasetIndex", "otherValue", "found", "isFinite", "sign", "convertObjectDataToArray", "data", "meta", "iScale", "vScale", "iAxisKey", "axis", "vAxisKey", "adata", "Array", "isStacked", "stacked", "getStackKey", "indexScale", "valueScale", "id", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iAxis", "vAxis", "itemStacks", "_top", "_bottom", "visualValues", "_visualValues", "getFirstScaleId", "scales", "filter", "shift", "createDatasetContext", "parent", "createContext", "dataset", "createDataContext", "element", "dataIndex", "raw", "clearStacks", "_parsed", "isDirectUpdateMode", "cloneIfNotShared", "cached", "shared", "createStack", "canStack", "hidden", "_stacked", "DatasetController", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "datasetElementType", "dataElementType", "initialize", "linkScales", "addElements", "fill", "isPluginEnabled", "console", "warn", "updateIndex", "getDataset", "chooseId", "xid", "xAxisID", "valueOrDefault", "yid", "yAxisID", "rid", "rAxisID", "indexAxis", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "datasets", "getDatasetMeta", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "scopes", "getOptionScopes", "createResolver", "getContext", "parsing", "parse", "count", "sorted", "_sorted", "prev", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "labels", "getLabels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "getParsed", "getDataElement", "updateRangeFromParsed", "range", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getAllParsedValues", "getMaxOverflow", "getLabelAndValue", "label", "getLabelForValue", "_clip", "clip", "elements", "area", "chartArea", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "context", "_resolveElementOptions", "elementType", "cache", "cacheKey", "sharing", "defined", "datasetElementScopeKeys", "prefixes", "names", "resolveNamedOptions", "freeze", "_resolveAnimations", "transition", "datasetAnimationScopeKeys", "_cacheable", "getSharedOptions", "includeOptions", "sharedOptions", "_animationsDisabled", "_getSharedOptions", "firstOpts", "previouslySharedOptions", "updateSharedOptions", "updateElement", "_setStyle", "removeHoverStyle", "setHoverStyle", "_removeDatasetHoverStyle", "_setDatasetHoverStyle", "arg1", "arg2", "numMeta", "numData", "_insertElements", "_removeElements", "move", "arr", "updateElements", "removed", "splice", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "updateMinAndPrev", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "_custom", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "BarController", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "grouped", "currentParsed", "iScaleValue", "skipNull", "find", "val", "isNaN", "indexOf", "_getStackCount", "_getAxisCount", "_getAxis", "getFirstScaleIdForIndexAxis", "indexScaleId", "firstScaleAxisId", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "axisCount", "axisID", "axisNumber", "stackIndex", "rects", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "BubbleController", "radius", "points", "point", "iPixel", "vPixel", "skip", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "cos", "startY", "sin", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "spacing", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "animateRotate", "calculateCircumference", "animationOpts", "centerX", "centerY", "animateScale", "arc", "metaData", "formatNumber", "locale", "borderAlign", "borderWidth", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "LineController", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "showLine", "segment", "animated", "spanGaps", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "angleLines", "display", "circular", "pointLabels", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "registry", "getElement", "interaction", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "_date", "binarySearch", "metaset", "intersect", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "result", "distanceToDefinedLo", "slice", "lo", "findIndex", "distanceToDefinedHi", "hi", "el", "getRange", "evaluateInteractionItems", "position", "handler", "getSortedVisibleDatasetMetas", "j", "getDistanceMetricForAxis", "useX", "useY", "pt1", "pt2", "deltaX", "deltaY", "sqrt", "pow", "getIntersectItems", "useFinalPosition", "includeInvisible", "isPointInArea", "evaluationFunc", "_isPointInArea", "inRange", "getNearestRadialItems", "getProps", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "getCenterPoint", "pointInArea", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "modes", "getRelativePosition", "nearest", "STATIC_POSITIONS", "filterByPosition", "array", "pos", "filterDynamicPositionByAxis", "box", "sortByWeight", "v0", "wrapBoxes", "boxes", "layoutBoxes", "stackWeight", "buildStacks", "layouts", "wrap", "includes", "_stack", "placed", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "availableWidth", "availableHeight", "buildLayoutBoxes", "centerHorizontal", "centerVertical", "leftAndTop", "rightAndBottom", "vertical", "getCombinedMax", "maxPadding", "updateMaxPadding", "boxPadding", "updateDims", "getPadding", "newWidth", "outerWidth", "newHeight", "outerHeight", "widthChanged", "w", "heightChanged", "h", "same", "other", "handleMaxPadding", "updatePos", "change", "getMargins", "marginForPositions", "positions", "margin", "fitBoxes", "refitBoxes", "refit", "changed", "setBoxDims", "placeBoxes", "userPadding", "padding", "addBox", "_layers", "z", "removeBox", "layoutItem", "minPadding", "toPadding", "verticalBoxes", "horizontalBoxes", "each", "beforeLayout", "visibleVerticalBoxCount", "BasePlatform", "acquireContext", "canvas", "releaseContext", "addEventListener", "listener", "removeEventListener", "getDevicePixelRatio", "getMaximumSize", "isAttached", "updateConfig", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "touchstart", "touchmove", "touchend", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointerout", "isNullOrEmpty", "initCanvas", "renderHeight", "getAttribute", "renderWidth", "boxSizing", "displayWidth", "readUsedSize", "displayHeight", "eventListenerOptions", "supportsEventListenerOptions", "passive", "addListener", "node", "removeListener", "fromNativeEvent", "native", "nodeListContains", "nodeList", "contains", "createAttachObserver", "observer", "MutationObserver", "entries", "trigger", "addedNodes", "removedNodes", "observe", "document", "childList", "subtree", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "dpr", "devicePixelRatio", "resize", "currentDevicePixelRatio", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "container", "_getParentNode", "throttled", "clientWidth", "ResizeObserver", "contentRect", "releaseObserver", "disconnect", "createProxyAndListen", "proxy", "DomPlatform", "removeAttribute", "setAttribute", "proxies", "$proxies", "handlers", "attach", "detach", "isConnected", "_detectPlatform", "_isDomSupported", "OffscreenCanvas", "Element", "tooltipPosition", "hasValue", "final", "ret", "defaultRoutes", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "round", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "ceil", "majorStart", "majorEnd", "len", "reverseAlign", "align", "offsetFromEdge", "getTicksLimit", "ticksLength", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "epsilon", "lineValue", "garbageCollect", "caches", "gc", "gcLen", "getTickMarkLength", "drawTicks", "getTitleHeight", "fallback", "font", "toFont", "lines", "lineHeight", "createScaleContext", "createTickContext", "titleAlign", "_toLeftRightCenter", "titleArgs", "titleX", "titleY", "_alignStartEnd", "positionAxisID", "Scale", "_margins", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "labelRotation", "_range", "_gridLineItems", "_labelItems", "_labelSizes", "_longestTextCache", "_userMax", "_userMin", "_suggestedMax", "_suggestedMin", "_ticksLength", "_borderValue", "_dataLimitsCached", "setContext", "suggestedMin", "suggestedMax", "finiteOrDefault", "metas", "getTicks", "xLabels", "yLabels", "getLabelItems", "_computeLabelItems", "beforeUpdate", "margins", "grace", "sampleSize", "beforeSetDimensions", "setDimensions", "afterSetDimensions", "beforeDataLimits", "determineDataLimits", "afterDataLimits", "_addGrace", "beforeBuildTicks", "buildTicks", "afterBuildTicks", "samplingEnabled", "_convertTicksToLabels", "beforeCalculateLabelRotation", "calculateLabelRotation", "afterCalculateLabelRotation", "source", "afterAutoSkip", "beforeFit", "fit", "afterFit", "afterUpdate", "reversePixels", "_alignToPixels", "alignToPixels", "_callHooks", "notifyPlugins", "beforeTickToLabelConversion", "generateTickLabels", "callback", "afterTickToLabelConversion", "numTicks", "minRotation", "maxRotation", "tickWidth", "maxLabelDiagonal", "_isVisible", "labelSizes", "_getLabelSizes", "maxLabelWidth", "widest", "maxLabelHeight", "highest", "_limitValue", "title", "toDegrees", "asin", "titleOpts", "gridOpts", "titleHeight", "tickPadding", "angleRadians", "labelHeight", "mirror", "labelWidth", "_calculatePadding", "_handleMargins", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "isFullSize", "_computeLabelSizes", "widths", "heights", "widestLabelSize", "highestLabelSize", "jlen", "tickFont", "fontString", "nestedLabel", "_resolveTickFontOptions", "string", "_measureText", "valueAt", "idx", "pixel", "decimal", "_int16Range", "_alignPixel", "getDecimalForPixel", "getBaseValue", "optionTicks", "rot", "autoSkipPadding", "_computeGridLineItems", "tl", "borderOpts", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "step", "optsAtIndex", "optsAtIndexBorder", "lineColor", "borderDash", "dash", "borderDashOffset", "dashOffset", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "tickAndPadding", "hTickAndPadding", "textAlign", "lineCount", "textOffset", "textBaseline", "_getXAxisLabelAlignment", "_getYAxisLabelAlignment", "labelOffset", "halfCount", "strokeColor", "textStrokeColor", "strokeWidth", "textStrokeWidth", "tickTextAlign", "showLabelBackdrop", "backdrop", "labelPadding", "backdropPadding", "backdropColor", "translation", "_computeLabelArea", "drawBackground", "save", "fillRect", "restore", "drawGrid", "drawLine", "p1", "p2", "setLineDash", "lineDashOffset", "beginPath", "moveTo", "lineTo", "stroke", "drawOnChartArea", "drawBorder", "lastLineWidth", "drawLabels", "clipArea", "renderTextOptions", "renderText", "unclipArea", "drawTitle", "tz", "gz", "bz", "_maxDigits", "fontSize", "TypedRegistry", "scope", "create", "isForType", "isPrototypeOf", "register", "proto", "getPrototypeOf", "parentScope", "isIChartComponent", "registerDefaults", "unregister", "itemDefaults", "merge", "routeDefaults", "describe", "routes", "property", "propertyParts", "split", "sourceName", "sourceScope", "join", "parts", "targetName", "targetScope", "route", "Registry", "controllers", "_typedRegistries", "_each", "addControllers", "addPlugins", "addScales", "getController", "_get", "getPlugin", "getScale", "removeControllers", "removeElements", "removePlugins", "removeScales", "typedRegistry", "arg", "reg", "_getRegistryForType", "_exec", "itemReg", "component", "camelMethod", "_capitalize", "PluginService", "_init", "notify", "hook", "_createDescriptors", "_descriptors", "descriptor", "plugin", "callCallback", "cancelable", "invalidate", "_oldCache", "_notifyStateChanges", "allPlugins", "createDescriptors", "previousDescriptors", "some", "localIds", "local", "getOpts", "pluginOpts", "pluginScopeKeys", "scriptable", "indexable", "allKeys", "getIndexAxis", "datasetDefaults", "datasetOptions", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "idMatchesAxis", "axisFromPosition", "determineAxis", "scaleOptions", "toLowerCase", "getAxisFromDataset", "retrieveAxisFromDatasets", "boundDs", "d", "mergeScaleConfig", "chartDefaults", "configScales", "chartIndexAxis", "scaleConf", "error", "_proxy", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "Set", "cachedKeys", "generate", "addIfFound", "Config", "_config", "_scopeCache", "_resolverCache", "platform", "clearCache", "clear", "datasetType", "additionalOptionScopes", "_cachedScopes", "mainScope", "resetCache", "keyLists", "chartOptionScopes", "resolver", "subPrefixes", "getResolver", "needContext", "isFunction", "subResolver", "_attachContext", "descriptorDefaults", "resolverCache", "_createResolver", "p", "hasFunction", "isScriptable", "isIndexable", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l1", "l2", "onAnimationsComplete", "onComplete", "onAnimationProgress", "onProgress", "getCanvas", "getElementById", "instances", "getChart", "c", "moveNumericKeys", "intKey", "determineLastEvent", "lastEvent", "inChartArea", "isClick", "Chart", "invalidatePlugins", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_plugins", "_hiddenIndices", "attached", "_doResize", "debounce", "resizeDelay", "_initialize", "maintainAspectRatio", "responsive", "retinaScale", "bindEvents", "clearCanvas", "_resize", "_resizeBeforeDraw", "newSize", "newRatio", "onResize", "render", "ensureScalesHaveIDs", "scalesOptions", "axisOptions", "buildOrUpdateScales", "scaleOpts", "updated", "isRadial", "dposition", "dtype", "scaleType", "scaleClass", "hasUpdated", "_updateMetasets", "_destroyDatasetMeta", "_removeUnreferencedMetasets", "buildOrUpdateControllers", "newControllers", "order", "visible", "ControllerClass", "_resetElements", "animsDisabled", "_updateScales", "_checkEventBindings", "_updateHiddenIndices", "_minPadding", "autoPadding", "_updateLayout", "_updateDatasets", "_eventHandler", "_updateHoverStyles", "existingEvents", "newEvents", "events", "setsEqual", "unbindEvents", "changes", "_getUniformDataChanges", "datasetCount", "makeSet", "changeSet", "noArea", "_idx", "_updateDataset", "layers", "_drawDatasets", "_drawDataset", "getDatasetClipArea", "getElementsAtEventForMode", "Interaction", "setDatasetVisibility", "_updateVisibility", "hide", "show", "_stop", "destroy", "toBase64Image", "toDataURL", "bindUserEvents", "bindResponsiveEvents", "_add", "_remove", "detached", "updateHoverStyle", "prefix", "getActiveElements", "setActiveElements", "activeElements", "lastActive", "_elementsEqual", "pluginId", "replay", "hoverOptions", "hover", "deactivated", "activated", "eventFilter", "_handleEvent", "_getActiveElements", "_isClickEvent", "onHover", "version", "clipSelf", "borderJoinStyle", "outerAngleClip", "_normalizeAngle", "innerAngleClip", "clipWidth", "closePath", "rect", "clipArc", "pixelMargin", "angleMargin", "toRadiusCorners", "_readValueToProps", "parseBorderRadius", "angleDelta", "o", "borderRadius", "halfThickness", "innerLimit", "computeOuterLimit", "outerArcLimit", "outerStart", "outerEnd", "innerStart", "innerEnd", "rThetaToXY", "theta", "pathArc", "innerR", "spacingOffset", "alpha", "noSpacingInnerRadius", "noSpacingOuterRadius", "avNogSpacingRadius", "adjustedAngle", "beta", "angleOffset", "outerStartAdjustedRadius", "outerEndAdjustedRadius", "outerStartAdjustedAngle", "outerEndAdjustedAngle", "innerStartAdjustedRadius", "innerEndAdjustedRadius", "innerStartAdjustedAngle", "innerEndAdjustedAngle", "outerMidAdjustedAngle", "pCenter", "p4", "innerMidAdjustedAngle", "p8", "outerStartX", "outerStartY", "outerEndX", "outerEndY", "drawArc", "fullCircles", "inner", "lineJoin", "selfJoin", "ArcElement", "chartX", "chartY", "rAdjust", "nonZeroBetween", "betweenAngles", "withinRadius", "_isBetween", "halfAngle", "halfRadius", "translate", "fix", "radiusOffset", "setStyle", "lineCap", "borderCapStyle", "previous", "getLineMethod", "stepped", "_steppedLineTo", "tension", "cubicInterpolationMode", "_bezierCurveTo", "pathVars", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "pathSegment", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "useFastPath", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "_path", "Path2D", "strokePathDirect", "segments", "segmentMethod", "usePath2D", "LineElement", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "capBezierPoints", "hitRadius", "PointElement", "mouseX", "mouseY", "inXRange", "inYRange", "hoverRadius", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "outer", "skipX", "skipY", "skipBoth", "hasRadius", "addNormalRectPath", "inflateRect", "amount", "refRect", "BarElement", "addRectPath", "addRoundedRectPath", "BORDER_COLORS", "BACKGROUND_COLORS", "replace", "getBorderColor", "getBackgroundColor", "colorizeDefaultDataset", "colorizeDoughnutDataset", "colorizePolarAreaDataset", "getColorizer", "containsColorsDefinitions", "k", "containsColorsDefinition", "containsDefaultColorsDefenitions", "forceOverride", "_args", "chartOptions", "containsColorDefenition", "colorizer", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "xMax", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "cleanDecimatedDataset", "defineProperty", "configurable", "enumerable", "writable", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "algorithm", "beforeElementsUpdate", "xAxis", "threshold", "tpoints", "_findSegmentEnd", "_getBounds", "targetSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_pointsFromSegments", "boundary", "linePoints", "_createBoundaryLine", "_shouldApplyFill", "_resolveTarget", "sources", "propagate", "visited", "_decodeFill", "parseFillOption", "parseFloat", "decodeTargetIndex", "firstCh", "_getTargetPixel", "_getTargetValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "unshift", "sourcePoint", "postponed", "findPoint", "pointValue", "firstValue", "lastValue", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "lineOpts", "above", "doFill", "fillColor", "clipVertical", "clipHorizontal", "clipY", "lineLoop", "clipX", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "usePointStyle", "pointStyleWidth", "itemHeight", "itemsEqual", "Legend", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "labelFont", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "itemWidth", "measureText", "_itemHeight", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "calculateItemSize", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "lineDash", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "fontLineHeight", "calculateLegendItemHeight", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "isListened", "hoveredItem", "sameItem", "onLeave", "calculateItemWidth", "calculateItemHeight", "legendItemText", "_element", "afterEvent", "ci", "useBorderRadius", "Title", "_padding", "textSize", "_drawArgs", "fontOpts", "createTitle", "titleBlock", "WeakMap", "positioners", "average", "xSet", "xAverage", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "apply", "splitNewlines", "str", "String", "createTooltipItem", "formattedValue", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "defaultCallbacks", "beforeTitle", "noop", "labelCount", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "invokeCallbackWithFallback", "Tooltip", "opacity", "_eventPosition", "_size", "_cachedAnimations", "_tooltipItems", "dataPoints", "caretX", "caretY", "labelColors", "labelPointStyles", "labelTextColors", "getTitle", "getBeforeBody", "getBody", "bodyItems", "scoped", "getAfterBody", "getFooter", "_createItems", "itemSort", "positionAndSize", "backgroundPoint", "external", "drawCaret", "tooltipPoint", "caretPosition", "getCaretPosition", "x3", "y3", "ptX", "ptY", "pt", "titleColor", "_drawColorBox", "colorX", "rtlColorX", "yOffSet", "colorY", "multiKeyBackground", "outerX", "innerX", "strokeRect", "drawBody", "bodyAlign", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "drawFooter", "footerAlign", "footerColor", "tooltipSize", "quadraticCurveTo", "_updateAnimationTarget", "animX", "animY", "_willRender", "hasTooltipContent", "globalAlpha", "positionChanged", "_positionChanged", "_ignoreReplayEvents", "afterInit", "afterDraw", "_fallback", "addIfString", "addedLabels", "findOrAddLabel", "lastIndexOf", "_getLabelForValue", "CategoryScale", "_startValue", "_valueRange", "_addedLabels", "added", "generateTicks", "generationOptions", "dataRange", "MIN_SPACING", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "rad", "LinearScaleBase", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "stepSize", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "Ticks", "formatters", "numeric", "log10Floor", "log10", "changeExponent", "m", "isMajor", "tickVal", "steps", "rangeExp", "rangeStep", "startExp", "minExp", "exp", "significand", "lastTick", "LogarithmicScale", "_zero", "logarithmic", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "_pointLabels", "pointLabelOpts", "additionalAngle", "centerPointLabels", "getPointLabelContext", "getPointPosition", "drawingArea", "plFont", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "apexesInArea", "drawPointLabelBox", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "animate", "INTERVALS", "millisecond", "common", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "UNITS", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "MAX_SAFE_INTEGER", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "TimeScale", "_unit", "_majorUnit", "_offsets", "_normalized", "adapters", "displayFormats", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "registerables"] } diff --git a/vite/node_modules/.vite/deps/chunk-DTNR33MA.js b/vite/node_modules/.vite/deps/chunk-DTNR33MA.js deleted file mode 100644 index 8d2be93457ae4c485930530cc6c2bc82081611ed..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chunk-DTNR33MA.js +++ /dev/null @@ -1,14539 +0,0 @@ -import { - __publicField -} from "./chunk-DC5AMYBS.js"; - -// node_modules/@kurkle/color/dist/color.esm.js -function round(v) { - return v + 0.5 | 0; -} -var lim = (v, l, h) => Math.max(Math.min(v, h), l); -function p2b(v) { - return lim(round(v * 2.55), 0, 255); -} -function n2b(v) { - return lim(round(v * 255), 0, 255); -} -function b2n(v) { - return lim(round(v / 2.55) / 100, 0, 1); -} -function n2p(v) { - return lim(round(v * 100), 0, 100); -} -var map$1 = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15 }; -var hex = [..."0123456789ABCDEF"]; -var h1 = (b) => hex[b & 15]; -var h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15]; -var eq = (b) => (b & 240) >> 4 === (b & 15); -var isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a); -function hexParse(str) { - var len = str.length; - var ret; - if (str[0] === "#") { - if (len === 4 || len === 5) { - ret = { - r: 255 & map$1[str[1]] * 17, - g: 255 & map$1[str[2]] * 17, - b: 255 & map$1[str[3]] * 17, - a: len === 5 ? map$1[str[4]] * 17 : 255 - }; - } else if (len === 7 || len === 9) { - ret = { - r: map$1[str[1]] << 4 | map$1[str[2]], - g: map$1[str[3]] << 4 | map$1[str[4]], - b: map$1[str[5]] << 4 | map$1[str[6]], - a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255 - }; - } - } - return ret; -} -var alpha = (a, f) => a < 255 ? f(a) : ""; -function hexString(v) { - var f = isShort(v) ? h1 : h2; - return v ? "#" + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : void 0; -} -var HUE_RE = /^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/; -function hsl2rgbn(h, s, l) { - const a = s * Math.min(l, 1 - l); - const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); - return [f(0), f(8), f(4)]; -} -function hsv2rgbn(h, s, v) { - const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0); - return [f(5), f(3), f(1)]; -} -function hwb2rgbn(h, w, b) { - const rgb = hsl2rgbn(h, 1, 0.5); - let i; - if (w + b > 1) { - i = 1 / (w + b); - w *= i; - b *= i; - } - for (i = 0; i < 3; i++) { - rgb[i] *= 1 - w - b; - rgb[i] += w; - } - return rgb; -} -function hueValue(r, g, b, d, max) { - if (r === max) { - return (g - b) / d + (g < b ? 6 : 0); - } - if (g === max) { - return (b - r) / d + 2; - } - return (r - g) / d + 4; -} -function rgb2hsl(v) { - const range = 255; - const r = v.r / range; - const g = v.g / range; - const b = v.b / range; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const l = (max + min) / 2; - let h, s, d; - if (max !== min) { - d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - h = hueValue(r, g, b, d, max); - h = h * 60 + 0.5; - } - return [h | 0, s || 0, l]; -} -function calln(f, a, b, c) { - return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b); -} -function hsl2rgb(h, s, l) { - return calln(hsl2rgbn, h, s, l); -} -function hwb2rgb(h, w, b) { - return calln(hwb2rgbn, h, w, b); -} -function hsv2rgb(h, s, v) { - return calln(hsv2rgbn, h, s, v); -} -function hue(h) { - return (h % 360 + 360) % 360; -} -function hueParse(str) { - const m = HUE_RE.exec(str); - let a = 255; - let v; - if (!m) { - return; - } - if (m[5] !== v) { - a = m[6] ? p2b(+m[5]) : n2b(+m[5]); - } - const h = hue(+m[2]); - const p1 = +m[3] / 100; - const p2 = +m[4] / 100; - if (m[1] === "hwb") { - v = hwb2rgb(h, p1, p2); - } else if (m[1] === "hsv") { - v = hsv2rgb(h, p1, p2); - } else { - v = hsl2rgb(h, p1, p2); - } - return { - r: v[0], - g: v[1], - b: v[2], - a - }; -} -function rotate(v, deg) { - var h = rgb2hsl(v); - h[0] = hue(h[0] + deg); - h = hsl2rgb(h); - v.r = h[0]; - v.g = h[1]; - v.b = h[2]; -} -function hslString(v) { - if (!v) { - return; - } - const a = rgb2hsl(v); - const h = a[0]; - const s = n2p(a[1]); - const l = n2p(a[2]); - return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`; -} -var map = { - x: "dark", - Z: "light", - Y: "re", - X: "blu", - W: "gr", - V: "medium", - U: "slate", - A: "ee", - T: "ol", - S: "or", - B: "ra", - C: "lateg", - D: "ights", - R: "in", - Q: "turquois", - E: "hi", - P: "ro", - O: "al", - N: "le", - M: "de", - L: "yello", - F: "en", - K: "ch", - G: "arks", - H: "ea", - I: "ightg", - J: "wh" -}; -var names$1 = { - OiceXe: "f0f8ff", - antiquewEte: "faebd7", - aqua: "ffff", - aquamarRe: "7fffd4", - azuY: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "0", - blanKedOmond: "ffebcd", - Xe: "ff", - XeviTet: "8a2be2", - bPwn: "a52a2a", - burlywood: "deb887", - caMtXe: "5f9ea0", - KartYuse: "7fff00", - KocTate: "d2691e", - cSO: "ff7f50", - cSnflowerXe: "6495ed", - cSnsilk: "fff8dc", - crimson: "dc143c", - cyan: "ffff", - xXe: "8b", - xcyan: "8b8b", - xgTMnPd: "b8860b", - xWay: "a9a9a9", - xgYF: "6400", - xgYy: "a9a9a9", - xkhaki: "bdb76b", - xmagFta: "8b008b", - xTivegYF: "556b2f", - xSange: "ff8c00", - xScEd: "9932cc", - xYd: "8b0000", - xsOmon: "e9967a", - xsHgYF: "8fbc8f", - xUXe: "483d8b", - xUWay: "2f4f4f", - xUgYy: "2f4f4f", - xQe: "ced1", - xviTet: "9400d3", - dAppRk: "ff1493", - dApskyXe: "bfff", - dimWay: "696969", - dimgYy: "696969", - dodgerXe: "1e90ff", - fiYbrick: "b22222", - flSOwEte: "fffaf0", - foYstWAn: "228b22", - fuKsia: "ff00ff", - gaRsbSo: "dcdcdc", - ghostwEte: "f8f8ff", - gTd: "ffd700", - gTMnPd: "daa520", - Way: "808080", - gYF: "8000", - gYFLw: "adff2f", - gYy: "808080", - honeyMw: "f0fff0", - hotpRk: "ff69b4", - RdianYd: "cd5c5c", - Rdigo: "4b0082", - ivSy: "fffff0", - khaki: "f0e68c", - lavFMr: "e6e6fa", - lavFMrXsh: "fff0f5", - lawngYF: "7cfc00", - NmoncEffon: "fffacd", - ZXe: "add8e6", - ZcSO: "f08080", - Zcyan: "e0ffff", - ZgTMnPdLw: "fafad2", - ZWay: "d3d3d3", - ZgYF: "90ee90", - ZgYy: "d3d3d3", - ZpRk: "ffb6c1", - ZsOmon: "ffa07a", - ZsHgYF: "20b2aa", - ZskyXe: "87cefa", - ZUWay: "778899", - ZUgYy: "778899", - ZstAlXe: "b0c4de", - ZLw: "ffffe0", - lime: "ff00", - limegYF: "32cd32", - lRF: "faf0e6", - magFta: "ff00ff", - maPon: "800000", - VaquamarRe: "66cdaa", - VXe: "cd", - VScEd: "ba55d3", - VpurpN: "9370db", - VsHgYF: "3cb371", - VUXe: "7b68ee", - VsprRggYF: "fa9a", - VQe: "48d1cc", - VviTetYd: "c71585", - midnightXe: "191970", - mRtcYam: "f5fffa", - mistyPse: "ffe4e1", - moccasR: "ffe4b5", - navajowEte: "ffdead", - navy: "80", - Tdlace: "fdf5e6", - Tive: "808000", - TivedBb: "6b8e23", - Sange: "ffa500", - SangeYd: "ff4500", - ScEd: "da70d6", - pOegTMnPd: "eee8aa", - pOegYF: "98fb98", - pOeQe: "afeeee", - pOeviTetYd: "db7093", - papayawEp: "ffefd5", - pHKpuff: "ffdab9", - peru: "cd853f", - pRk: "ffc0cb", - plum: "dda0dd", - powMrXe: "b0e0e6", - purpN: "800080", - YbeccapurpN: "663399", - Yd: "ff0000", - Psybrown: "bc8f8f", - PyOXe: "4169e1", - saddNbPwn: "8b4513", - sOmon: "fa8072", - sandybPwn: "f4a460", - sHgYF: "2e8b57", - sHshell: "fff5ee", - siFna: "a0522d", - silver: "c0c0c0", - skyXe: "87ceeb", - UXe: "6a5acd", - UWay: "708090", - UgYy: "708090", - snow: "fffafa", - sprRggYF: "ff7f", - stAlXe: "4682b4", - tan: "d2b48c", - teO: "8080", - tEstN: "d8bfd8", - tomato: "ff6347", - Qe: "40e0d0", - viTet: "ee82ee", - JHt: "f5deb3", - wEte: "ffffff", - wEtesmoke: "f5f5f5", - Lw: "ffff00", - LwgYF: "9acd32" -}; -function unpack() { - const unpacked = {}; - const keys = Object.keys(names$1); - const tkeys = Object.keys(map); - let i, j, k, ok, nk; - for (i = 0; i < keys.length; i++) { - ok = nk = keys[i]; - for (j = 0; j < tkeys.length; j++) { - k = tkeys[j]; - nk = nk.replace(k, map[k]); - } - k = parseInt(names$1[ok], 16); - unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255]; - } - return unpacked; -} -var names; -function nameParse(str) { - if (!names) { - names = unpack(); - names.transparent = [0, 0, 0, 0]; - } - const a = names[str.toLowerCase()]; - return a && { - r: a[0], - g: a[1], - b: a[2], - a: a.length === 4 ? a[3] : 255 - }; -} -var RGB_RE = /^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/; -function rgbParse(str) { - const m = RGB_RE.exec(str); - let a = 255; - let r, g, b; - if (!m) { - return; - } - if (m[7] !== r) { - const v = +m[7]; - a = m[8] ? p2b(v) : lim(v * 255, 0, 255); - } - r = +m[1]; - g = +m[3]; - b = +m[5]; - r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255)); - g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255)); - b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255)); - return { - r, - g, - b, - a - }; -} -function rgbString(v) { - return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`); -} -var to = (v) => v <= 31308e-7 ? v * 12.92 : Math.pow(v, 1 / 2.4) * 1.055 - 0.055; -var from = (v) => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); -function interpolate(rgb1, rgb2, t) { - const r = from(b2n(rgb1.r)); - const g = from(b2n(rgb1.g)); - const b = from(b2n(rgb1.b)); - return { - r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))), - g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))), - b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))), - a: rgb1.a + t * (rgb2.a - rgb1.a) - }; -} -function modHSL(v, i, ratio) { - if (v) { - let tmp = rgb2hsl(v); - tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1)); - tmp = hsl2rgb(tmp); - v.r = tmp[0]; - v.g = tmp[1]; - v.b = tmp[2]; - } -} -function clone(v, proto) { - return v ? Object.assign(proto || {}, v) : v; -} -function fromObject(input) { - var v = { r: 0, g: 0, b: 0, a: 255 }; - if (Array.isArray(input)) { - if (input.length >= 3) { - v = { r: input[0], g: input[1], b: input[2], a: 255 }; - if (input.length > 3) { - v.a = n2b(input[3]); - } - } - } else { - v = clone(input, { r: 0, g: 0, b: 0, a: 1 }); - v.a = n2b(v.a); - } - return v; -} -function functionParse(str) { - if (str.charAt(0) === "r") { - return rgbParse(str); - } - return hueParse(str); -} -var Color = class _Color { - constructor(input) { - if (input instanceof _Color) { - return input; - } - const type = typeof input; - let v; - if (type === "object") { - v = fromObject(input); - } else if (type === "string") { - v = hexParse(input) || nameParse(input) || functionParse(input); - } - this._rgb = v; - this._valid = !!v; - } - get valid() { - return this._valid; - } - get rgb() { - var v = clone(this._rgb); - if (v) { - v.a = b2n(v.a); - } - return v; - } - set rgb(obj) { - this._rgb = fromObject(obj); - } - rgbString() { - return this._valid ? rgbString(this._rgb) : void 0; - } - hexString() { - return this._valid ? hexString(this._rgb) : void 0; - } - hslString() { - return this._valid ? hslString(this._rgb) : void 0; - } - mix(color2, weight) { - if (color2) { - const c1 = this.rgb; - const c2 = color2.rgb; - let w2; - const p = weight === w2 ? 0.5 : weight; - const w = 2 * p - 1; - const a = c1.a - c2.a; - const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2; - w2 = 1 - w1; - c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5; - c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5; - c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5; - c1.a = p * c1.a + (1 - p) * c2.a; - this.rgb = c1; - } - return this; - } - interpolate(color2, t) { - if (color2) { - this._rgb = interpolate(this._rgb, color2._rgb, t); - } - return this; - } - clone() { - return new _Color(this.rgb); - } - alpha(a) { - this._rgb.a = n2b(a); - return this; - } - clearer(ratio) { - const rgb = this._rgb; - rgb.a *= 1 - ratio; - return this; - } - greyscale() { - const rgb = this._rgb; - const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11); - rgb.r = rgb.g = rgb.b = val; - return this; - } - opaquer(ratio) { - const rgb = this._rgb; - rgb.a *= 1 + ratio; - return this; - } - negate() { - const v = this._rgb; - v.r = 255 - v.r; - v.g = 255 - v.g; - v.b = 255 - v.b; - return this; - } - lighten(ratio) { - modHSL(this._rgb, 2, ratio); - return this; - } - darken(ratio) { - modHSL(this._rgb, 2, -ratio); - return this; - } - saturate(ratio) { - modHSL(this._rgb, 1, ratio); - return this; - } - desaturate(ratio) { - modHSL(this._rgb, 1, -ratio); - return this; - } - rotate(deg) { - rotate(this._rgb, deg); - return this; - } -}; - -// node_modules/chart.js/dist/chunks/helpers.dataset.js -function noop() { -} -var uid = /* @__PURE__ */ (() => { - let id = 0; - return () => id++; -})(); -function isNullOrUndef(value) { - return value === null || value === void 0; -} -function isArray(value) { - if (Array.isArray && Array.isArray(value)) { - return true; - } - const type = Object.prototype.toString.call(value); - if (type.slice(0, 7) === "[object" && type.slice(-6) === "Array]") { - return true; - } - return false; -} -function isObject(value) { - return value !== null && Object.prototype.toString.call(value) === "[object Object]"; -} -function isNumberFinite(value) { - return (typeof value === "number" || value instanceof Number) && isFinite(+value); -} -function finiteOrDefault(value, defaultValue) { - return isNumberFinite(value) ? value : defaultValue; -} -function valueOrDefault(value, defaultValue) { - return typeof value === "undefined" ? defaultValue : value; -} -var toPercentage = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 : +value / dimension; -var toDimension = (value, dimension) => typeof value === "string" && value.endsWith("%") ? parseFloat(value) / 100 * dimension : +value; -function callback(fn, args, thisArg) { - if (fn && typeof fn.call === "function") { - return fn.apply(thisArg, args); - } -} -function each(loopable, fn, thisArg, reverse) { - let i, len, keys; - if (isArray(loopable)) { - len = loopable.length; - if (reverse) { - for (i = len - 1; i >= 0; i--) { - fn.call(thisArg, loopable[i], i); - } - } else { - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[i], i); - } - } - } else if (isObject(loopable)) { - keys = Object.keys(loopable); - len = keys.length; - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[keys[i]], keys[i]); - } - } -} -function _elementsEqual(a0, a1) { - let i, ilen, v0, v1; - if (!a0 || !a1 || a0.length !== a1.length) { - return false; - } - for (i = 0, ilen = a0.length; i < ilen; ++i) { - v0 = a0[i]; - v1 = a1[i]; - if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) { - return false; - } - } - return true; -} -function clone2(source) { - if (isArray(source)) { - return source.map(clone2); - } - if (isObject(source)) { - const target = /* @__PURE__ */ Object.create(null); - const keys = Object.keys(source); - const klen = keys.length; - let k = 0; - for (; k < klen; ++k) { - target[keys[k]] = clone2(source[keys[k]]); - } - return target; - } - return source; -} -function isValidKey(key) { - return [ - "__proto__", - "prototype", - "constructor" - ].indexOf(key) === -1; -} -function _merger(key, target, source, options) { - if (!isValidKey(key)) { - return; - } - const tval = target[key]; - const sval = source[key]; - if (isObject(tval) && isObject(sval)) { - merge(tval, sval, options); - } else { - target[key] = clone2(sval); - } -} -function merge(target, source, options) { - const sources = isArray(source) ? source : [ - source - ]; - const ilen = sources.length; - if (!isObject(target)) { - return target; - } - options = options || {}; - const merger = options.merger || _merger; - let current; - for (let i = 0; i < ilen; ++i) { - current = sources[i]; - if (!isObject(current)) { - continue; - } - const keys = Object.keys(current); - for (let k = 0, klen = keys.length; k < klen; ++k) { - merger(keys[k], target, current, options); - } - } - return target; -} -function mergeIf(target, source) { - return merge(target, source, { - merger: _mergerIf - }); -} -function _mergerIf(key, target, source) { - if (!isValidKey(key)) { - return; - } - const tval = target[key]; - const sval = source[key]; - if (isObject(tval) && isObject(sval)) { - mergeIf(tval, sval); - } else if (!Object.prototype.hasOwnProperty.call(target, key)) { - target[key] = clone2(sval); - } -} -var keyResolvers = { - // Chart.helpers.core resolveObjectKey should resolve empty key to root object - "": (v) => v, - // default resolvers - x: (o) => o.x, - y: (o) => o.y -}; -function _splitKey(key) { - const parts = key.split("."); - const keys = []; - let tmp = ""; - for (const part of parts) { - tmp += part; - if (tmp.endsWith("\\")) { - tmp = tmp.slice(0, -1) + "."; - } else { - keys.push(tmp); - tmp = ""; - } - } - return keys; -} -function _getKeyResolver(key) { - const keys = _splitKey(key); - return (obj) => { - for (const k of keys) { - if (k === "") { - break; - } - obj = obj && obj[k]; - } - return obj; - }; -} -function resolveObjectKey(obj, key) { - const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key)); - return resolver(obj); -} -function _capitalize(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -} -var defined = (value) => typeof value !== "undefined"; -var isFunction = (value) => typeof value === "function"; -var setsEqual = (a, b) => { - if (a.size !== b.size) { - return false; - } - for (const item of a) { - if (!b.has(item)) { - return false; - } - } - return true; -}; -function _isClickEvent(e) { - return e.type === "mouseup" || e.type === "click" || e.type === "contextmenu"; -} -var PI = Math.PI; -var TAU = 2 * PI; -var PITAU = TAU + PI; -var INFINITY = Number.POSITIVE_INFINITY; -var RAD_PER_DEG = PI / 180; -var HALF_PI = PI / 2; -var QUARTER_PI = PI / 4; -var TWO_THIRDS_PI = PI * 2 / 3; -var log10 = Math.log10; -var sign = Math.sign; -function almostEquals(x, y, epsilon) { - return Math.abs(x - y) < epsilon; -} -function niceNum(range) { - const roundedRange = Math.round(range); - range = almostEquals(range, roundedRange, range / 1e3) ? roundedRange : range; - const niceRange = Math.pow(10, Math.floor(log10(range))); - const fraction = range / niceRange; - const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10; - return niceFraction * niceRange; -} -function _factorize(value) { - const result = []; - const sqrt = Math.sqrt(value); - let i; - for (i = 1; i < sqrt; i++) { - if (value % i === 0) { - result.push(i); - result.push(value / i); - } - } - if (sqrt === (sqrt | 0)) { - result.push(sqrt); - } - result.sort((a, b) => a - b).pop(); - return result; -} -function isNonPrimitive(n) { - return typeof n === "symbol" || typeof n === "object" && n !== null && !(Symbol.toPrimitive in n || "toString" in n || "valueOf" in n); -} -function isNumber(n) { - return !isNonPrimitive(n) && !isNaN(parseFloat(n)) && isFinite(n); -} -function almostWhole(x, epsilon) { - const rounded = Math.round(x); - return rounded - epsilon <= x && rounded + epsilon >= x; -} -function _setMinAndMaxByKey(array, target, property) { - let i, ilen, value; - for (i = 0, ilen = array.length; i < ilen; i++) { - value = array[i][property]; - if (!isNaN(value)) { - target.min = Math.min(target.min, value); - target.max = Math.max(target.max, value); - } - } -} -function toRadians(degrees) { - return degrees * (PI / 180); -} -function toDegrees(radians) { - return radians * (180 / PI); -} -function _decimalPlaces(x) { - if (!isNumberFinite(x)) { - return; - } - let e = 1; - let p = 0; - while (Math.round(x * e) / e !== x) { - e *= 10; - p++; - } - return p; -} -function getAngleFromPoint(centrePoint, anglePoint) { - const distanceFromXCenter = anglePoint.x - centrePoint.x; - const distanceFromYCenter = anglePoint.y - centrePoint.y; - const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); - if (angle < -0.5 * PI) { - angle += TAU; - } - return { - angle, - distance: radialDistanceFromCenter - }; -} -function distanceBetweenPoints(pt1, pt2) { - return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); -} -function _angleDiff(a, b) { - return (a - b + PITAU) % TAU - PI; -} -function _normalizeAngle(a) { - return (a % TAU + TAU) % TAU; -} -function _angleBetween(angle, start, end, sameAngleIsFullCircle) { - const a = _normalizeAngle(angle); - const s = _normalizeAngle(start); - const e = _normalizeAngle(end); - const angleToStart = _normalizeAngle(s - a); - const angleToEnd = _normalizeAngle(e - a); - const startToAngle = _normalizeAngle(a - s); - const endToAngle = _normalizeAngle(a - e); - return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle; -} -function _limitValue(value, min, max) { - return Math.max(min, Math.min(max, value)); -} -function _int16Range(value) { - return _limitValue(value, -32768, 32767); -} -function _isBetween(value, start, end, epsilon = 1e-6) { - return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon; -} -function _lookup(table, value, cmp) { - cmp = cmp || ((index2) => table[index2] < value); - let hi = table.length - 1; - let lo = 0; - let mid; - while (hi - lo > 1) { - mid = lo + hi >> 1; - if (cmp(mid)) { - lo = mid; - } else { - hi = mid; - } - } - return { - lo, - hi - }; -} -var _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? (index2) => { - const ti = table[index2][key]; - return ti < value || ti === value && table[index2 + 1][key] === value; -} : (index2) => table[index2][key] < value); -var _rlookupByKey = (table, key, value) => _lookup(table, value, (index2) => table[index2][key] >= value); -function _filterBetween(values, min, max) { - let start = 0; - let end = values.length; - while (start < end && values[start] < min) { - start++; - } - while (end > start && values[end - 1] > max) { - end--; - } - return start > 0 || end < values.length ? values.slice(start, end) : values; -} -var arrayEvents = [ - "push", - "pop", - "shift", - "splice", - "unshift" -]; -function listenArrayEvents(array, listener) { - if (array._chartjs) { - array._chartjs.listeners.push(listener); - return; - } - Object.defineProperty(array, "_chartjs", { - configurable: true, - enumerable: false, - value: { - listeners: [ - listener - ] - } - }); - arrayEvents.forEach((key) => { - const method = "_onData" + _capitalize(key); - const base = array[key]; - Object.defineProperty(array, key, { - configurable: true, - enumerable: false, - value(...args) { - const res = base.apply(this, args); - array._chartjs.listeners.forEach((object) => { - if (typeof object[method] === "function") { - object[method](...args); - } - }); - return res; - } - }); - }); -} -function unlistenArrayEvents(array, listener) { - const stub = array._chartjs; - if (!stub) { - return; - } - const listeners = stub.listeners; - const index2 = listeners.indexOf(listener); - if (index2 !== -1) { - listeners.splice(index2, 1); - } - if (listeners.length > 0) { - return; - } - arrayEvents.forEach((key) => { - delete array[key]; - }); - delete array._chartjs; -} -function _arrayUnique(items) { - const set2 = new Set(items); - if (set2.size === items.length) { - return items; - } - return Array.from(set2); -} -var requestAnimFrame = function() { - if (typeof window === "undefined") { - return function(callback2) { - return callback2(); - }; - } - return window.requestAnimationFrame; -}(); -function throttled(fn, thisArg) { - let argsToUse = []; - let ticking = false; - return function(...args) { - argsToUse = args; - if (!ticking) { - ticking = true; - requestAnimFrame.call(window, () => { - ticking = false; - fn.apply(thisArg, argsToUse); - }); - } - }; -} -function debounce(fn, delay) { - let timeout; - return function(...args) { - if (delay) { - clearTimeout(timeout); - timeout = setTimeout(fn, delay, args); - } else { - fn.apply(this, args); - } - return delay; - }; -} -var _toLeftRightCenter = (align) => align === "start" ? "left" : align === "end" ? "right" : "center"; -var _alignStartEnd = (align, start, end) => align === "start" ? start : align === "end" ? end : (start + end) / 2; -var _textX = (align, left, right, rtl) => { - const check = rtl ? "left" : "right"; - return align === check ? right : align === "center" ? (left + right) / 2 : left; -}; -function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) { - const pointCount = points.length; - let start = 0; - let count = pointCount; - if (meta._sorted) { - const { iScale, vScale, _parsed } = meta; - const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null; - const axis = iScale.axis; - const { min, max, minDefined, maxDefined } = iScale.getUserBounds(); - if (minDefined) { - start = Math.min( - // @ts-expect-error Need to type _parsed - _lookupByKey(_parsed, axis, min).lo, - // @ts-expect-error Need to fix types on _lookupByKey - animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo - ); - if (spanGaps) { - const distanceToDefinedLo = _parsed.slice(0, start + 1).reverse().findIndex((point) => !isNullOrUndef(point[vScale.axis])); - start -= Math.max(0, distanceToDefinedLo); - } - start = _limitValue(start, 0, pointCount - 1); - } - if (maxDefined) { - let end = Math.max( - // @ts-expect-error Need to type _parsed - _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, - // @ts-expect-error Need to fix types on _lookupByKey - animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1 - ); - if (spanGaps) { - const distanceToDefinedHi = _parsed.slice(end - 1).findIndex((point) => !isNullOrUndef(point[vScale.axis])); - end += Math.max(0, distanceToDefinedHi); - } - count = _limitValue(end, start, pointCount) - start; - } else { - count = pointCount - start; - } - } - return { - start, - count - }; -} -function _scaleRangesChanged(meta) { - const { xScale, yScale, _scaleRanges } = meta; - const newRanges = { - xmin: xScale.min, - xmax: xScale.max, - ymin: yScale.min, - ymax: yScale.max - }; - if (!_scaleRanges) { - meta._scaleRanges = newRanges; - return true; - } - const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max; - Object.assign(_scaleRanges, newRanges); - return changed; -} -var atEdge = (t) => t === 0 || t === 1; -var elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p)); -var elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1; -var effects = { - linear: (t) => t, - easeInQuad: (t) => t * t, - easeOutQuad: (t) => -t * (t - 2), - easeInOutQuad: (t) => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1), - easeInCubic: (t) => t * t * t, - easeOutCubic: (t) => (t -= 1) * t * t + 1, - easeInOutCubic: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2), - easeInQuart: (t) => t * t * t * t, - easeOutQuart: (t) => -((t -= 1) * t * t * t - 1), - easeInOutQuart: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2), - easeInQuint: (t) => t * t * t * t * t, - easeOutQuint: (t) => (t -= 1) * t * t * t * t + 1, - easeInOutQuint: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2), - easeInSine: (t) => -Math.cos(t * HALF_PI) + 1, - easeOutSine: (t) => Math.sin(t * HALF_PI), - easeInOutSine: (t) => -0.5 * (Math.cos(PI * t) - 1), - easeInExpo: (t) => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)), - easeOutExpo: (t) => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1, - easeInOutExpo: (t) => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2), - easeInCirc: (t) => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1), - easeOutCirc: (t) => Math.sqrt(1 - (t -= 1) * t), - easeInOutCirc: (t) => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1), - easeInElastic: (t) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3), - easeOutElastic: (t) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3), - easeInOutElastic(t) { - const s = 0.1125; - const p = 0.45; - return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p); - }, - easeInBack(t) { - const s = 1.70158; - return t * t * ((s + 1) * t - s); - }, - easeOutBack(t) { - const s = 1.70158; - return (t -= 1) * t * ((s + 1) * t + s) + 1; - }, - easeInOutBack(t) { - let s = 1.70158; - if ((t /= 0.5) < 1) { - return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s)); - } - return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2); - }, - easeInBounce: (t) => 1 - effects.easeOutBounce(1 - t), - easeOutBounce(t) { - const m = 7.5625; - const d = 2.75; - if (t < 1 / d) { - return m * t * t; - } - if (t < 2 / d) { - return m * (t -= 1.5 / d) * t + 0.75; - } - if (t < 2.5 / d) { - return m * (t -= 2.25 / d) * t + 0.9375; - } - return m * (t -= 2.625 / d) * t + 0.984375; - }, - easeInOutBounce: (t) => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5 -}; -function isPatternOrGradient(value) { - if (value && typeof value === "object") { - const type = value.toString(); - return type === "[object CanvasPattern]" || type === "[object CanvasGradient]"; - } - return false; -} -function color(value) { - return isPatternOrGradient(value) ? value : new Color(value); -} -function getHoverColor(value) { - return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString(); -} -var numbers = [ - "x", - "y", - "borderWidth", - "radius", - "tension" -]; -var colors = [ - "color", - "borderColor", - "backgroundColor" -]; -function applyAnimationsDefaults(defaults2) { - defaults2.set("animation", { - delay: void 0, - duration: 1e3, - easing: "easeOutQuart", - fn: void 0, - from: void 0, - loop: void 0, - to: void 0, - type: void 0 - }); - defaults2.describe("animation", { - _fallback: false, - _indexable: false, - _scriptable: (name) => name !== "onProgress" && name !== "onComplete" && name !== "fn" - }); - defaults2.set("animations", { - colors: { - type: "color", - properties: colors - }, - numbers: { - type: "number", - properties: numbers - } - }); - defaults2.describe("animations", { - _fallback: "animation" - }); - defaults2.set("transitions", { - active: { - animation: { - duration: 400 - } - }, - resize: { - animation: { - duration: 0 - } - }, - show: { - animations: { - colors: { - from: "transparent" - }, - visible: { - type: "boolean", - duration: 0 - } - } - }, - hide: { - animations: { - colors: { - to: "transparent" - }, - visible: { - type: "boolean", - easing: "linear", - fn: (v) => v | 0 - } - } - } - }); -} -function applyLayoutsDefaults(defaults2) { - defaults2.set("layout", { - autoPadding: true, - padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - }); -} -var intlCache = /* @__PURE__ */ new Map(); -function getNumberFormat(locale, options) { - options = options || {}; - const cacheKey = locale + JSON.stringify(options); - let formatter = intlCache.get(cacheKey); - if (!formatter) { - formatter = new Intl.NumberFormat(locale, options); - intlCache.set(cacheKey, formatter); - } - return formatter; -} -function formatNumber(num, locale, options) { - return getNumberFormat(locale, options).format(num); -} -var formatters = { - values(value) { - return isArray(value) ? value : "" + value; - }, - numeric(tickValue, index2, ticks) { - if (tickValue === 0) { - return "0"; - } - const locale = this.chart.options.locale; - let notation; - let delta = tickValue; - if (ticks.length > 1) { - const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value)); - if (maxTick < 1e-4 || maxTick > 1e15) { - notation = "scientific"; - } - delta = calculateDelta(tickValue, ticks); - } - const logDelta = log10(Math.abs(delta)); - const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0); - const options = { - notation, - minimumFractionDigits: numDecimal, - maximumFractionDigits: numDecimal - }; - Object.assign(options, this.options.ticks.format); - return formatNumber(tickValue, locale, options); - }, - logarithmic(tickValue, index2, ticks) { - if (tickValue === 0) { - return "0"; - } - const remain = ticks[index2].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue))); - if ([ - 1, - 2, - 3, - 5, - 10, - 15 - ].includes(remain) || index2 > 0.8 * ticks.length) { - return formatters.numeric.call(this, tickValue, index2, ticks); - } - return ""; - } -}; -function calculateDelta(tickValue, ticks) { - let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value; - if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) { - delta = tickValue - Math.floor(tickValue); - } - return delta; -} -var Ticks = { - formatters -}; -function applyScaleDefaults(defaults2) { - defaults2.set("scale", { - display: true, - offset: false, - reverse: false, - beginAtZero: false, - bounds: "ticks", - clip: true, - grace: 0, - grid: { - display: true, - lineWidth: 1, - drawOnChartArea: true, - drawTicks: true, - tickLength: 8, - tickWidth: (_ctx, options) => options.lineWidth, - tickColor: (_ctx, options) => options.color, - offset: false - }, - border: { - display: true, - dash: [], - dashOffset: 0, - width: 1 - }, - title: { - display: false, - text: "", - padding: { - top: 4, - bottom: 4 - } - }, - ticks: { - minRotation: 0, - maxRotation: 50, - mirror: false, - textStrokeWidth: 0, - textStrokeColor: "", - padding: 3, - display: true, - autoSkip: true, - autoSkipPadding: 3, - labelOffset: 0, - callback: Ticks.formatters.values, - minor: {}, - major: {}, - align: "center", - crossAlign: "near", - showLabelBackdrop: false, - backdropColor: "rgba(255, 255, 255, 0.75)", - backdropPadding: 2 - } - }); - defaults2.route("scale.ticks", "color", "", "color"); - defaults2.route("scale.grid", "color", "", "borderColor"); - defaults2.route("scale.border", "color", "", "borderColor"); - defaults2.route("scale.title", "color", "", "color"); - defaults2.describe("scale", { - _fallback: false, - _scriptable: (name) => !name.startsWith("before") && !name.startsWith("after") && name !== "callback" && name !== "parser", - _indexable: (name) => name !== "borderDash" && name !== "tickBorderDash" && name !== "dash" - }); - defaults2.describe("scales", { - _fallback: "scale" - }); - defaults2.describe("scale.ticks", { - _scriptable: (name) => name !== "backdropPadding" && name !== "callback", - _indexable: (name) => name !== "backdropPadding" - }); -} -var overrides = /* @__PURE__ */ Object.create(null); -var descriptors = /* @__PURE__ */ Object.create(null); -function getScope$1(node, key) { - if (!key) { - return node; - } - const keys = key.split("."); - for (let i = 0, n = keys.length; i < n; ++i) { - const k = keys[i]; - node = node[k] || (node[k] = /* @__PURE__ */ Object.create(null)); - } - return node; -} -function set(root, scope, values) { - if (typeof scope === "string") { - return merge(getScope$1(root, scope), values); - } - return merge(getScope$1(root, ""), scope); -} -var Defaults = class { - constructor(_descriptors2, _appliers) { - this.animation = void 0; - this.backgroundColor = "rgba(0,0,0,0.1)"; - this.borderColor = "rgba(0,0,0,0.1)"; - this.color = "#666"; - this.datasets = {}; - this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio(); - this.elements = {}; - this.events = [ - "mousemove", - "mouseout", - "click", - "touchstart", - "touchmove" - ]; - this.font = { - family: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - size: 12, - style: "normal", - lineHeight: 1.2, - weight: null - }; - this.hover = {}; - this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor); - this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor); - this.hoverColor = (ctx, options) => getHoverColor(options.color); - this.indexAxis = "x"; - this.interaction = { - mode: "nearest", - intersect: true, - includeInvisible: false - }; - this.maintainAspectRatio = true; - this.onHover = null; - this.onClick = null; - this.parsing = true; - this.plugins = {}; - this.responsive = true; - this.scale = void 0; - this.scales = {}; - this.showLine = true; - this.drawActiveElementsOnTop = true; - this.describe(_descriptors2); - this.apply(_appliers); - } - set(scope, values) { - return set(this, scope, values); - } - get(scope) { - return getScope$1(this, scope); - } - describe(scope, values) { - return set(descriptors, scope, values); - } - override(scope, values) { - return set(overrides, scope, values); - } - route(scope, name, targetScope, targetName) { - const scopeObject = getScope$1(this, scope); - const targetScopeObject = getScope$1(this, targetScope); - const privateName = "_" + name; - Object.defineProperties(scopeObject, { - [privateName]: { - value: scopeObject[name], - writable: true - }, - [name]: { - enumerable: true, - get() { - const local = this[privateName]; - const target = targetScopeObject[targetName]; - if (isObject(local)) { - return Object.assign({}, target, local); - } - return valueOrDefault(local, target); - }, - set(value) { - this[privateName] = value; - } - } - }); - } - apply(appliers) { - appliers.forEach((apply) => apply(this)); - } -}; -var defaults = new Defaults({ - _scriptable: (name) => !name.startsWith("on"), - _indexable: (name) => name !== "events", - hover: { - _fallback: "interaction" - }, - interaction: { - _scriptable: false, - _indexable: false - } -}, [ - applyAnimationsDefaults, - applyLayoutsDefaults, - applyScaleDefaults -]); -function toFontString(font) { - if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) { - return null; - } - return (font.style ? font.style + " " : "") + (font.weight ? font.weight + " " : "") + font.size + "px " + font.family; -} -function _measureText(ctx, data, gc, longest, string) { - let textWidth = data[string]; - if (!textWidth) { - textWidth = data[string] = ctx.measureText(string).width; - gc.push(string); - } - if (textWidth > longest) { - longest = textWidth; - } - return longest; -} -function _longestText(ctx, font, arrayOfThings, cache) { - cache = cache || {}; - let data = cache.data = cache.data || {}; - let gc = cache.garbageCollect = cache.garbageCollect || []; - if (cache.font !== font) { - data = cache.data = {}; - gc = cache.garbageCollect = []; - cache.font = font; - } - ctx.save(); - ctx.font = font; - let longest = 0; - const ilen = arrayOfThings.length; - let i, j, jlen, thing, nestedThing; - for (i = 0; i < ilen; i++) { - thing = arrayOfThings[i]; - if (thing !== void 0 && thing !== null && !isArray(thing)) { - longest = _measureText(ctx, data, gc, longest, thing); - } else if (isArray(thing)) { - for (j = 0, jlen = thing.length; j < jlen; j++) { - nestedThing = thing[j]; - if (nestedThing !== void 0 && nestedThing !== null && !isArray(nestedThing)) { - longest = _measureText(ctx, data, gc, longest, nestedThing); - } - } - } - } - ctx.restore(); - const gcLen = gc.length / 2; - if (gcLen > arrayOfThings.length) { - for (i = 0; i < gcLen; i++) { - delete data[gc[i]]; - } - gc.splice(0, gcLen); - } - return longest; -} -function _alignPixel(chart, pixel, width) { - const devicePixelRatio = chart.currentDevicePixelRatio; - const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0; - return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth; -} -function clearCanvas(canvas, ctx) { - if (!ctx && !canvas) { - return; - } - ctx = ctx || canvas.getContext("2d"); - ctx.save(); - ctx.resetTransform(); - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.restore(); -} -function drawPoint(ctx, options, x, y) { - drawPointLegend(ctx, options, x, y, null); -} -function drawPointLegend(ctx, options, x, y, w) { - let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW; - const style = options.pointStyle; - const rotation = options.rotation; - const radius = options.radius; - let rad = (rotation || 0) * RAD_PER_DEG; - if (style && typeof style === "object") { - type = style.toString(); - if (type === "[object HTMLImageElement]" || type === "[object HTMLCanvasElement]") { - ctx.save(); - ctx.translate(x, y); - ctx.rotate(rad); - ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height); - ctx.restore(); - return; - } - } - if (isNaN(radius) || radius <= 0) { - return; - } - ctx.beginPath(); - switch (style) { - default: - if (w) { - ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU); - } else { - ctx.arc(x, y, radius, 0, TAU); - } - ctx.closePath(); - break; - case "triangle": - width = w ? w / 2 : radius; - ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); - rad += TWO_THIRDS_PI; - ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius); - ctx.closePath(); - break; - case "rectRounded": - cornerRadius = radius * 0.516; - size = radius - cornerRadius; - xOffset = Math.cos(rad + QUARTER_PI) * size; - xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); - yOffset = Math.sin(rad + QUARTER_PI) * size; - yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size); - ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); - ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad); - ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI); - ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); - ctx.closePath(); - break; - case "rect": - if (!rotation) { - size = Math.SQRT1_2 * radius; - width = w ? w / 2 : size; - ctx.rect(x - width, y - size, 2 * width, 2 * size); - break; - } - rad += QUARTER_PI; - case "rectRot": - xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); - ctx.moveTo(x - xOffsetW, y - yOffset); - ctx.lineTo(x + yOffsetW, y - xOffset); - ctx.lineTo(x + xOffsetW, y + yOffset); - ctx.lineTo(x - yOffsetW, y + xOffset); - ctx.closePath(); - break; - case "crossRot": - rad += QUARTER_PI; - case "cross": - xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); - ctx.moveTo(x - xOffsetW, y - yOffset); - ctx.lineTo(x + xOffsetW, y + yOffset); - ctx.moveTo(x + yOffsetW, y - xOffset); - ctx.lineTo(x - yOffsetW, y + xOffset); - break; - case "star": - xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); - ctx.moveTo(x - xOffsetW, y - yOffset); - ctx.lineTo(x + xOffsetW, y + yOffset); - ctx.moveTo(x + yOffsetW, y - xOffset); - ctx.lineTo(x - yOffsetW, y + xOffset); - rad += QUARTER_PI; - xOffsetW = Math.cos(rad) * (w ? w / 2 : radius); - xOffset = Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - yOffsetW = Math.sin(rad) * (w ? w / 2 : radius); - ctx.moveTo(x - xOffsetW, y - yOffset); - ctx.lineTo(x + xOffsetW, y + yOffset); - ctx.moveTo(x + yOffsetW, y - xOffset); - ctx.lineTo(x - yOffsetW, y + xOffset); - break; - case "line": - xOffset = w ? w / 2 : Math.cos(rad) * radius; - yOffset = Math.sin(rad) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - break; - case "dash": - ctx.moveTo(x, y); - ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius); - break; - case false: - ctx.closePath(); - break; - } - ctx.fill(); - if (options.borderWidth > 0) { - ctx.stroke(); - } -} -function _isPointInArea(point, area, margin) { - margin = margin || 0.5; - return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin; -} -function clipArea(ctx, area) { - ctx.save(); - ctx.beginPath(); - ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); - ctx.clip(); -} -function unclipArea(ctx) { - ctx.restore(); -} -function _steppedLineTo(ctx, previous, target, flip, mode) { - if (!previous) { - return ctx.lineTo(target.x, target.y); - } - if (mode === "middle") { - const midpoint = (previous.x + target.x) / 2; - ctx.lineTo(midpoint, previous.y); - ctx.lineTo(midpoint, target.y); - } else if (mode === "after" !== !!flip) { - ctx.lineTo(previous.x, target.y); - } else { - ctx.lineTo(target.x, previous.y); - } - ctx.lineTo(target.x, target.y); -} -function _bezierCurveTo(ctx, previous, target, flip) { - if (!previous) { - return ctx.lineTo(target.x, target.y); - } - ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y); -} -function setRenderOpts(ctx, opts) { - if (opts.translation) { - ctx.translate(opts.translation[0], opts.translation[1]); - } - if (!isNullOrUndef(opts.rotation)) { - ctx.rotate(opts.rotation); - } - if (opts.color) { - ctx.fillStyle = opts.color; - } - if (opts.textAlign) { - ctx.textAlign = opts.textAlign; - } - if (opts.textBaseline) { - ctx.textBaseline = opts.textBaseline; - } -} -function decorateText(ctx, x, y, line, opts) { - if (opts.strikethrough || opts.underline) { - const metrics = ctx.measureText(line); - const left = x - metrics.actualBoundingBoxLeft; - const right = x + metrics.actualBoundingBoxRight; - const top = y - metrics.actualBoundingBoxAscent; - const bottom = y + metrics.actualBoundingBoxDescent; - const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom; - ctx.strokeStyle = ctx.fillStyle; - ctx.beginPath(); - ctx.lineWidth = opts.decorationWidth || 2; - ctx.moveTo(left, yDecoration); - ctx.lineTo(right, yDecoration); - ctx.stroke(); - } -} -function drawBackdrop(ctx, opts) { - const oldColor = ctx.fillStyle; - ctx.fillStyle = opts.color; - ctx.fillRect(opts.left, opts.top, opts.width, opts.height); - ctx.fillStyle = oldColor; -} -function renderText(ctx, text, x, y, font, opts = {}) { - const lines = isArray(text) ? text : [ - text - ]; - const stroke = opts.strokeWidth > 0 && opts.strokeColor !== ""; - let i, line; - ctx.save(); - ctx.font = font.string; - setRenderOpts(ctx, opts); - for (i = 0; i < lines.length; ++i) { - line = lines[i]; - if (opts.backdrop) { - drawBackdrop(ctx, opts.backdrop); - } - if (stroke) { - if (opts.strokeColor) { - ctx.strokeStyle = opts.strokeColor; - } - if (!isNullOrUndef(opts.strokeWidth)) { - ctx.lineWidth = opts.strokeWidth; - } - ctx.strokeText(line, x, y, opts.maxWidth); - } - ctx.fillText(line, x, y, opts.maxWidth); - decorateText(ctx, x, y, line, opts); - y += Number(font.lineHeight); - } - ctx.restore(); -} -function addRoundedRectPath(ctx, rect) { - const { x, y, w, h, radius } = rect; - ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true); - ctx.lineTo(x, y + h - radius.bottomLeft); - ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); - ctx.lineTo(x + w - radius.bottomRight, y + h); - ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); - ctx.lineTo(x + w, y + radius.topRight); - ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); - ctx.lineTo(x + radius.topLeft, y); -} -var LINE_HEIGHT = /^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/; -var FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/; -function toLineHeight(value, size) { - const matches = ("" + value).match(LINE_HEIGHT); - if (!matches || matches[1] === "normal") { - return size * 1.2; - } - value = +matches[2]; - switch (matches[3]) { - case "px": - return value; - case "%": - value /= 100; - break; - } - return size * value; -} -var numberOrZero = (v) => +v || 0; -function _readValueToProps(value, props) { - const ret = {}; - const objProps = isObject(props); - const keys = objProps ? Object.keys(props) : props; - const read = isObject(value) ? objProps ? (prop) => valueOrDefault(value[prop], value[props[prop]]) : (prop) => value[prop] : () => value; - for (const prop of keys) { - ret[prop] = numberOrZero(read(prop)); - } - return ret; -} -function toTRBL(value) { - return _readValueToProps(value, { - top: "y", - right: "x", - bottom: "y", - left: "x" - }); -} -function toTRBLCorners(value) { - return _readValueToProps(value, [ - "topLeft", - "topRight", - "bottomLeft", - "bottomRight" - ]); -} -function toPadding(value) { - const obj = toTRBL(value); - obj.width = obj.left + obj.right; - obj.height = obj.top + obj.bottom; - return obj; -} -function toFont(options, fallback) { - options = options || {}; - fallback = fallback || defaults.font; - let size = valueOrDefault(options.size, fallback.size); - if (typeof size === "string") { - size = parseInt(size, 10); - } - let style = valueOrDefault(options.style, fallback.style); - if (style && !("" + style).match(FONT_STYLE)) { - console.warn('Invalid font style specified: "' + style + '"'); - style = void 0; - } - const font = { - family: valueOrDefault(options.family, fallback.family), - lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size), - size, - style, - weight: valueOrDefault(options.weight, fallback.weight), - string: "" - }; - font.string = toFontString(font); - return font; -} -function resolve(inputs, context, index2, info) { - let cacheable = true; - let i, ilen, value; - for (i = 0, ilen = inputs.length; i < ilen; ++i) { - value = inputs[i]; - if (value === void 0) { - continue; - } - if (context !== void 0 && typeof value === "function") { - value = value(context); - cacheable = false; - } - if (index2 !== void 0 && isArray(value)) { - value = value[index2 % value.length]; - cacheable = false; - } - if (value !== void 0) { - if (info && !cacheable) { - info.cacheable = false; - } - return value; - } - } -} -function _addGrace(minmax, grace, beginAtZero) { - const { min, max } = minmax; - const change = toDimension(grace, (max - min) / 2); - const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add; - return { - min: keepZero(min, -Math.abs(change)), - max: keepZero(max, change) - }; -} -function createContext(parentContext, context) { - return Object.assign(Object.create(parentContext), context); -} -function _createResolver(scopes, prefixes = [ - "" -], rootScopes, fallback, getTarget = () => scopes[0]) { - const finalRootScopes = rootScopes || scopes; - if (typeof fallback === "undefined") { - fallback = _resolve("_fallback", scopes); - } - const cache = { - [Symbol.toStringTag]: "Object", - _cacheable: true, - _scopes: scopes, - _rootScopes: finalRootScopes, - _fallback: fallback, - _getTarget: getTarget, - override: (scope) => _createResolver([ - scope, - ...scopes - ], prefixes, finalRootScopes, fallback) - }; - return new Proxy(cache, { - /** - * A trap for the delete operator. - */ - deleteProperty(target, prop) { - delete target[prop]; - delete target._keys; - delete scopes[0][prop]; - return true; - }, - /** - * A trap for getting property values. - */ - get(target, prop) { - return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target)); - }, - /** - * A trap for Object.getOwnPropertyDescriptor. - * Also used by Object.hasOwnProperty. - */ - getOwnPropertyDescriptor(target, prop) { - return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop); - }, - /** - * A trap for Object.getPrototypeOf. - */ - getPrototypeOf() { - return Reflect.getPrototypeOf(scopes[0]); - }, - /** - * A trap for the in operator. - */ - has(target, prop) { - return getKeysFromAllScopes(target).includes(prop); - }, - /** - * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. - */ - ownKeys(target) { - return getKeysFromAllScopes(target); - }, - /** - * A trap for setting property values. - */ - set(target, prop, value) { - const storage = target._storage || (target._storage = getTarget()); - target[prop] = storage[prop] = value; - delete target._keys; - return true; - } - }); -} -function _attachContext(proxy, context, subProxy, descriptorDefaults) { - const cache = { - _cacheable: false, - _proxy: proxy, - _context: context, - _subProxy: subProxy, - _stack: /* @__PURE__ */ new Set(), - _descriptors: _descriptors(proxy, descriptorDefaults), - setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults), - override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults) - }; - return new Proxy(cache, { - /** - * A trap for the delete operator. - */ - deleteProperty(target, prop) { - delete target[prop]; - delete proxy[prop]; - return true; - }, - /** - * A trap for getting property values. - */ - get(target, prop, receiver) { - return _cached(target, prop, () => _resolveWithContext(target, prop, receiver)); - }, - /** - * A trap for Object.getOwnPropertyDescriptor. - * Also used by Object.hasOwnProperty. - */ - getOwnPropertyDescriptor(target, prop) { - return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? { - enumerable: true, - configurable: true - } : void 0 : Reflect.getOwnPropertyDescriptor(proxy, prop); - }, - /** - * A trap for Object.getPrototypeOf. - */ - getPrototypeOf() { - return Reflect.getPrototypeOf(proxy); - }, - /** - * A trap for the in operator. - */ - has(target, prop) { - return Reflect.has(proxy, prop); - }, - /** - * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols. - */ - ownKeys() { - return Reflect.ownKeys(proxy); - }, - /** - * A trap for setting property values. - */ - set(target, prop, value) { - proxy[prop] = value; - delete target[prop]; - return true; - } - }); -} -function _descriptors(proxy, defaults2 = { - scriptable: true, - indexable: true -}) { - const { _scriptable = defaults2.scriptable, _indexable = defaults2.indexable, _allKeys = defaults2.allKeys } = proxy; - return { - allKeys: _allKeys, - scriptable: _scriptable, - indexable: _indexable, - isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable, - isIndexable: isFunction(_indexable) ? _indexable : () => _indexable - }; -} -var readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name; -var needsSubResolver = (prop, value) => isObject(value) && prop !== "adapters" && (Object.getPrototypeOf(value) === null || value.constructor === Object); -function _cached(target, prop, resolve2) { - if (Object.prototype.hasOwnProperty.call(target, prop) || prop === "constructor") { - return target[prop]; - } - const value = resolve2(); - target[prop] = value; - return value; -} -function _resolveWithContext(target, prop, receiver) { - const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; - let value = _proxy[prop]; - if (isFunction(value) && descriptors2.isScriptable(prop)) { - value = _resolveScriptable(prop, value, target, receiver); - } - if (isArray(value) && value.length) { - value = _resolveArray(prop, value, target, descriptors2.isIndexable); - } - if (needsSubResolver(prop, value)) { - value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors2); - } - return value; -} -function _resolveScriptable(prop, getValue, target, receiver) { - const { _proxy, _context, _subProxy, _stack } = target; - if (_stack.has(prop)) { - throw new Error("Recursion detected: " + Array.from(_stack).join("->") + "->" + prop); - } - _stack.add(prop); - let value = getValue(_context, _subProxy || receiver); - _stack.delete(prop); - if (needsSubResolver(prop, value)) { - value = createSubResolver(_proxy._scopes, _proxy, prop, value); - } - return value; -} -function _resolveArray(prop, value, target, isIndexable) { - const { _proxy, _context, _subProxy, _descriptors: descriptors2 } = target; - if (typeof _context.index !== "undefined" && isIndexable(prop)) { - return value[_context.index % value.length]; - } else if (isObject(value[0])) { - const arr = value; - const scopes = _proxy._scopes.filter((s) => s !== arr); - value = []; - for (const item of arr) { - const resolver = createSubResolver(scopes, _proxy, prop, item); - value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors2)); - } - } - return value; -} -function resolveFallback(fallback, prop, value) { - return isFunction(fallback) ? fallback(prop, value) : fallback; -} -var getScope = (key, parent) => key === true ? parent : typeof key === "string" ? resolveObjectKey(parent, key) : void 0; -function addScopes(set2, parentScopes, key, parentFallback, value) { - for (const parent of parentScopes) { - const scope = getScope(key, parent); - if (scope) { - set2.add(scope); - const fallback = resolveFallback(scope._fallback, key, value); - if (typeof fallback !== "undefined" && fallback !== key && fallback !== parentFallback) { - return fallback; - } - } else if (scope === false && typeof parentFallback !== "undefined" && key !== parentFallback) { - return null; - } - } - return false; -} -function createSubResolver(parentScopes, resolver, prop, value) { - const rootScopes = resolver._rootScopes; - const fallback = resolveFallback(resolver._fallback, prop, value); - const allScopes = [ - ...parentScopes, - ...rootScopes - ]; - const set2 = /* @__PURE__ */ new Set(); - set2.add(value); - let key = addScopesFromKey(set2, allScopes, prop, fallback || prop, value); - if (key === null) { - return false; - } - if (typeof fallback !== "undefined" && fallback !== prop) { - key = addScopesFromKey(set2, allScopes, fallback, key, value); - if (key === null) { - return false; - } - } - return _createResolver(Array.from(set2), [ - "" - ], rootScopes, fallback, () => subGetTarget(resolver, prop, value)); -} -function addScopesFromKey(set2, allScopes, key, fallback, item) { - while (key) { - key = addScopes(set2, allScopes, key, fallback, item); - } - return key; -} -function subGetTarget(resolver, prop, value) { - const parent = resolver._getTarget(); - if (!(prop in parent)) { - parent[prop] = {}; - } - const target = parent[prop]; - if (isArray(target) && isObject(value)) { - return value; - } - return target || {}; -} -function _resolveWithPrefixes(prop, prefixes, scopes, proxy) { - let value; - for (const prefix of prefixes) { - value = _resolve(readKey(prefix, prop), scopes); - if (typeof value !== "undefined") { - return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value; - } - } -} -function _resolve(key, scopes) { - for (const scope of scopes) { - if (!scope) { - continue; - } - const value = scope[key]; - if (typeof value !== "undefined") { - return value; - } - } -} -function getKeysFromAllScopes(target) { - let keys = target._keys; - if (!keys) { - keys = target._keys = resolveKeysFromAllScopes(target._scopes); - } - return keys; -} -function resolveKeysFromAllScopes(scopes) { - const set2 = /* @__PURE__ */ new Set(); - for (const scope of scopes) { - for (const key of Object.keys(scope).filter((k) => !k.startsWith("_"))) { - set2.add(key); - } - } - return Array.from(set2); -} -function _parseObjectDataRadialScale(meta, data, start, count) { - const { iScale } = meta; - const { key = "r" } = this._parsing; - const parsed = new Array(count); - let i, ilen, index2, item; - for (i = 0, ilen = count; i < ilen; ++i) { - index2 = i + start; - item = data[index2]; - parsed[i] = { - r: iScale.parse(resolveObjectKey(item, key), index2) - }; - } - return parsed; -} -var EPSILON = Number.EPSILON || 1e-14; -var getPoint = (points, i) => i < points.length && !points[i].skip && points[i]; -var getValueAxis = (indexAxis) => indexAxis === "x" ? "y" : "x"; -function splineCurve(firstPoint, middlePoint, afterPoint, t) { - const previous = firstPoint.skip ? middlePoint : firstPoint; - const current = middlePoint; - const next = afterPoint.skip ? middlePoint : afterPoint; - const d01 = distanceBetweenPoints(current, previous); - const d12 = distanceBetweenPoints(next, current); - let s01 = d01 / (d01 + d12); - let s12 = d12 / (d01 + d12); - s01 = isNaN(s01) ? 0 : s01; - s12 = isNaN(s12) ? 0 : s12; - const fa = t * s01; - const fb = t * s12; - return { - previous: { - x: current.x - fa * (next.x - previous.x), - y: current.y - fa * (next.y - previous.y) - }, - next: { - x: current.x + fb * (next.x - previous.x), - y: current.y + fb * (next.y - previous.y) - } - }; -} -function monotoneAdjust(points, deltaK, mK) { - const pointsLen = points.length; - let alphaK, betaK, tauK, squaredMagnitude, pointCurrent; - let pointAfter = getPoint(points, 0); - for (let i = 0; i < pointsLen - 1; ++i) { - pointCurrent = pointAfter; - pointAfter = getPoint(points, i + 1); - if (!pointCurrent || !pointAfter) { - continue; - } - if (almostEquals(deltaK[i], 0, EPSILON)) { - mK[i] = mK[i + 1] = 0; - continue; - } - alphaK = mK[i] / deltaK[i]; - betaK = mK[i + 1] / deltaK[i]; - squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); - if (squaredMagnitude <= 9) { - continue; - } - tauK = 3 / Math.sqrt(squaredMagnitude); - mK[i] = alphaK * tauK * deltaK[i]; - mK[i + 1] = betaK * tauK * deltaK[i]; - } -} -function monotoneCompute(points, mK, indexAxis = "x") { - const valueAxis = getValueAxis(indexAxis); - const pointsLen = points.length; - let delta, pointBefore, pointCurrent; - let pointAfter = getPoint(points, 0); - for (let i = 0; i < pointsLen; ++i) { - pointBefore = pointCurrent; - pointCurrent = pointAfter; - pointAfter = getPoint(points, i + 1); - if (!pointCurrent) { - continue; - } - const iPixel = pointCurrent[indexAxis]; - const vPixel = pointCurrent[valueAxis]; - if (pointBefore) { - delta = (iPixel - pointBefore[indexAxis]) / 3; - pointCurrent[`cp1${indexAxis}`] = iPixel - delta; - pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i]; - } - if (pointAfter) { - delta = (pointAfter[indexAxis] - iPixel) / 3; - pointCurrent[`cp2${indexAxis}`] = iPixel + delta; - pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i]; - } - } -} -function splineCurveMonotone(points, indexAxis = "x") { - const valueAxis = getValueAxis(indexAxis); - const pointsLen = points.length; - const deltaK = Array(pointsLen).fill(0); - const mK = Array(pointsLen); - let i, pointBefore, pointCurrent; - let pointAfter = getPoint(points, 0); - for (i = 0; i < pointsLen; ++i) { - pointBefore = pointCurrent; - pointCurrent = pointAfter; - pointAfter = getPoint(points, i + 1); - if (!pointCurrent) { - continue; - } - if (pointAfter) { - const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis]; - deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0; - } - mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2; - } - monotoneAdjust(points, deltaK, mK); - monotoneCompute(points, mK, indexAxis); -} -function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); -} -function capBezierPoints(points, area) { - let i, ilen, point, inArea, inAreaPrev; - let inAreaNext = _isPointInArea(points[0], area); - for (i = 0, ilen = points.length; i < ilen; ++i) { - inAreaPrev = inArea; - inArea = inAreaNext; - inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area); - if (!inArea) { - continue; - } - point = points[i]; - if (inAreaPrev) { - point.cp1x = capControlPoint(point.cp1x, area.left, area.right); - point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom); - } - if (inAreaNext) { - point.cp2x = capControlPoint(point.cp2x, area.left, area.right); - point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom); - } - } -} -function _updateBezierControlPoints(points, options, area, loop, indexAxis) { - let i, ilen, point, controlPoints; - if (options.spanGaps) { - points = points.filter((pt) => !pt.skip); - } - if (options.cubicInterpolationMode === "monotone") { - splineCurveMonotone(points, indexAxis); - } else { - let prev = loop ? points[points.length - 1] : points[0]; - for (i = 0, ilen = points.length; i < ilen; ++i) { - point = points[i]; - controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension); - point.cp1x = controlPoints.previous.x; - point.cp1y = controlPoints.previous.y; - point.cp2x = controlPoints.next.x; - point.cp2y = controlPoints.next.y; - prev = point; - } - } - if (options.capBezierPoints) { - capBezierPoints(points, area); - } -} -function _isDomSupported() { - return typeof window !== "undefined" && typeof document !== "undefined"; -} -function _getParentNode(domNode) { - let parent = domNode.parentNode; - if (parent && parent.toString() === "[object ShadowRoot]") { - parent = parent.host; - } - return parent; -} -function parseMaxStyle(styleValue, node, parentProperty) { - let valueInPixels; - if (typeof styleValue === "string") { - valueInPixels = parseInt(styleValue, 10); - if (styleValue.indexOf("%") !== -1) { - valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; - } - } else { - valueInPixels = styleValue; - } - return valueInPixels; -} -var getComputedStyle = (element) => element.ownerDocument.defaultView.getComputedStyle(element, null); -function getStyle(el, property) { - return getComputedStyle(el).getPropertyValue(property); -} -var positions = [ - "top", - "right", - "bottom", - "left" -]; -function getPositionedStyle(styles, style, suffix) { - const result = {}; - suffix = suffix ? "-" + suffix : ""; - for (let i = 0; i < 4; i++) { - const pos = positions[i]; - result[pos] = parseFloat(styles[style + "-" + pos + suffix]) || 0; - } - result.width = result.left + result.right; - result.height = result.top + result.bottom; - return result; -} -var useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot); -function getCanvasPosition(e, canvas) { - const touches = e.touches; - const source = touches && touches.length ? touches[0] : e; - const { offsetX, offsetY } = source; - let box = false; - let x, y; - if (useOffsetPos(offsetX, offsetY, e.target)) { - x = offsetX; - y = offsetY; - } else { - const rect = canvas.getBoundingClientRect(); - x = source.clientX - rect.left; - y = source.clientY - rect.top; - box = true; - } - return { - x, - y, - box - }; -} -function getRelativePosition(event, chart) { - if ("native" in event) { - return event; - } - const { canvas, currentDevicePixelRatio } = chart; - const style = getComputedStyle(canvas); - const borderBox = style.boxSizing === "border-box"; - const paddings = getPositionedStyle(style, "padding"); - const borders = getPositionedStyle(style, "border", "width"); - const { x, y, box } = getCanvasPosition(event, canvas); - const xOffset = paddings.left + (box && borders.left); - const yOffset = paddings.top + (box && borders.top); - let { width, height } = chart; - if (borderBox) { - width -= paddings.width + borders.width; - height -= paddings.height + borders.height; - } - return { - x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio), - y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio) - }; -} -function getContainerSize(canvas, width, height) { - let maxWidth, maxHeight; - if (width === void 0 || height === void 0) { - const container = canvas && _getParentNode(canvas); - if (!container) { - width = canvas.clientWidth; - height = canvas.clientHeight; - } else { - const rect = container.getBoundingClientRect(); - const containerStyle = getComputedStyle(container); - const containerBorder = getPositionedStyle(containerStyle, "border", "width"); - const containerPadding = getPositionedStyle(containerStyle, "padding"); - width = rect.width - containerPadding.width - containerBorder.width; - height = rect.height - containerPadding.height - containerBorder.height; - maxWidth = parseMaxStyle(containerStyle.maxWidth, container, "clientWidth"); - maxHeight = parseMaxStyle(containerStyle.maxHeight, container, "clientHeight"); - } - } - return { - width, - height, - maxWidth: maxWidth || INFINITY, - maxHeight: maxHeight || INFINITY - }; -} -var round1 = (v) => Math.round(v * 10) / 10; -function getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) { - const style = getComputedStyle(canvas); - const margins = getPositionedStyle(style, "margin"); - const maxWidth = parseMaxStyle(style.maxWidth, canvas, "clientWidth") || INFINITY; - const maxHeight = parseMaxStyle(style.maxHeight, canvas, "clientHeight") || INFINITY; - const containerSize = getContainerSize(canvas, bbWidth, bbHeight); - let { width, height } = containerSize; - if (style.boxSizing === "content-box") { - const borders = getPositionedStyle(style, "border", "width"); - const paddings = getPositionedStyle(style, "padding"); - width -= paddings.width + borders.width; - height -= paddings.height + borders.height; - } - width = Math.max(0, width - margins.width); - height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height); - width = round1(Math.min(width, maxWidth, containerSize.maxWidth)); - height = round1(Math.min(height, maxHeight, containerSize.maxHeight)); - if (width && !height) { - height = round1(width / 2); - } - const maintainHeight = bbWidth !== void 0 || bbHeight !== void 0; - if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) { - height = containerSize.height; - width = round1(Math.floor(height * aspectRatio)); - } - return { - width, - height - }; -} -function retinaScale(chart, forceRatio, forceStyle) { - const pixelRatio = forceRatio || 1; - const deviceHeight = Math.floor(chart.height * pixelRatio); - const deviceWidth = Math.floor(chart.width * pixelRatio); - chart.height = Math.floor(chart.height); - chart.width = Math.floor(chart.width); - const canvas = chart.canvas; - if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) { - canvas.style.height = `${chart.height}px`; - canvas.style.width = `${chart.width}px`; - } - if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) { - chart.currentDevicePixelRatio = pixelRatio; - canvas.height = deviceHeight; - canvas.width = deviceWidth; - chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0); - return true; - } - return false; -} -var supportsEventListenerOptions = function() { - let passiveSupported = false; - try { - const options = { - get passive() { - passiveSupported = true; - return false; - } - }; - if (_isDomSupported()) { - window.addEventListener("test", null, options); - window.removeEventListener("test", null, options); - } - } catch (e) { - } - return passiveSupported; -}(); -function readUsedSize(element, property) { - const value = getStyle(element, property); - const matches = value && value.match(/^(\d+)(\.\d+)?px$/); - return matches ? +matches[1] : void 0; -} -function _pointInLine(p1, p2, t, mode) { - return { - x: p1.x + t * (p2.x - p1.x), - y: p1.y + t * (p2.y - p1.y) - }; -} -function _steppedInterpolation(p1, p2, t, mode) { - return { - x: p1.x + t * (p2.x - p1.x), - y: mode === "middle" ? t < 0.5 ? p1.y : p2.y : mode === "after" ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y - }; -} -function _bezierInterpolation(p1, p2, t, mode) { - const cp1 = { - x: p1.cp2x, - y: p1.cp2y - }; - const cp2 = { - x: p2.cp1x, - y: p2.cp1y - }; - const a = _pointInLine(p1, cp1, t); - const b = _pointInLine(cp1, cp2, t); - const c = _pointInLine(cp2, p2, t); - const d = _pointInLine(a, b, t); - const e = _pointInLine(b, c, t); - return _pointInLine(d, e, t); -} -var getRightToLeftAdapter = function(rectX, width) { - return { - x(x) { - return rectX + rectX + width - x; - }, - setWidth(w) { - width = w; - }, - textAlign(align) { - if (align === "center") { - return align; - } - return align === "right" ? "left" : "right"; - }, - xPlus(x, value) { - return x - value; - }, - leftForLtr(x, itemWidth) { - return x - itemWidth; - } - }; -}; -var getLeftToRightAdapter = function() { - return { - x(x) { - return x; - }, - setWidth(w) { - }, - textAlign(align) { - return align; - }, - xPlus(x, value) { - return x + value; - }, - leftForLtr(x, _itemWidth) { - return x; - } - }; -}; -function getRtlAdapter(rtl, rectX, width) { - return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter(); -} -function overrideTextDirection(ctx, direction) { - let style, original; - if (direction === "ltr" || direction === "rtl") { - style = ctx.canvas.style; - original = [ - style.getPropertyValue("direction"), - style.getPropertyPriority("direction") - ]; - style.setProperty("direction", direction, "important"); - ctx.prevTextDirection = original; - } -} -function restoreTextDirection(ctx, original) { - if (original !== void 0) { - delete ctx.prevTextDirection; - ctx.canvas.style.setProperty("direction", original[0], original[1]); - } -} -function propertyFn(property) { - if (property === "angle") { - return { - between: _angleBetween, - compare: _angleDiff, - normalize: _normalizeAngle - }; - } - return { - between: _isBetween, - compare: (a, b) => a - b, - normalize: (x) => x - }; -} -function normalizeSegment({ start, end, count, loop, style }) { - return { - start: start % count, - end: end % count, - loop: loop && (end - start + 1) % count === 0, - style - }; -} -function getSegment(segment, points, bounds) { - const { property, start: startBound, end: endBound } = bounds; - const { between, normalize } = propertyFn(property); - const count = points.length; - let { start, end, loop } = segment; - let i, ilen; - if (loop) { - start += count; - end += count; - for (i = 0, ilen = count; i < ilen; ++i) { - if (!between(normalize(points[start % count][property]), startBound, endBound)) { - break; - } - start--; - end--; - } - start %= count; - end %= count; - } - if (end < start) { - end += count; - } - return { - start, - end, - loop, - style: segment.style - }; -} -function _boundSegment(segment, points, bounds) { - if (!bounds) { - return [ - segment - ]; - } - const { property, start: startBound, end: endBound } = bounds; - const count = points.length; - const { compare, between, normalize } = propertyFn(property); - const { start, end, loop, style } = getSegment(segment, points, bounds); - const result = []; - let inside = false; - let subStart = null; - let value, point, prevValue; - const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0; - const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value); - const shouldStart = () => inside || startIsBefore(); - const shouldStop = () => !inside || endIsBefore(); - for (let i = start, prev = start; i <= end; ++i) { - point = points[i % count]; - if (point.skip) { - continue; - } - value = normalize(point[property]); - if (value === prevValue) { - continue; - } - inside = between(value, startBound, endBound); - if (subStart === null && shouldStart()) { - subStart = compare(value, startBound) === 0 ? i : prev; - } - if (subStart !== null && shouldStop()) { - result.push(normalizeSegment({ - start: subStart, - end: i, - loop, - count, - style - })); - subStart = null; - } - prev = i; - prevValue = value; - } - if (subStart !== null) { - result.push(normalizeSegment({ - start: subStart, - end, - loop, - count, - style - })); - } - return result; -} -function _boundSegments(line, bounds) { - const result = []; - const segments = line.segments; - for (let i = 0; i < segments.length; i++) { - const sub = _boundSegment(segments[i], line.points, bounds); - if (sub.length) { - result.push(...sub); - } - } - return result; -} -function findStartAndEnd(points, count, loop, spanGaps) { - let start = 0; - let end = count - 1; - if (loop && !spanGaps) { - while (start < count && !points[start].skip) { - start++; - } - } - while (start < count && points[start].skip) { - start++; - } - start %= count; - if (loop) { - end += start; - } - while (end > start && points[end % count].skip) { - end--; - } - end %= count; - return { - start, - end - }; -} -function solidSegments(points, start, max, loop) { - const count = points.length; - const result = []; - let last = start; - let prev = points[start]; - let end; - for (end = start + 1; end <= max; ++end) { - const cur = points[end % count]; - if (cur.skip || cur.stop) { - if (!prev.skip) { - loop = false; - result.push({ - start: start % count, - end: (end - 1) % count, - loop - }); - start = last = cur.stop ? end : null; - } - } else { - last = end; - if (prev.skip) { - start = end; - } - } - prev = cur; - } - if (last !== null) { - result.push({ - start: start % count, - end: last % count, - loop - }); - } - return result; -} -function _computeSegments(line, segmentOptions) { - const points = line.points; - const spanGaps = line.options.spanGaps; - const count = points.length; - if (!count) { - return []; - } - const loop = !!line._loop; - const { start, end } = findStartAndEnd(points, count, loop, spanGaps); - if (spanGaps === true) { - return splitByStyles(line, [ - { - start, - end, - loop - } - ], points, segmentOptions); - } - const max = end < start ? end + count : end; - const completeLoop = !!line._fullLoop && start === 0 && end === count - 1; - return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions); -} -function splitByStyles(line, segments, points, segmentOptions) { - if (!segmentOptions || !segmentOptions.setContext || !points) { - return segments; - } - return doSplitByStyles(line, segments, points, segmentOptions); -} -function doSplitByStyles(line, segments, points, segmentOptions) { - const chartContext = line._chart.getContext(); - const baseStyle = readStyle(line.options); - const { _datasetIndex: datasetIndex, options: { spanGaps } } = line; - const count = points.length; - const result = []; - let prevStyle = baseStyle; - let start = segments[0].start; - let i = start; - function addStyle(s, e, l, st) { - const dir = spanGaps ? -1 : 1; - if (s === e) { - return; - } - s += count; - while (points[s % count].skip) { - s -= dir; - } - while (points[e % count].skip) { - e += dir; - } - if (s % count !== e % count) { - result.push({ - start: s % count, - end: e % count, - loop: l, - style: st - }); - prevStyle = st; - start = e % count; - } - } - for (const segment of segments) { - start = spanGaps ? start : segment.start; - let prev = points[start % count]; - let style; - for (i = start + 1; i <= segment.end; i++) { - const pt = points[i % count]; - style = readStyle(segmentOptions.setContext(createContext(chartContext, { - type: "segment", - p0: prev, - p1: pt, - p0DataIndex: (i - 1) % count, - p1DataIndex: i % count, - datasetIndex - }))); - if (styleChanged(style, prevStyle)) { - addStyle(start, i - 1, segment.loop, prevStyle); - } - prev = pt; - prevStyle = style; - } - if (start < i - 1) { - addStyle(start, i - 1, segment.loop, prevStyle); - } - } - return result; -} -function readStyle(options) { - return { - backgroundColor: options.backgroundColor, - borderCapStyle: options.borderCapStyle, - borderDash: options.borderDash, - borderDashOffset: options.borderDashOffset, - borderJoinStyle: options.borderJoinStyle, - borderWidth: options.borderWidth, - borderColor: options.borderColor - }; -} -function styleChanged(style, prevStyle) { - if (!prevStyle) { - return false; - } - const cache = []; - const replacer = function(key, value) { - if (!isPatternOrGradient(value)) { - return value; - } - if (!cache.includes(value)) { - cache.push(value); - } - return cache.indexOf(value); - }; - return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer); -} -function getSizeForArea(scale, chartArea, field) { - return scale.options.clip ? scale[field] : chartArea[field]; -} -function getDatasetArea(meta, chartArea) { - const { xScale, yScale } = meta; - if (xScale && yScale) { - return { - left: getSizeForArea(xScale, chartArea, "left"), - right: getSizeForArea(xScale, chartArea, "right"), - top: getSizeForArea(yScale, chartArea, "top"), - bottom: getSizeForArea(yScale, chartArea, "bottom") - }; - } - return chartArea; -} -function getDatasetClipArea(chart, meta) { - const clip = meta._clip; - if (clip.disabled) { - return false; - } - const area = getDatasetArea(meta, chart.chartArea); - return { - left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left), - right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right), - top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top), - bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom) - }; -} - -// node_modules/chart.js/dist/chart.js -var Animator = class { - constructor() { - this._request = null; - this._charts = /* @__PURE__ */ new Map(); - this._running = false; - this._lastDate = void 0; - } - _notify(chart, anims, date, type) { - const callbacks = anims.listeners[type]; - const numSteps = anims.duration; - callbacks.forEach((fn) => fn({ - chart, - initial: anims.initial, - numSteps, - currentStep: Math.min(date - anims.start, numSteps) - })); - } - _refresh() { - if (this._request) { - return; - } - this._running = true; - this._request = requestAnimFrame.call(window, () => { - this._update(); - this._request = null; - if (this._running) { - this._refresh(); - } - }); - } - _update(date = Date.now()) { - let remaining = 0; - this._charts.forEach((anims, chart) => { - if (!anims.running || !anims.items.length) { - return; - } - const items = anims.items; - let i = items.length - 1; - let draw2 = false; - let item; - for (; i >= 0; --i) { - item = items[i]; - if (item._active) { - if (item._total > anims.duration) { - anims.duration = item._total; - } - item.tick(date); - draw2 = true; - } else { - items[i] = items[items.length - 1]; - items.pop(); - } - } - if (draw2) { - chart.draw(); - this._notify(chart, anims, date, "progress"); - } - if (!items.length) { - anims.running = false; - this._notify(chart, anims, date, "complete"); - anims.initial = false; - } - remaining += items.length; - }); - this._lastDate = date; - if (remaining === 0) { - this._running = false; - } - } - _getAnims(chart) { - const charts = this._charts; - let anims = charts.get(chart); - if (!anims) { - anims = { - running: false, - initial: true, - items: [], - listeners: { - complete: [], - progress: [] - } - }; - charts.set(chart, anims); - } - return anims; - } - listen(chart, event, cb) { - this._getAnims(chart).listeners[event].push(cb); - } - add(chart, items) { - if (!items || !items.length) { - return; - } - this._getAnims(chart).items.push(...items); - } - has(chart) { - return this._getAnims(chart).items.length > 0; - } - start(chart) { - const anims = this._charts.get(chart); - if (!anims) { - return; - } - anims.running = true; - anims.start = Date.now(); - anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0); - this._refresh(); - } - running(chart) { - if (!this._running) { - return false; - } - const anims = this._charts.get(chart); - if (!anims || !anims.running || !anims.items.length) { - return false; - } - return true; - } - stop(chart) { - const anims = this._charts.get(chart); - if (!anims || !anims.items.length) { - return; - } - const items = anims.items; - let i = items.length - 1; - for (; i >= 0; --i) { - items[i].cancel(); - } - anims.items = []; - this._notify(chart, anims, Date.now(), "complete"); - } - remove(chart) { - return this._charts.delete(chart); - } -}; -var animator = new Animator(); -var transparent = "transparent"; -var interpolators = { - boolean(from2, to2, factor) { - return factor > 0.5 ? to2 : from2; - }, - color(from2, to2, factor) { - const c0 = color(from2 || transparent); - const c1 = c0.valid && color(to2 || transparent); - return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to2; - }, - number(from2, to2, factor) { - return from2 + (to2 - from2) * factor; - } -}; -var Animation = class { - constructor(cfg, target, prop, to2) { - const currentValue = target[prop]; - to2 = resolve([ - cfg.to, - to2, - currentValue, - cfg.from - ]); - const from2 = resolve([ - cfg.from, - currentValue, - to2 - ]); - this._active = true; - this._fn = cfg.fn || interpolators[cfg.type || typeof from2]; - this._easing = effects[cfg.easing] || effects.linear; - this._start = Math.floor(Date.now() + (cfg.delay || 0)); - this._duration = this._total = Math.floor(cfg.duration); - this._loop = !!cfg.loop; - this._target = target; - this._prop = prop; - this._from = from2; - this._to = to2; - this._promises = void 0; - } - active() { - return this._active; - } - update(cfg, to2, date) { - if (this._active) { - this._notify(false); - const currentValue = this._target[this._prop]; - const elapsed = date - this._start; - const remain = this._duration - elapsed; - this._start = date; - this._duration = Math.floor(Math.max(remain, cfg.duration)); - this._total += elapsed; - this._loop = !!cfg.loop; - this._to = resolve([ - cfg.to, - to2, - currentValue, - cfg.from - ]); - this._from = resolve([ - cfg.from, - currentValue, - to2 - ]); - } - } - cancel() { - if (this._active) { - this.tick(Date.now()); - this._active = false; - this._notify(false); - } - } - tick(date) { - const elapsed = date - this._start; - const duration = this._duration; - const prop = this._prop; - const from2 = this._from; - const loop = this._loop; - const to2 = this._to; - let factor; - this._active = from2 !== to2 && (loop || elapsed < duration); - if (!this._active) { - this._target[prop] = to2; - this._notify(true); - return; - } - if (elapsed < 0) { - this._target[prop] = from2; - return; - } - factor = elapsed / duration % 2; - factor = loop && factor > 1 ? 2 - factor : factor; - factor = this._easing(Math.min(1, Math.max(0, factor))); - this._target[prop] = this._fn(from2, to2, factor); - } - wait() { - const promises = this._promises || (this._promises = []); - return new Promise((res, rej) => { - promises.push({ - res, - rej - }); - }); - } - _notify(resolved) { - const method = resolved ? "res" : "rej"; - const promises = this._promises || []; - for (let i = 0; i < promises.length; i++) { - promises[i][method](); - } - } -}; -var Animations = class { - constructor(chart, config) { - this._chart = chart; - this._properties = /* @__PURE__ */ new Map(); - this.configure(config); - } - configure(config) { - if (!isObject(config)) { - return; - } - const animationOptions = Object.keys(defaults.animation); - const animatedProps = this._properties; - Object.getOwnPropertyNames(config).forEach((key) => { - const cfg = config[key]; - if (!isObject(cfg)) { - return; - } - const resolved = {}; - for (const option of animationOptions) { - resolved[option] = cfg[option]; - } - (isArray(cfg.properties) && cfg.properties || [ - key - ]).forEach((prop) => { - if (prop === key || !animatedProps.has(prop)) { - animatedProps.set(prop, resolved); - } - }); - }); - } - _animateOptions(target, values) { - const newOptions = values.options; - const options = resolveTargetOptions(target, newOptions); - if (!options) { - return []; - } - const animations = this._createAnimations(options, newOptions); - if (newOptions.$shared) { - awaitAll(target.options.$animations, newOptions).then(() => { - target.options = newOptions; - }, () => { - }); - } - return animations; - } - _createAnimations(target, values) { - const animatedProps = this._properties; - const animations = []; - const running = target.$animations || (target.$animations = {}); - const props = Object.keys(values); - const date = Date.now(); - let i; - for (i = props.length - 1; i >= 0; --i) { - const prop = props[i]; - if (prop.charAt(0) === "$") { - continue; - } - if (prop === "options") { - animations.push(...this._animateOptions(target, values)); - continue; - } - const value = values[prop]; - let animation = running[prop]; - const cfg = animatedProps.get(prop); - if (animation) { - if (cfg && animation.active()) { - animation.update(cfg, value, date); - continue; - } else { - animation.cancel(); - } - } - if (!cfg || !cfg.duration) { - target[prop] = value; - continue; - } - running[prop] = animation = new Animation(cfg, target, prop, value); - animations.push(animation); - } - return animations; - } - update(target, values) { - if (this._properties.size === 0) { - Object.assign(target, values); - return; - } - const animations = this._createAnimations(target, values); - if (animations.length) { - animator.add(this._chart, animations); - return true; - } - } -}; -function awaitAll(animations, properties) { - const running = []; - const keys = Object.keys(properties); - for (let i = 0; i < keys.length; i++) { - const anim = animations[keys[i]]; - if (anim && anim.active()) { - running.push(anim.wait()); - } - } - return Promise.all(running); -} -function resolveTargetOptions(target, newOptions) { - if (!newOptions) { - return; - } - let options = target.options; - if (!options) { - target.options = newOptions; - return; - } - if (options.$shared) { - target.options = options = Object.assign({}, options, { - $shared: false, - $animations: {} - }); - } - return options; -} -function scaleClip(scale, allowedOverflow) { - const opts = scale && scale.options || {}; - const reverse = opts.reverse; - const min = opts.min === void 0 ? allowedOverflow : 0; - const max = opts.max === void 0 ? allowedOverflow : 0; - return { - start: reverse ? max : min, - end: reverse ? min : max - }; -} -function defaultClip(xScale, yScale, allowedOverflow) { - if (allowedOverflow === false) { - return false; - } - const x = scaleClip(xScale, allowedOverflow); - const y = scaleClip(yScale, allowedOverflow); - return { - top: y.end, - right: x.end, - bottom: y.start, - left: x.start - }; -} -function toClip(value) { - let t, r, b, l; - if (isObject(value)) { - t = value.top; - r = value.right; - b = value.bottom; - l = value.left; - } else { - t = r = b = l = value; - } - return { - top: t, - right: r, - bottom: b, - left: l, - disabled: value === false - }; -} -function getSortedDatasetIndices(chart, filterVisible) { - const keys = []; - const metasets = chart._getSortedDatasetMetas(filterVisible); - let i, ilen; - for (i = 0, ilen = metasets.length; i < ilen; ++i) { - keys.push(metasets[i].index); - } - return keys; -} -function applyStack(stack, value, dsIndex, options = {}) { - const keys = stack.keys; - const singleMode = options.mode === "single"; - let i, ilen, datasetIndex, otherValue; - if (value === null) { - return; - } - let found = false; - for (i = 0, ilen = keys.length; i < ilen; ++i) { - datasetIndex = +keys[i]; - if (datasetIndex === dsIndex) { - found = true; - if (options.all) { - continue; - } - break; - } - otherValue = stack.values[datasetIndex]; - if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) { - value += otherValue; - } - } - if (!found && !options.all) { - return 0; - } - return value; -} -function convertObjectDataToArray(data, meta) { - const { iScale, vScale } = meta; - const iAxisKey = iScale.axis === "x" ? "x" : "y"; - const vAxisKey = vScale.axis === "x" ? "x" : "y"; - const keys = Object.keys(data); - const adata = new Array(keys.length); - let i, ilen, key; - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - adata[i] = { - [iAxisKey]: key, - [vAxisKey]: data[key] - }; - } - return adata; -} -function isStacked(scale, meta) { - const stacked = scale && scale.options.stacked; - return stacked || stacked === void 0 && meta.stack !== void 0; -} -function getStackKey(indexScale, valueScale, meta) { - return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`; -} -function getUserBounds(scale) { - const { min, max, minDefined, maxDefined } = scale.getUserBounds(); - return { - min: minDefined ? min : Number.NEGATIVE_INFINITY, - max: maxDefined ? max : Number.POSITIVE_INFINITY - }; -} -function getOrCreateStack(stacks, stackKey, indexValue) { - const subStack = stacks[stackKey] || (stacks[stackKey] = {}); - return subStack[indexValue] || (subStack[indexValue] = {}); -} -function getLastIndexInStack(stack, vScale, positive, type) { - for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) { - const value = stack[meta.index]; - if (positive && value > 0 || !positive && value < 0) { - return meta.index; - } - } - return null; -} -function updateStacks(controller, parsed) { - const { chart, _cachedMeta: meta } = controller; - const stacks = chart._stacks || (chart._stacks = {}); - const { iScale, vScale, index: datasetIndex } = meta; - const iAxis = iScale.axis; - const vAxis = vScale.axis; - const key = getStackKey(iScale, vScale, meta); - const ilen = parsed.length; - let stack; - for (let i = 0; i < ilen; ++i) { - const item = parsed[i]; - const { [iAxis]: index2, [vAxis]: value } = item; - const itemStacks = item._stacks || (item._stacks = {}); - stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index2); - stack[datasetIndex] = value; - stack._top = getLastIndexInStack(stack, vScale, true, meta.type); - stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type); - const visualValues = stack._visualValues || (stack._visualValues = {}); - visualValues[datasetIndex] = value; - } -} -function getFirstScaleId(chart, axis) { - const scales2 = chart.scales; - return Object.keys(scales2).filter((key) => scales2[key].axis === axis).shift(); -} -function createDatasetContext(parent, index2) { - return createContext(parent, { - active: false, - dataset: void 0, - datasetIndex: index2, - index: index2, - mode: "default", - type: "dataset" - }); -} -function createDataContext(parent, index2, element) { - return createContext(parent, { - active: false, - dataIndex: index2, - parsed: void 0, - raw: void 0, - element, - index: index2, - mode: "default", - type: "data" - }); -} -function clearStacks(meta, items) { - const datasetIndex = meta.controller.index; - const axis = meta.vScale && meta.vScale.axis; - if (!axis) { - return; - } - items = items || meta._parsed; - for (const parsed of items) { - const stacks = parsed._stacks; - if (!stacks || stacks[axis] === void 0 || stacks[axis][datasetIndex] === void 0) { - return; - } - delete stacks[axis][datasetIndex]; - if (stacks[axis]._visualValues !== void 0 && stacks[axis]._visualValues[datasetIndex] !== void 0) { - delete stacks[axis]._visualValues[datasetIndex]; - } - } -} -var isDirectUpdateMode = (mode) => mode === "reset" || mode === "none"; -var cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached); -var createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && { - keys: getSortedDatasetIndices(chart, true), - values: null -}; -var DatasetController = class { - constructor(chart, datasetIndex) { - this.chart = chart; - this._ctx = chart.ctx; - this.index = datasetIndex; - this._cachedDataOpts = {}; - this._cachedMeta = this.getMeta(); - this._type = this._cachedMeta.type; - this.options = void 0; - this._parsing = false; - this._data = void 0; - this._objectData = void 0; - this._sharedOptions = void 0; - this._drawStart = void 0; - this._drawCount = void 0; - this.enableOptionSharing = false; - this.supportsDecimation = false; - this.$context = void 0; - this._syncList = []; - this.datasetElementType = new.target.datasetElementType; - this.dataElementType = new.target.dataElementType; - this.initialize(); - } - initialize() { - const meta = this._cachedMeta; - this.configure(); - this.linkScales(); - meta._stacked = isStacked(meta.vScale, meta); - this.addElements(); - if (this.options.fill && !this.chart.isPluginEnabled("filler")) { - console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options"); - } - } - updateIndex(datasetIndex) { - if (this.index !== datasetIndex) { - clearStacks(this._cachedMeta); - } - this.index = datasetIndex; - } - linkScales() { - const chart = this.chart; - const meta = this._cachedMeta; - const dataset = this.getDataset(); - const chooseId = (axis, x, y, r) => axis === "x" ? x : axis === "r" ? r : y; - const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, "x")); - const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, "y")); - const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, "r")); - const indexAxis = meta.indexAxis; - const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid); - const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid); - meta.xScale = this.getScaleForId(xid); - meta.yScale = this.getScaleForId(yid); - meta.rScale = this.getScaleForId(rid); - meta.iScale = this.getScaleForId(iid); - meta.vScale = this.getScaleForId(vid); - } - getDataset() { - return this.chart.data.datasets[this.index]; - } - getMeta() { - return this.chart.getDatasetMeta(this.index); - } - getScaleForId(scaleID) { - return this.chart.scales[scaleID]; - } - _getOtherScale(scale) { - const meta = this._cachedMeta; - return scale === meta.iScale ? meta.vScale : meta.iScale; - } - reset() { - this._update("reset"); - } - _destroy() { - const meta = this._cachedMeta; - if (this._data) { - unlistenArrayEvents(this._data, this); - } - if (meta._stacked) { - clearStacks(meta); - } - } - _dataCheck() { - const dataset = this.getDataset(); - const data = dataset.data || (dataset.data = []); - const _data = this._data; - if (isObject(data)) { - const meta = this._cachedMeta; - this._data = convertObjectDataToArray(data, meta); - } else if (_data !== data) { - if (_data) { - unlistenArrayEvents(_data, this); - const meta = this._cachedMeta; - clearStacks(meta); - meta._parsed = []; - } - if (data && Object.isExtensible(data)) { - listenArrayEvents(data, this); - } - this._syncList = []; - this._data = data; - } - } - addElements() { - const meta = this._cachedMeta; - this._dataCheck(); - if (this.datasetElementType) { - meta.dataset = new this.datasetElementType(); - } - } - buildOrUpdateElements(resetNewElements) { - const meta = this._cachedMeta; - const dataset = this.getDataset(); - let stackChanged = false; - this._dataCheck(); - const oldStacked = meta._stacked; - meta._stacked = isStacked(meta.vScale, meta); - if (meta.stack !== dataset.stack) { - stackChanged = true; - clearStacks(meta); - meta.stack = dataset.stack; - } - this._resyncElements(resetNewElements); - if (stackChanged || oldStacked !== meta._stacked) { - updateStacks(this, meta._parsed); - meta._stacked = isStacked(meta.vScale, meta); - } - } - configure() { - const config = this.chart.config; - const scopeKeys = config.datasetScopeKeys(this._type); - const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true); - this.options = config.createResolver(scopes, this.getContext()); - this._parsing = this.options.parsing; - this._cachedDataOpts = {}; - } - parse(start, count) { - const { _cachedMeta: meta, _data: data } = this; - const { iScale, _stacked } = meta; - const iAxis = iScale.axis; - let sorted = start === 0 && count === data.length ? true : meta._sorted; - let prev = start > 0 && meta._parsed[start - 1]; - let i, cur, parsed; - if (this._parsing === false) { - meta._parsed = data; - meta._sorted = true; - parsed = data; - } else { - if (isArray(data[start])) { - parsed = this.parseArrayData(meta, data, start, count); - } else if (isObject(data[start])) { - parsed = this.parseObjectData(meta, data, start, count); - } else { - parsed = this.parsePrimitiveData(meta, data, start, count); - } - const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis]; - for (i = 0; i < count; ++i) { - meta._parsed[i + start] = cur = parsed[i]; - if (sorted) { - if (isNotInOrderComparedToPrev()) { - sorted = false; - } - prev = cur; - } - } - meta._sorted = sorted; - } - if (_stacked) { - updateStacks(this, parsed); - } - } - parsePrimitiveData(meta, data, start, count) { - const { iScale, vScale } = meta; - const iAxis = iScale.axis; - const vAxis = vScale.axis; - const labels = iScale.getLabels(); - const singleScale = iScale === vScale; - const parsed = new Array(count); - let i, ilen, index2; - for (i = 0, ilen = count; i < ilen; ++i) { - index2 = i + start; - parsed[i] = { - [iAxis]: singleScale || iScale.parse(labels[index2], index2), - [vAxis]: vScale.parse(data[index2], index2) - }; - } - return parsed; - } - parseArrayData(meta, data, start, count) { - const { xScale, yScale } = meta; - const parsed = new Array(count); - let i, ilen, index2, item; - for (i = 0, ilen = count; i < ilen; ++i) { - index2 = i + start; - item = data[index2]; - parsed[i] = { - x: xScale.parse(item[0], index2), - y: yScale.parse(item[1], index2) - }; - } - return parsed; - } - parseObjectData(meta, data, start, count) { - const { xScale, yScale } = meta; - const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; - const parsed = new Array(count); - let i, ilen, index2, item; - for (i = 0, ilen = count; i < ilen; ++i) { - index2 = i + start; - item = data[index2]; - parsed[i] = { - x: xScale.parse(resolveObjectKey(item, xAxisKey), index2), - y: yScale.parse(resolveObjectKey(item, yAxisKey), index2) - }; - } - return parsed; - } - getParsed(index2) { - return this._cachedMeta._parsed[index2]; - } - getDataElement(index2) { - return this._cachedMeta.data[index2]; - } - applyStack(scale, parsed, mode) { - const chart = this.chart; - const meta = this._cachedMeta; - const value = parsed[scale.axis]; - const stack = { - keys: getSortedDatasetIndices(chart, true), - values: parsed._stacks[scale.axis]._visualValues - }; - return applyStack(stack, value, meta.index, { - mode - }); - } - updateRangeFromParsed(range, scale, parsed, stack) { - const parsedValue = parsed[scale.axis]; - let value = parsedValue === null ? NaN : parsedValue; - const values = stack && parsed._stacks[scale.axis]; - if (stack && values) { - stack.values = values; - value = applyStack(stack, parsedValue, this._cachedMeta.index); - } - range.min = Math.min(range.min, value); - range.max = Math.max(range.max, value); - } - getMinMax(scale, canStack) { - const meta = this._cachedMeta; - const _parsed = meta._parsed; - const sorted = meta._sorted && scale === meta.iScale; - const ilen = _parsed.length; - const otherScale = this._getOtherScale(scale); - const stack = createStack(canStack, meta, this.chart); - const range = { - min: Number.POSITIVE_INFINITY, - max: Number.NEGATIVE_INFINITY - }; - const { min: otherMin, max: otherMax } = getUserBounds(otherScale); - let i, parsed; - function _skip() { - parsed = _parsed[i]; - const otherValue = parsed[otherScale.axis]; - return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue; - } - for (i = 0; i < ilen; ++i) { - if (_skip()) { - continue; - } - this.updateRangeFromParsed(range, scale, parsed, stack); - if (sorted) { - break; - } - } - if (sorted) { - for (i = ilen - 1; i >= 0; --i) { - if (_skip()) { - continue; - } - this.updateRangeFromParsed(range, scale, parsed, stack); - break; - } - } - return range; - } - getAllParsedValues(scale) { - const parsed = this._cachedMeta._parsed; - const values = []; - let i, ilen, value; - for (i = 0, ilen = parsed.length; i < ilen; ++i) { - value = parsed[i][scale.axis]; - if (isNumberFinite(value)) { - values.push(value); - } - } - return values; - } - getMaxOverflow() { - return false; - } - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const iScale = meta.iScale; - const vScale = meta.vScale; - const parsed = this.getParsed(index2); - return { - label: iScale ? "" + iScale.getLabelForValue(parsed[iScale.axis]) : "", - value: vScale ? "" + vScale.getLabelForValue(parsed[vScale.axis]) : "" - }; - } - _update(mode) { - const meta = this._cachedMeta; - this.update(mode || "default"); - meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow()))); - } - update(mode) { - } - draw() { - const ctx = this._ctx; - const chart = this.chart; - const meta = this._cachedMeta; - const elements2 = meta.data || []; - const area = chart.chartArea; - const active = []; - const start = this._drawStart || 0; - const count = this._drawCount || elements2.length - start; - const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop; - let i; - if (meta.dataset) { - meta.dataset.draw(ctx, area, start, count); - } - for (i = start; i < start + count; ++i) { - const element = elements2[i]; - if (element.hidden) { - continue; - } - if (element.active && drawActiveElementsOnTop) { - active.push(element); - } else { - element.draw(ctx, area); - } - } - for (i = 0; i < active.length; ++i) { - active[i].draw(ctx, area); - } - } - getStyle(index2, active) { - const mode = active ? "active" : "default"; - return index2 === void 0 && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index2 || 0, mode); - } - getContext(index2, active, mode) { - const dataset = this.getDataset(); - let context; - if (index2 >= 0 && index2 < this._cachedMeta.data.length) { - const element = this._cachedMeta.data[index2]; - context = element.$context || (element.$context = createDataContext(this.getContext(), index2, element)); - context.parsed = this.getParsed(index2); - context.raw = dataset.data[index2]; - context.index = context.dataIndex = index2; - } else { - context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index)); - context.dataset = dataset; - context.index = context.datasetIndex = this.index; - } - context.active = !!active; - context.mode = mode; - return context; - } - resolveDatasetElementOptions(mode) { - return this._resolveElementOptions(this.datasetElementType.id, mode); - } - resolveDataElementOptions(index2, mode) { - return this._resolveElementOptions(this.dataElementType.id, mode, index2); - } - _resolveElementOptions(elementType, mode = "default", index2) { - const active = mode === "active"; - const cache = this._cachedDataOpts; - const cacheKey = elementType + "-" + mode; - const cached = cache[cacheKey]; - const sharing = this.enableOptionSharing && defined(index2); - if (cached) { - return cloneIfNotShared(cached, sharing); - } - const config = this.chart.config; - const scopeKeys = config.datasetElementScopeKeys(this._type, elementType); - const prefixes = active ? [ - `${elementType}Hover`, - "hover", - elementType, - "" - ] : [ - elementType, - "" - ]; - const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); - const names2 = Object.keys(defaults.elements[elementType]); - const context = () => this.getContext(index2, active, mode); - const values = config.resolveNamedOptions(scopes, names2, context, prefixes); - if (values.$shared) { - values.$shared = sharing; - cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing)); - } - return values; - } - _resolveAnimations(index2, transition, active) { - const chart = this.chart; - const cache = this._cachedDataOpts; - const cacheKey = `animation-${transition}`; - const cached = cache[cacheKey]; - if (cached) { - return cached; - } - let options; - if (chart.options.animation !== false) { - const config = this.chart.config; - const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition); - const scopes = config.getOptionScopes(this.getDataset(), scopeKeys); - options = config.createResolver(scopes, this.getContext(index2, active, transition)); - } - const animations = new Animations(chart, options && options.animations); - if (options && options._cacheable) { - cache[cacheKey] = Object.freeze(animations); - } - return animations; - } - getSharedOptions(options) { - if (!options.$shared) { - return; - } - return this._sharedOptions || (this._sharedOptions = Object.assign({}, options)); - } - includeOptions(mode, sharedOptions) { - return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled; - } - _getSharedOptions(start, mode) { - const firstOpts = this.resolveDataElementOptions(start, mode); - const previouslySharedOptions = this._sharedOptions; - const sharedOptions = this.getSharedOptions(firstOpts); - const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions; - this.updateSharedOptions(sharedOptions, mode, firstOpts); - return { - sharedOptions, - includeOptions - }; - } - updateElement(element, index2, properties, mode) { - if (isDirectUpdateMode(mode)) { - Object.assign(element, properties); - } else { - this._resolveAnimations(index2, mode).update(element, properties); - } - } - updateSharedOptions(sharedOptions, mode, newOptions) { - if (sharedOptions && !isDirectUpdateMode(mode)) { - this._resolveAnimations(void 0, mode).update(sharedOptions, newOptions); - } - } - _setStyle(element, index2, mode, active) { - element.active = active; - const options = this.getStyle(index2, active); - this._resolveAnimations(index2, mode, active).update(element, { - options: !active && this.getSharedOptions(options) || options - }); - } - removeHoverStyle(element, datasetIndex, index2) { - this._setStyle(element, index2, "active", false); - } - setHoverStyle(element, datasetIndex, index2) { - this._setStyle(element, index2, "active", true); - } - _removeDatasetHoverStyle() { - const element = this._cachedMeta.dataset; - if (element) { - this._setStyle(element, void 0, "active", false); - } - } - _setDatasetHoverStyle() { - const element = this._cachedMeta.dataset; - if (element) { - this._setStyle(element, void 0, "active", true); - } - } - _resyncElements(resetNewElements) { - const data = this._data; - const elements2 = this._cachedMeta.data; - for (const [method, arg1, arg2] of this._syncList) { - this[method](arg1, arg2); - } - this._syncList = []; - const numMeta = elements2.length; - const numData = data.length; - const count = Math.min(numData, numMeta); - if (count) { - this.parse(0, count); - } - if (numData > numMeta) { - this._insertElements(numMeta, numData - numMeta, resetNewElements); - } else if (numData < numMeta) { - this._removeElements(numData, numMeta - numData); - } - } - _insertElements(start, count, resetNewElements = true) { - const meta = this._cachedMeta; - const data = meta.data; - const end = start + count; - let i; - const move = (arr) => { - arr.length += count; - for (i = arr.length - 1; i >= end; i--) { - arr[i] = arr[i - count]; - } - }; - move(data); - for (i = start; i < end; ++i) { - data[i] = new this.dataElementType(); - } - if (this._parsing) { - move(meta._parsed); - } - this.parse(start, count); - if (resetNewElements) { - this.updateElements(data, start, count, "reset"); - } - } - updateElements(element, start, count, mode) { - } - _removeElements(start, count) { - const meta = this._cachedMeta; - if (this._parsing) { - const removed = meta._parsed.splice(start, count); - if (meta._stacked) { - clearStacks(meta, removed); - } - } - meta.data.splice(start, count); - } - _sync(args) { - if (this._parsing) { - this._syncList.push(args); - } else { - const [method, arg1, arg2] = args; - this[method](arg1, arg2); - } - this.chart._dataChanges.push([ - this.index, - ...args - ]); - } - _onDataPush() { - const count = arguments.length; - this._sync([ - "_insertElements", - this.getDataset().data.length - count, - count - ]); - } - _onDataPop() { - this._sync([ - "_removeElements", - this._cachedMeta.data.length - 1, - 1 - ]); - } - _onDataShift() { - this._sync([ - "_removeElements", - 0, - 1 - ]); - } - _onDataSplice(start, count) { - if (count) { - this._sync([ - "_removeElements", - start, - count - ]); - } - const newCount = arguments.length - 2; - if (newCount) { - this._sync([ - "_insertElements", - start, - newCount - ]); - } - } - _onDataUnshift() { - this._sync([ - "_insertElements", - 0, - arguments.length - ]); - } -}; -__publicField(DatasetController, "defaults", {}); -__publicField(DatasetController, "datasetElementType", null); -__publicField(DatasetController, "dataElementType", null); -function getAllScaleValues(scale, type) { - if (!scale._cache.$bar) { - const visibleMetas = scale.getMatchingVisibleMetas(type); - let values = []; - for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) { - values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale)); - } - scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b)); - } - return scale._cache.$bar; -} -function computeMinSampleSize(meta) { - const scale = meta.iScale; - const values = getAllScaleValues(scale, meta.type); - let min = scale._length; - let i, ilen, curr, prev; - const updateMinAndPrev = () => { - if (curr === 32767 || curr === -32768) { - return; - } - if (defined(prev)) { - min = Math.min(min, Math.abs(curr - prev) || min); - } - prev = curr; - }; - for (i = 0, ilen = values.length; i < ilen; ++i) { - curr = scale.getPixelForValue(values[i]); - updateMinAndPrev(); - } - prev = void 0; - for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) { - curr = scale.getPixelForTick(i); - updateMinAndPrev(); - } - return min; -} -function computeFitCategoryTraits(index2, ruler, options, stackCount) { - const thickness = options.barThickness; - let size, ratio; - if (isNullOrUndef(thickness)) { - size = ruler.min * options.categoryPercentage; - ratio = options.barPercentage; - } else { - size = thickness * stackCount; - ratio = 1; - } - return { - chunk: size / stackCount, - ratio, - start: ruler.pixels[index2] - size / 2 - }; -} -function computeFlexCategoryTraits(index2, ruler, options, stackCount) { - const pixels = ruler.pixels; - const curr = pixels[index2]; - let prev = index2 > 0 ? pixels[index2 - 1] : null; - let next = index2 < pixels.length - 1 ? pixels[index2 + 1] : null; - const percent = options.categoryPercentage; - if (prev === null) { - prev = curr - (next === null ? ruler.end - ruler.start : next - curr); - } - if (next === null) { - next = curr + curr - prev; - } - const start = curr - (curr - Math.min(prev, next)) / 2 * percent; - const size = Math.abs(next - prev) / 2 * percent; - return { - chunk: size / stackCount, - ratio: options.barPercentage, - start - }; -} -function parseFloatBar(entry, item, vScale, i) { - const startValue = vScale.parse(entry[0], i); - const endValue = vScale.parse(entry[1], i); - const min = Math.min(startValue, endValue); - const max = Math.max(startValue, endValue); - let barStart = min; - let barEnd = max; - if (Math.abs(min) > Math.abs(max)) { - barStart = max; - barEnd = min; - } - item[vScale.axis] = barEnd; - item._custom = { - barStart, - barEnd, - start: startValue, - end: endValue, - min, - max - }; -} -function parseValue(entry, item, vScale, i) { - if (isArray(entry)) { - parseFloatBar(entry, item, vScale, i); - } else { - item[vScale.axis] = vScale.parse(entry, i); - } - return item; -} -function parseArrayOrPrimitive(meta, data, start, count) { - const iScale = meta.iScale; - const vScale = meta.vScale; - const labels = iScale.getLabels(); - const singleScale = iScale === vScale; - const parsed = []; - let i, ilen, item, entry; - for (i = start, ilen = start + count; i < ilen; ++i) { - entry = data[i]; - item = {}; - item[iScale.axis] = singleScale || iScale.parse(labels[i], i); - parsed.push(parseValue(entry, item, vScale, i)); - } - return parsed; -} -function isFloatBar(custom) { - return custom && custom.barStart !== void 0 && custom.barEnd !== void 0; -} -function barSign(size, vScale, actualBase) { - if (size !== 0) { - return sign(size); - } - return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1); -} -function borderProps(properties) { - let reverse, start, end, top, bottom; - if (properties.horizontal) { - reverse = properties.base > properties.x; - start = "left"; - end = "right"; - } else { - reverse = properties.base < properties.y; - start = "bottom"; - end = "top"; - } - if (reverse) { - top = "end"; - bottom = "start"; - } else { - top = "start"; - bottom = "end"; - } - return { - start, - end, - reverse, - top, - bottom - }; -} -function setBorderSkipped(properties, options, stack, index2) { - let edge = options.borderSkipped; - const res = {}; - if (!edge) { - properties.borderSkipped = res; - return; - } - if (edge === true) { - properties.borderSkipped = { - top: true, - right: true, - bottom: true, - left: true - }; - return; - } - const { start, end, reverse, top, bottom } = borderProps(properties); - if (edge === "middle" && stack) { - properties.enableBorderRadius = true; - if ((stack._top || 0) === index2) { - edge = top; - } else if ((stack._bottom || 0) === index2) { - edge = bottom; - } else { - res[parseEdge(bottom, start, end, reverse)] = true; - edge = top; - } - } - res[parseEdge(edge, start, end, reverse)] = true; - properties.borderSkipped = res; -} -function parseEdge(edge, a, b, reverse) { - if (reverse) { - edge = swap(edge, a, b); - edge = startEnd(edge, b, a); - } else { - edge = startEnd(edge, a, b); - } - return edge; -} -function swap(orig, v1, v2) { - return orig === v1 ? v2 : orig === v2 ? v1 : orig; -} -function startEnd(v, start, end) { - return v === "start" ? start : v === "end" ? end : v; -} -function setInflateAmount(properties, { inflateAmount }, ratio) { - properties.inflateAmount = inflateAmount === "auto" ? ratio === 1 ? 0.33 : 0 : inflateAmount; -} -var BarController = class extends DatasetController { - parsePrimitiveData(meta, data, start, count) { - return parseArrayOrPrimitive(meta, data, start, count); - } - parseArrayData(meta, data, start, count) { - return parseArrayOrPrimitive(meta, data, start, count); - } - parseObjectData(meta, data, start, count) { - const { iScale, vScale } = meta; - const { xAxisKey = "x", yAxisKey = "y" } = this._parsing; - const iAxisKey = iScale.axis === "x" ? xAxisKey : yAxisKey; - const vAxisKey = vScale.axis === "x" ? xAxisKey : yAxisKey; - const parsed = []; - let i, ilen, item, obj; - for (i = start, ilen = start + count; i < ilen; ++i) { - obj = data[i]; - item = {}; - item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i); - parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i)); - } - return parsed; - } - updateRangeFromParsed(range, scale, parsed, stack) { - super.updateRangeFromParsed(range, scale, parsed, stack); - const custom = parsed._custom; - if (custom && scale === this._cachedMeta.vScale) { - range.min = Math.min(range.min, custom.min); - range.max = Math.max(range.max, custom.max); - } - } - getMaxOverflow() { - return 0; - } - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const { iScale, vScale } = meta; - const parsed = this.getParsed(index2); - const custom = parsed._custom; - const value = isFloatBar(custom) ? "[" + custom.start + ", " + custom.end + "]" : "" + vScale.getLabelForValue(parsed[vScale.axis]); - return { - label: "" + iScale.getLabelForValue(parsed[iScale.axis]), - value - }; - } - initialize() { - this.enableOptionSharing = true; - super.initialize(); - const meta = this._cachedMeta; - meta.stack = this.getDataset().stack; - } - update(mode) { - const meta = this._cachedMeta; - this.updateElements(meta.data, 0, meta.data.length, mode); - } - updateElements(bars, start, count, mode) { - const reset = mode === "reset"; - const { index: index2, _cachedMeta: { vScale } } = this; - const base = vScale.getBasePixel(); - const horizontal = vScale.isHorizontal(); - const ruler = this._getRuler(); - const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); - for (let i = start; i < start + count; i++) { - const parsed = this.getParsed(i); - const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? { - base, - head: base - } : this._calculateBarValuePixels(i); - const ipixels = this._calculateBarIndexPixels(i, ruler); - const stack = (parsed._stacks || {})[vScale.axis]; - const properties = { - horizontal, - base: vpixels.base, - enableBorderRadius: !stack || isFloatBar(parsed._custom) || index2 === stack._top || index2 === stack._bottom, - x: horizontal ? vpixels.head : ipixels.center, - y: horizontal ? ipixels.center : vpixels.head, - height: horizontal ? ipixels.size : Math.abs(vpixels.size), - width: horizontal ? Math.abs(vpixels.size) : ipixels.size - }; - if (includeOptions) { - properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? "active" : mode); - } - const options = properties.options || bars[i].options; - setBorderSkipped(properties, options, stack, index2); - setInflateAmount(properties, options, ruler.ratio); - this.updateElement(bars[i], i, properties, mode); - } - } - _getStacks(last, dataIndex) { - const { iScale } = this._cachedMeta; - const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta) => meta.controller.options.grouped); - const stacked = iScale.options.stacked; - const stacks = []; - const currentParsed = this._cachedMeta.controller.getParsed(dataIndex); - const iScaleValue = currentParsed && currentParsed[iScale.axis]; - const skipNull = (meta) => { - const parsed = meta._parsed.find((item) => item[iScale.axis] === iScaleValue); - const val = parsed && parsed[meta.vScale.axis]; - if (isNullOrUndef(val) || isNaN(val)) { - return true; - } - }; - for (const meta of metasets) { - if (dataIndex !== void 0 && skipNull(meta)) { - continue; - } - if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === void 0 && meta.stack === void 0) { - stacks.push(meta.stack); - } - if (meta.index === last) { - break; - } - } - if (!stacks.length) { - stacks.push(void 0); - } - return stacks; - } - _getStackCount(index2) { - return this._getStacks(void 0, index2).length; - } - _getAxisCount() { - return this._getAxis().length; - } - getFirstScaleIdForIndexAxis() { - const scales2 = this.chart.scales; - const indexScaleId = this.chart.options.indexAxis; - return Object.keys(scales2).filter((key) => scales2[key].axis === indexScaleId).shift(); - } - _getAxis() { - const axis = {}; - const firstScaleAxisId = this.getFirstScaleIdForIndexAxis(); - for (const dataset of this.chart.data.datasets) { - axis[valueOrDefault(this.chart.options.indexAxis === "x" ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId)] = true; - } - return Object.keys(axis); - } - _getStackIndex(datasetIndex, name, dataIndex) { - const stacks = this._getStacks(datasetIndex, dataIndex); - const index2 = name !== void 0 ? stacks.indexOf(name) : -1; - return index2 === -1 ? stacks.length - 1 : index2; - } - _getRuler() { - const opts = this.options; - const meta = this._cachedMeta; - const iScale = meta.iScale; - const pixels = []; - let i, ilen; - for (i = 0, ilen = meta.data.length; i < ilen; ++i) { - pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i)); - } - const barThickness = opts.barThickness; - const min = barThickness || computeMinSampleSize(meta); - return { - min, - pixels, - start: iScale._startPixel, - end: iScale._endPixel, - stackCount: this._getStackCount(), - scale: iScale, - grouped: opts.grouped, - ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage - }; - } - _calculateBarValuePixels(index2) { - const { _cachedMeta: { vScale, _stacked, index: datasetIndex }, options: { base: baseValue, minBarLength } } = this; - const actualBase = baseValue || 0; - const parsed = this.getParsed(index2); - const custom = parsed._custom; - const floating = isFloatBar(custom); - let value = parsed[vScale.axis]; - let start = 0; - let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value; - let head, size; - if (length !== value) { - start = length - value; - length = value; - } - if (floating) { - value = custom.barStart; - length = custom.barEnd - custom.barStart; - if (value !== 0 && sign(value) !== sign(custom.barEnd)) { - start = 0; - } - start += value; - } - const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start; - let base = vScale.getPixelForValue(startValue); - if (this.chart.getDataVisibility(index2)) { - head = vScale.getPixelForValue(start + length); - } else { - head = base; - } - size = head - base; - if (Math.abs(size) < minBarLength) { - size = barSign(size, vScale, actualBase) * minBarLength; - if (value === actualBase) { - base -= size / 2; - } - const startPixel = vScale.getPixelForDecimal(0); - const endPixel = vScale.getPixelForDecimal(1); - const min = Math.min(startPixel, endPixel); - const max = Math.max(startPixel, endPixel); - base = Math.max(Math.min(base, max), min); - head = base + size; - if (_stacked && !floating) { - parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base); - } - } - if (base === vScale.getPixelForValue(actualBase)) { - const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2; - base += halfGrid; - size -= halfGrid; - } - return { - size, - base, - head, - center: head + size / 2 - }; - } - _calculateBarIndexPixels(index2, ruler) { - const scale = ruler.scale; - const options = this.options; - const skipNull = options.skipNull; - const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity); - let center, size; - const axisCount = this._getAxisCount(); - if (ruler.grouped) { - const stackCount = skipNull ? this._getStackCount(index2) : ruler.stackCount; - const range = options.barThickness === "flex" ? computeFlexCategoryTraits(index2, ruler, options, stackCount * axisCount) : computeFitCategoryTraits(index2, ruler, options, stackCount * axisCount); - const axisID = this.chart.options.indexAxis === "x" ? this.getDataset().xAxisID : this.getDataset().yAxisID; - const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis())); - const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index2 : void 0) + axisNumber; - center = range.start + range.chunk * stackIndex + range.chunk / 2; - size = Math.min(maxBarThickness, range.chunk * range.ratio); - } else { - center = scale.getPixelForValue(this.getParsed(index2)[scale.axis], index2); - size = Math.min(maxBarThickness, ruler.min * ruler.ratio); - } - return { - base: center - size / 2, - head: center + size / 2, - center, - size - }; - } - draw() { - const meta = this._cachedMeta; - const vScale = meta.vScale; - const rects = meta.data; - const ilen = rects.length; - let i = 0; - for (; i < ilen; ++i) { - if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) { - rects[i].draw(this._ctx); - } - } - } -}; -__publicField(BarController, "id", "bar"); -__publicField(BarController, "defaults", { - datasetElementType: false, - dataElementType: "bar", - categoryPercentage: 0.8, - barPercentage: 0.9, - grouped: true, - animations: { - numbers: { - type: "number", - properties: [ - "x", - "y", - "base", - "width", - "height" - ] - } - } -}); -__publicField(BarController, "overrides", { - scales: { - _index_: { - type: "category", - offset: true, - grid: { - offset: true - } - }, - _value_: { - type: "linear", - beginAtZero: true - } - } -}); -var BubbleController = class extends DatasetController { - initialize() { - this.enableOptionSharing = true; - super.initialize(); - } - parsePrimitiveData(meta, data, start, count) { - const parsed = super.parsePrimitiveData(meta, data, start, count); - for (let i = 0; i < parsed.length; i++) { - parsed[i]._custom = this.resolveDataElementOptions(i + start).radius; - } - return parsed; - } - parseArrayData(meta, data, start, count) { - const parsed = super.parseArrayData(meta, data, start, count); - for (let i = 0; i < parsed.length; i++) { - const item = data[start + i]; - parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius); - } - return parsed; - } - parseObjectData(meta, data, start, count) { - const parsed = super.parseObjectData(meta, data, start, count); - for (let i = 0; i < parsed.length; i++) { - const item = data[start + i]; - parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius); - } - return parsed; - } - getMaxOverflow() { - const data = this._cachedMeta.data; - let max = 0; - for (let i = data.length - 1; i >= 0; --i) { - max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); - } - return max > 0 && max; - } - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const labels = this.chart.data.labels || []; - const { xScale, yScale } = meta; - const parsed = this.getParsed(index2); - const x = xScale.getLabelForValue(parsed.x); - const y = yScale.getLabelForValue(parsed.y); - const r = parsed._custom; - return { - label: labels[index2] || "", - value: "(" + x + ", " + y + (r ? ", " + r : "") + ")" - }; - } - update(mode) { - const points = this._cachedMeta.data; - this.updateElements(points, 0, points.length, mode); - } - updateElements(points, start, count, mode) { - const reset = mode === "reset"; - const { iScale, vScale } = this._cachedMeta; - const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); - const iAxis = iScale.axis; - const vAxis = vScale.axis; - for (let i = start; i < start + count; i++) { - const point = points[i]; - const parsed = !reset && this.getParsed(i); - const properties = {}; - const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]); - const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]); - properties.skip = isNaN(iPixel) || isNaN(vPixel); - if (includeOptions) { - properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); - if (reset) { - properties.options.radius = 0; - } - } - this.updateElement(point, i, properties, mode); - } - } - resolveDataElementOptions(index2, mode) { - const parsed = this.getParsed(index2); - let values = super.resolveDataElementOptions(index2, mode); - if (values.$shared) { - values = Object.assign({}, values, { - $shared: false - }); - } - const radius = values.radius; - if (mode !== "active") { - values.radius = 0; - } - values.radius += valueOrDefault(parsed && parsed._custom, radius); - return values; - } -}; -__publicField(BubbleController, "id", "bubble"); -__publicField(BubbleController, "defaults", { - datasetElementType: false, - dataElementType: "point", - animations: { - numbers: { - type: "number", - properties: [ - "x", - "y", - "borderWidth", - "radius" - ] - } - } -}); -__publicField(BubbleController, "overrides", { - scales: { - x: { - type: "linear" - }, - y: { - type: "linear" - } - } -}); -function getRatioAndOffset(rotation, circumference, cutout) { - let ratioX = 1; - let ratioY = 1; - let offsetX = 0; - let offsetY = 0; - if (circumference < TAU) { - const startAngle = rotation; - const endAngle = startAngle + circumference; - const startX = Math.cos(startAngle); - const startY = Math.sin(startAngle); - const endX = Math.cos(endAngle); - const endY = Math.sin(endAngle); - const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout); - const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout); - const maxX = calcMax(0, startX, endX); - const maxY = calcMax(HALF_PI, startY, endY); - const minX = calcMin(PI, startX, endX); - const minY = calcMin(PI + HALF_PI, startY, endY); - ratioX = (maxX - minX) / 2; - ratioY = (maxY - minY) / 2; - offsetX = -(maxX + minX) / 2; - offsetY = -(maxY + minY) / 2; - } - return { - ratioX, - ratioY, - offsetX, - offsetY - }; -} -var DoughnutController = class extends DatasetController { - constructor(chart, datasetIndex) { - super(chart, datasetIndex); - this.enableOptionSharing = true; - this.innerRadius = void 0; - this.outerRadius = void 0; - this.offsetX = void 0; - this.offsetY = void 0; - } - linkScales() { - } - parse(start, count) { - const data = this.getDataset().data; - const meta = this._cachedMeta; - if (this._parsing === false) { - meta._parsed = data; - } else { - let getter = (i2) => +data[i2]; - if (isObject(data[start])) { - const { key = "value" } = this._parsing; - getter = (i2) => +resolveObjectKey(data[i2], key); - } - let i, ilen; - for (i = start, ilen = start + count; i < ilen; ++i) { - meta._parsed[i] = getter(i); - } - } - } - _getRotation() { - return toRadians(this.options.rotation - 90); - } - _getCircumference() { - return toRadians(this.options.circumference); - } - _getRotationExtents() { - let min = TAU; - let max = -TAU; - for (let i = 0; i < this.chart.data.datasets.length; ++i) { - if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) { - const controller = this.chart.getDatasetMeta(i).controller; - const rotation = controller._getRotation(); - const circumference = controller._getCircumference(); - min = Math.min(min, rotation); - max = Math.max(max, rotation + circumference); - } - } - return { - rotation: min, - circumference: max - min - }; - } - update(mode) { - const chart = this.chart; - const { chartArea } = chart; - const meta = this._cachedMeta; - const arcs = meta.data; - const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing; - const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0); - const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1); - const chartWeight = this._getRingWeight(this.index); - const { circumference, rotation } = this._getRotationExtents(); - const { ratioX, ratioY, offsetX, offsetY } = getRatioAndOffset(rotation, circumference, cutout); - const maxWidth = (chartArea.width - spacing) / ratioX; - const maxHeight = (chartArea.height - spacing) / ratioY; - const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); - const outerRadius = toDimension(this.options.radius, maxRadius); - const innerRadius = Math.max(outerRadius * cutout, 0); - const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal(); - this.offsetX = offsetX * outerRadius; - this.offsetY = offsetY * outerRadius; - meta.total = this.calculateTotal(); - this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index); - this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0); - this.updateElements(arcs, 0, arcs.length, mode); - } - _circumference(i, reset) { - const opts = this.options; - const meta = this._cachedMeta; - const circumference = this._getCircumference(); - if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) { - return 0; - } - return this.calculateCircumference(meta._parsed[i] * circumference / TAU); - } - updateElements(arcs, start, count, mode) { - const reset = mode === "reset"; - const chart = this.chart; - const chartArea = chart.chartArea; - const opts = chart.options; - const animationOpts = opts.animation; - const centerX = (chartArea.left + chartArea.right) / 2; - const centerY = (chartArea.top + chartArea.bottom) / 2; - const animateScale = reset && animationOpts.animateScale; - const innerRadius = animateScale ? 0 : this.innerRadius; - const outerRadius = animateScale ? 0 : this.outerRadius; - const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); - let startAngle = this._getRotation(); - let i; - for (i = 0; i < start; ++i) { - startAngle += this._circumference(i, reset); - } - for (i = start; i < start + count; ++i) { - const circumference = this._circumference(i, reset); - const arc = arcs[i]; - const properties = { - x: centerX + this.offsetX, - y: centerY + this.offsetY, - startAngle, - endAngle: startAngle + circumference, - circumference, - outerRadius, - innerRadius - }; - if (includeOptions) { - properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? "active" : mode); - } - startAngle += circumference; - this.updateElement(arc, i, properties, mode); - } - } - calculateTotal() { - const meta = this._cachedMeta; - const metaData = meta.data; - let total = 0; - let i; - for (i = 0; i < metaData.length; i++) { - const value = meta._parsed[i]; - if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) { - total += Math.abs(value); - } - } - return total; - } - calculateCircumference(value) { - const total = this._cachedMeta.total; - if (total > 0 && !isNaN(value)) { - return TAU * (Math.abs(value) / total); - } - return 0; - } - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const chart = this.chart; - const labels = chart.data.labels || []; - const value = formatNumber(meta._parsed[index2], chart.options.locale); - return { - label: labels[index2] || "", - value - }; - } - getMaxBorderWidth(arcs) { - let max = 0; - const chart = this.chart; - let i, ilen, meta, controller, options; - if (!arcs) { - for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { - if (chart.isDatasetVisible(i)) { - meta = chart.getDatasetMeta(i); - arcs = meta.data; - controller = meta.controller; - break; - } - } - } - if (!arcs) { - return 0; - } - for (i = 0, ilen = arcs.length; i < ilen; ++i) { - options = controller.resolveDataElementOptions(i); - if (options.borderAlign !== "inner") { - max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0); - } - } - return max; - } - getMaxOffset(arcs) { - let max = 0; - for (let i = 0, ilen = arcs.length; i < ilen; ++i) { - const options = this.resolveDataElementOptions(i); - max = Math.max(max, options.offset || 0, options.hoverOffset || 0); - } - return max; - } - _getRingWeightOffset(datasetIndex) { - let ringWeightOffset = 0; - for (let i = 0; i < datasetIndex; ++i) { - if (this.chart.isDatasetVisible(i)) { - ringWeightOffset += this._getRingWeight(i); - } - } - return ringWeightOffset; - } - _getRingWeight(datasetIndex) { - return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0); - } - _getVisibleDatasetWeightTotal() { - return this._getRingWeightOffset(this.chart.data.datasets.length) || 1; - } -}; -__publicField(DoughnutController, "id", "doughnut"); -__publicField(DoughnutController, "defaults", { - datasetElementType: false, - dataElementType: "arc", - animation: { - animateRotate: true, - animateScale: false - }, - animations: { - numbers: { - type: "number", - properties: [ - "circumference", - "endAngle", - "innerRadius", - "outerRadius", - "startAngle", - "x", - "y", - "offset", - "borderWidth", - "spacing" - ] - } - }, - cutout: "50%", - rotation: 0, - circumference: 360, - radius: "100%", - spacing: 0, - indexAxis: "r" -}); -__publicField(DoughnutController, "descriptors", { - _scriptable: (name) => name !== "spacing", - _indexable: (name) => name !== "spacing" && !name.startsWith("borderDash") && !name.startsWith("hoverBorderDash") -}); -__publicField(DoughnutController, "overrides", { - aspectRatio: 1, - plugins: { - legend: { - labels: { - generateLabels(chart) { - const data = chart.data; - if (data.labels.length && data.datasets.length) { - const { labels: { pointStyle, color: color2 } } = chart.legend.options; - return data.labels.map((label, i) => { - const meta = chart.getDatasetMeta(0); - const style = meta.controller.getStyle(i); - return { - text: label, - fillStyle: style.backgroundColor, - strokeStyle: style.borderColor, - fontColor: color2, - lineWidth: style.borderWidth, - pointStyle, - hidden: !chart.getDataVisibility(i), - index: i - }; - }); - } - return []; - } - }, - onClick(e, legendItem, legend) { - legend.chart.toggleDataVisibility(legendItem.index); - legend.chart.update(); - } - } - } -}); -var LineController = class extends DatasetController { - initialize() { - this.enableOptionSharing = true; - this.supportsDecimation = true; - super.initialize(); - } - update(mode) { - const meta = this._cachedMeta; - const { dataset: line, data: points = [], _dataset } = meta; - const animationsDisabled = this.chart._animationsDisabled; - let { start, count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled); - this._drawStart = start; - this._drawCount = count; - if (_scaleRangesChanged(meta)) { - start = 0; - count = points.length; - } - line._chart = this.chart; - line._datasetIndex = this.index; - line._decimated = !!_dataset._decimated; - line.points = points; - const options = this.resolveDatasetElementOptions(mode); - if (!this.options.showLine) { - options.borderWidth = 0; - } - options.segment = this.options.segment; - this.updateElement(line, void 0, { - animated: !animationsDisabled, - options - }, mode); - this.updateElements(points, start, count, mode); - } - updateElements(points, start, count, mode) { - const reset = mode === "reset"; - const { iScale, vScale, _stacked, _dataset } = this._cachedMeta; - const { sharedOptions, includeOptions } = this._getSharedOptions(start, mode); - const iAxis = iScale.axis; - const vAxis = vScale.axis; - const { spanGaps, segment } = this.options; - const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; - const directUpdate = this.chart._animationsDisabled || reset || mode === "none"; - const end = start + count; - const pointsCount = points.length; - let prevParsed = start > 0 && this.getParsed(start - 1); - for (let i = 0; i < pointsCount; ++i) { - const point = points[i]; - const properties = directUpdate ? point : {}; - if (i < start || i >= end) { - properties.skip = true; - continue; - } - const parsed = this.getParsed(i); - const nullData = isNullOrUndef(parsed[vAxis]); - const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); - const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); - properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; - properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength; - if (segment) { - properties.parsed = parsed; - properties.raw = _dataset.data[i]; - } - if (includeOptions) { - properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); - } - if (!directUpdate) { - this.updateElement(point, i, properties, mode); - } - prevParsed = parsed; - } - } - getMaxOverflow() { - const meta = this._cachedMeta; - const dataset = meta.dataset; - const border = dataset.options && dataset.options.borderWidth || 0; - const data = meta.data || []; - if (!data.length) { - return border; - } - const firstPoint = data[0].size(this.resolveDataElementOptions(0)); - const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); - return Math.max(border, firstPoint, lastPoint) / 2; - } - draw() { - const meta = this._cachedMeta; - meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis); - super.draw(); - } -}; -__publicField(LineController, "id", "line"); -__publicField(LineController, "defaults", { - datasetElementType: "line", - dataElementType: "point", - showLine: true, - spanGaps: false -}); -__publicField(LineController, "overrides", { - scales: { - _index_: { - type: "category" - }, - _value_: { - type: "linear" - } - } -}); -var PolarAreaController = class extends DatasetController { - constructor(chart, datasetIndex) { - super(chart, datasetIndex); - this.innerRadius = void 0; - this.outerRadius = void 0; - } - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const chart = this.chart; - const labels = chart.data.labels || []; - const value = formatNumber(meta._parsed[index2].r, chart.options.locale); - return { - label: labels[index2] || "", - value - }; - } - parseObjectData(meta, data, start, count) { - return _parseObjectDataRadialScale.bind(this)(meta, data, start, count); - } - update(mode) { - const arcs = this._cachedMeta.data; - this._updateRadius(); - this.updateElements(arcs, 0, arcs.length, mode); - } - getMinMax() { - const meta = this._cachedMeta; - const range = { - min: Number.POSITIVE_INFINITY, - max: Number.NEGATIVE_INFINITY - }; - meta.data.forEach((element, index2) => { - const parsed = this.getParsed(index2).r; - if (!isNaN(parsed) && this.chart.getDataVisibility(index2)) { - if (parsed < range.min) { - range.min = parsed; - } - if (parsed > range.max) { - range.max = parsed; - } - } - }); - return range; - } - _updateRadius() { - const chart = this.chart; - const chartArea = chart.chartArea; - const opts = chart.options; - const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - const outerRadius = Math.max(minSize / 2, 0); - const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0); - const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount(); - this.outerRadius = outerRadius - radiusLength * this.index; - this.innerRadius = this.outerRadius - radiusLength; - } - updateElements(arcs, start, count, mode) { - const reset = mode === "reset"; - const chart = this.chart; - const opts = chart.options; - const animationOpts = opts.animation; - const scale = this._cachedMeta.rScale; - const centerX = scale.xCenter; - const centerY = scale.yCenter; - const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI; - let angle = datasetStartAngle; - let i; - const defaultAngle = 360 / this.countVisibleElements(); - for (i = 0; i < start; ++i) { - angle += this._computeAngle(i, mode, defaultAngle); - } - for (i = start; i < start + count; i++) { - const arc = arcs[i]; - let startAngle = angle; - let endAngle = angle + this._computeAngle(i, mode, defaultAngle); - let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0; - angle = endAngle; - if (reset) { - if (animationOpts.animateScale) { - outerRadius = 0; - } - if (animationOpts.animateRotate) { - startAngle = endAngle = datasetStartAngle; - } - } - const properties = { - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius, - startAngle, - endAngle, - options: this.resolveDataElementOptions(i, arc.active ? "active" : mode) - }; - this.updateElement(arc, i, properties, mode); - } - } - countVisibleElements() { - const meta = this._cachedMeta; - let count = 0; - meta.data.forEach((element, index2) => { - if (!isNaN(this.getParsed(index2).r) && this.chart.getDataVisibility(index2)) { - count++; - } - }); - return count; - } - _computeAngle(index2, mode, defaultAngle) { - return this.chart.getDataVisibility(index2) ? toRadians(this.resolveDataElementOptions(index2, mode).angle || defaultAngle) : 0; - } -}; -__publicField(PolarAreaController, "id", "polarArea"); -__publicField(PolarAreaController, "defaults", { - dataElementType: "arc", - animation: { - animateRotate: true, - animateScale: true - }, - animations: { - numbers: { - type: "number", - properties: [ - "x", - "y", - "startAngle", - "endAngle", - "innerRadius", - "outerRadius" - ] - } - }, - indexAxis: "r", - startAngle: 0 -}); -__publicField(PolarAreaController, "overrides", { - aspectRatio: 1, - plugins: { - legend: { - labels: { - generateLabels(chart) { - const data = chart.data; - if (data.labels.length && data.datasets.length) { - const { labels: { pointStyle, color: color2 } } = chart.legend.options; - return data.labels.map((label, i) => { - const meta = chart.getDatasetMeta(0); - const style = meta.controller.getStyle(i); - return { - text: label, - fillStyle: style.backgroundColor, - strokeStyle: style.borderColor, - fontColor: color2, - lineWidth: style.borderWidth, - pointStyle, - hidden: !chart.getDataVisibility(i), - index: i - }; - }); - } - return []; - } - }, - onClick(e, legendItem, legend) { - legend.chart.toggleDataVisibility(legendItem.index); - legend.chart.update(); - } - } - }, - scales: { - r: { - type: "radialLinear", - angleLines: { - display: false - }, - beginAtZero: true, - grid: { - circular: true - }, - pointLabels: { - display: false - }, - startAngle: 0 - } - } -}); -var PieController = class extends DoughnutController { -}; -__publicField(PieController, "id", "pie"); -__publicField(PieController, "defaults", { - cutout: 0, - rotation: 0, - circumference: 360, - radius: "100%" -}); -var RadarController = class extends DatasetController { - getLabelAndValue(index2) { - const vScale = this._cachedMeta.vScale; - const parsed = this.getParsed(index2); - return { - label: vScale.getLabels()[index2], - value: "" + vScale.getLabelForValue(parsed[vScale.axis]) - }; - } - parseObjectData(meta, data, start, count) { - return _parseObjectDataRadialScale.bind(this)(meta, data, start, count); - } - update(mode) { - const meta = this._cachedMeta; - const line = meta.dataset; - const points = meta.data || []; - const labels = meta.iScale.getLabels(); - line.points = points; - if (mode !== "resize") { - const options = this.resolveDatasetElementOptions(mode); - if (!this.options.showLine) { - options.borderWidth = 0; - } - const properties = { - _loop: true, - _fullLoop: labels.length === points.length, - options - }; - this.updateElement(line, void 0, properties, mode); - } - this.updateElements(points, 0, points.length, mode); - } - updateElements(points, start, count, mode) { - const scale = this._cachedMeta.rScale; - const reset = mode === "reset"; - for (let i = start; i < start + count; i++) { - const point = points[i]; - const options = this.resolveDataElementOptions(i, point.active ? "active" : mode); - const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r); - const x = reset ? scale.xCenter : pointPosition.x; - const y = reset ? scale.yCenter : pointPosition.y; - const properties = { - x, - y, - angle: pointPosition.angle, - skip: isNaN(x) || isNaN(y), - options - }; - this.updateElement(point, i, properties, mode); - } - } -}; -__publicField(RadarController, "id", "radar"); -__publicField(RadarController, "defaults", { - datasetElementType: "line", - dataElementType: "point", - indexAxis: "r", - showLine: true, - elements: { - line: { - fill: "start" - } - } -}); -__publicField(RadarController, "overrides", { - aspectRatio: 1, - scales: { - r: { - type: "radialLinear" - } - } -}); -var ScatterController = class extends DatasetController { - getLabelAndValue(index2) { - const meta = this._cachedMeta; - const labels = this.chart.data.labels || []; - const { xScale, yScale } = meta; - const parsed = this.getParsed(index2); - const x = xScale.getLabelForValue(parsed.x); - const y = yScale.getLabelForValue(parsed.y); - return { - label: labels[index2] || "", - value: "(" + x + ", " + y + ")" - }; - } - update(mode) { - const meta = this._cachedMeta; - const { data: points = [] } = meta; - const animationsDisabled = this.chart._animationsDisabled; - let { start, count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled); - this._drawStart = start; - this._drawCount = count; - if (_scaleRangesChanged(meta)) { - start = 0; - count = points.length; - } - if (this.options.showLine) { - if (!this.datasetElementType) { - this.addElements(); - } - const { dataset: line, _dataset } = meta; - line._chart = this.chart; - line._datasetIndex = this.index; - line._decimated = !!_dataset._decimated; - line.points = points; - const options = this.resolveDatasetElementOptions(mode); - options.segment = this.options.segment; - this.updateElement(line, void 0, { - animated: !animationsDisabled, - options - }, mode); - } else if (this.datasetElementType) { - delete meta.dataset; - this.datasetElementType = false; - } - this.updateElements(points, start, count, mode); - } - addElements() { - const { showLine } = this.options; - if (!this.datasetElementType && showLine) { - this.datasetElementType = this.chart.registry.getElement("line"); - } - super.addElements(); - } - updateElements(points, start, count, mode) { - const reset = mode === "reset"; - const { iScale, vScale, _stacked, _dataset } = this._cachedMeta; - const firstOpts = this.resolveDataElementOptions(start, mode); - const sharedOptions = this.getSharedOptions(firstOpts); - const includeOptions = this.includeOptions(mode, sharedOptions); - const iAxis = iScale.axis; - const vAxis = vScale.axis; - const { spanGaps, segment } = this.options; - const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY; - const directUpdate = this.chart._animationsDisabled || reset || mode === "none"; - let prevParsed = start > 0 && this.getParsed(start - 1); - for (let i = start; i < start + count; ++i) { - const point = points[i]; - const parsed = this.getParsed(i); - const properties = directUpdate ? point : {}; - const nullData = isNullOrUndef(parsed[vAxis]); - const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i); - const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i); - properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData; - properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength; - if (segment) { - properties.parsed = parsed; - properties.raw = _dataset.data[i]; - } - if (includeOptions) { - properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? "active" : mode); - } - if (!directUpdate) { - this.updateElement(point, i, properties, mode); - } - prevParsed = parsed; - } - this.updateSharedOptions(sharedOptions, mode, firstOpts); - } - getMaxOverflow() { - const meta = this._cachedMeta; - const data = meta.data || []; - if (!this.options.showLine) { - let max = 0; - for (let i = data.length - 1; i >= 0; --i) { - max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2); - } - return max > 0 && max; - } - const dataset = meta.dataset; - const border = dataset.options && dataset.options.borderWidth || 0; - if (!data.length) { - return border; - } - const firstPoint = data[0].size(this.resolveDataElementOptions(0)); - const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1)); - return Math.max(border, firstPoint, lastPoint) / 2; - } -}; -__publicField(ScatterController, "id", "scatter"); -__publicField(ScatterController, "defaults", { - datasetElementType: false, - dataElementType: "point", - showLine: false, - fill: false -}); -__publicField(ScatterController, "overrides", { - interaction: { - mode: "point" - }, - scales: { - x: { - type: "linear" - }, - y: { - type: "linear" - } - } -}); -var controllers = Object.freeze({ - __proto__: null, - BarController, - BubbleController, - DoughnutController, - LineController, - PieController, - PolarAreaController, - RadarController, - ScatterController -}); -function abstract() { - throw new Error("This method is not implemented: Check that a complete date adapter is provided."); -} -var DateAdapterBase = class _DateAdapterBase { - constructor(options) { - __publicField(this, "options"); - this.options = options || {}; - } - /** - * Override default date adapter methods. - * Accepts type parameter to define options type. - * @example - * Chart._adapters._date.override<{myAdapterOption: string}>({ - * init() { - * console.log(this.options.myAdapterOption); - * } - * }) - */ - static override(members) { - Object.assign(_DateAdapterBase.prototype, members); - } - // eslint-disable-next-line @typescript-eslint/no-empty-function - init() { - } - formats() { - return abstract(); - } - parse() { - return abstract(); - } - format() { - return abstract(); - } - add() { - return abstract(); - } - diff() { - return abstract(); - } - startOf() { - return abstract(); - } - endOf() { - return abstract(); - } -}; -var adapters = { - _date: DateAdapterBase -}; -function binarySearch(metaset, axis, value, intersect) { - const { controller, data, _sorted } = metaset; - const iScale = controller._cachedMeta.iScale; - const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null; - if (iScale && axis === iScale.axis && axis !== "r" && _sorted && data.length) { - const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey; - if (!intersect) { - const result = lookupMethod(data, axis, value); - if (spanGaps) { - const { vScale } = controller._cachedMeta; - const { _parsed } = metaset; - const distanceToDefinedLo = _parsed.slice(0, result.lo + 1).reverse().findIndex((point) => !isNullOrUndef(point[vScale.axis])); - result.lo -= Math.max(0, distanceToDefinedLo); - const distanceToDefinedHi = _parsed.slice(result.hi).findIndex((point) => !isNullOrUndef(point[vScale.axis])); - result.hi += Math.max(0, distanceToDefinedHi); - } - return result; - } else if (controller._sharedOptions) { - const el = data[0]; - const range = typeof el.getRange === "function" && el.getRange(axis); - if (range) { - const start = lookupMethod(data, axis, value - range); - const end = lookupMethod(data, axis, value + range); - return { - lo: start.lo, - hi: end.hi - }; - } - } - } - return { - lo: 0, - hi: data.length - 1 - }; -} -function evaluateInteractionItems(chart, axis, position, handler, intersect) { - const metasets = chart.getSortedVisibleDatasetMetas(); - const value = position[axis]; - for (let i = 0, ilen = metasets.length; i < ilen; ++i) { - const { index: index2, data } = metasets[i]; - const { lo, hi } = binarySearch(metasets[i], axis, value, intersect); - for (let j = lo; j <= hi; ++j) { - const element = data[j]; - if (!element.skip) { - handler(element, index2, j); - } - } - } -} -function getDistanceMetricForAxis(axis) { - const useX = axis.indexOf("x") !== -1; - const useY = axis.indexOf("y") !== -1; - return function(pt1, pt2) { - const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; - const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; - return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); - }; -} -function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) { - const items = []; - if (!includeInvisible && !chart.isPointInArea(position)) { - return items; - } - const evaluationFunc = function(element, datasetIndex, index2) { - if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) { - return; - } - if (element.inRange(position.x, position.y, useFinalPosition)) { - items.push({ - element, - datasetIndex, - index: index2 - }); - } - }; - evaluateInteractionItems(chart, axis, position, evaluationFunc, true); - return items; -} -function getNearestRadialItems(chart, position, axis, useFinalPosition) { - let items = []; - function evaluationFunc(element, datasetIndex, index2) { - const { startAngle, endAngle } = element.getProps([ - "startAngle", - "endAngle" - ], useFinalPosition); - const { angle } = getAngleFromPoint(element, { - x: position.x, - y: position.y - }); - if (_angleBetween(angle, startAngle, endAngle)) { - items.push({ - element, - datasetIndex, - index: index2 - }); - } - } - evaluateInteractionItems(chart, axis, position, evaluationFunc); - return items; -} -function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { - let items = []; - const distanceMetric = getDistanceMetricForAxis(axis); - let minDistance = Number.POSITIVE_INFINITY; - function evaluationFunc(element, datasetIndex, index2) { - const inRange2 = element.inRange(position.x, position.y, useFinalPosition); - if (intersect && !inRange2) { - return; - } - const center = element.getCenterPoint(useFinalPosition); - const pointInArea = !!includeInvisible || chart.isPointInArea(center); - if (!pointInArea && !inRange2) { - return; - } - const distance = distanceMetric(position, center); - if (distance < minDistance) { - items = [ - { - element, - datasetIndex, - index: index2 - } - ]; - minDistance = distance; - } else if (distance === minDistance) { - items.push({ - element, - datasetIndex, - index: index2 - }); - } - } - evaluateInteractionItems(chart, axis, position, evaluationFunc); - return items; -} -function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) { - if (!includeInvisible && !chart.isPointInArea(position)) { - return []; - } - return axis === "r" && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible); -} -function getAxisItems(chart, position, axis, intersect, useFinalPosition) { - const items = []; - const rangeMethod = axis === "x" ? "inXRange" : "inYRange"; - let intersectsItem = false; - evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index2) => { - if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) { - items.push({ - element, - datasetIndex, - index: index2 - }); - intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition); - } - }); - if (intersect && !intersectsItem) { - return []; - } - return items; -} -var Interaction = { - evaluateInteractionItems, - modes: { - index(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - const axis = options.axis || "x"; - const includeInvisible = options.includeInvisible || false; - const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); - const elements2 = []; - if (!items.length) { - return []; - } - chart.getSortedVisibleDatasetMetas().forEach((meta) => { - const index2 = items[0].index; - const element = meta.data[index2]; - if (element && !element.skip) { - elements2.push({ - element, - datasetIndex: meta.index, - index: index2 - }); - } - }); - return elements2; - }, - dataset(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - const axis = options.axis || "xy"; - const includeInvisible = options.includeInvisible || false; - let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible); - if (items.length > 0) { - const datasetIndex = items[0].datasetIndex; - const data = chart.getDatasetMeta(datasetIndex).data; - items = []; - for (let i = 0; i < data.length; ++i) { - items.push({ - element: data[i], - datasetIndex, - index: i - }); - } - } - return items; - }, - point(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - const axis = options.axis || "xy"; - const includeInvisible = options.includeInvisible || false; - return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible); - }, - nearest(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - const axis = options.axis || "xy"; - const includeInvisible = options.includeInvisible || false; - return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible); - }, - x(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - return getAxisItems(chart, position, "x", options.intersect, useFinalPosition); - }, - y(chart, e, options, useFinalPosition) { - const position = getRelativePosition(e, chart); - return getAxisItems(chart, position, "y", options.intersect, useFinalPosition); - } - } -}; -var STATIC_POSITIONS = [ - "left", - "top", - "right", - "bottom" -]; -function filterByPosition(array, position) { - return array.filter((v) => v.pos === position); -} -function filterDynamicPositionByAxis(array, axis) { - return array.filter((v) => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis); -} -function sortByWeight(array, reverse) { - return array.sort((a, b) => { - const v0 = reverse ? b : a; - const v1 = reverse ? a : b; - return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight; - }); -} -function wrapBoxes(boxes) { - const layoutBoxes = []; - let i, ilen, box, pos, stack, stackWeight; - for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) { - box = boxes[i]; - ({ position: pos, options: { stack, stackWeight = 1 } } = box); - layoutBoxes.push({ - index: i, - box, - pos, - horizontal: box.isHorizontal(), - weight: box.weight, - stack: stack && pos + stack, - stackWeight - }); - } - return layoutBoxes; -} -function buildStacks(layouts2) { - const stacks = {}; - for (const wrap of layouts2) { - const { stack, pos, stackWeight } = wrap; - if (!stack || !STATIC_POSITIONS.includes(pos)) { - continue; - } - const _stack = stacks[stack] || (stacks[stack] = { - count: 0, - placed: 0, - weight: 0, - size: 0 - }); - _stack.count++; - _stack.weight += stackWeight; - } - return stacks; -} -function setLayoutDims(layouts2, params) { - const stacks = buildStacks(layouts2); - const { vBoxMaxWidth, hBoxMaxHeight } = params; - let i, ilen, layout; - for (i = 0, ilen = layouts2.length; i < ilen; ++i) { - layout = layouts2[i]; - const { fullSize } = layout.box; - const stack = stacks[layout.stack]; - const factor = stack && layout.stackWeight / stack.weight; - if (layout.horizontal) { - layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth; - layout.height = hBoxMaxHeight; - } else { - layout.width = vBoxMaxWidth; - layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight; - } - } - return stacks; -} -function buildLayoutBoxes(boxes) { - const layoutBoxes = wrapBoxes(boxes); - const fullSize = sortByWeight(layoutBoxes.filter((wrap) => wrap.box.fullSize), true); - const left = sortByWeight(filterByPosition(layoutBoxes, "left"), true); - const right = sortByWeight(filterByPosition(layoutBoxes, "right")); - const top = sortByWeight(filterByPosition(layoutBoxes, "top"), true); - const bottom = sortByWeight(filterByPosition(layoutBoxes, "bottom")); - const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, "x"); - const centerVertical = filterDynamicPositionByAxis(layoutBoxes, "y"); - return { - fullSize, - leftAndTop: left.concat(top), - rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal), - chartArea: filterByPosition(layoutBoxes, "chartArea"), - vertical: left.concat(right).concat(centerVertical), - horizontal: top.concat(bottom).concat(centerHorizontal) - }; -} -function getCombinedMax(maxPadding, chartArea, a, b) { - return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]); -} -function updateMaxPadding(maxPadding, boxPadding) { - maxPadding.top = Math.max(maxPadding.top, boxPadding.top); - maxPadding.left = Math.max(maxPadding.left, boxPadding.left); - maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom); - maxPadding.right = Math.max(maxPadding.right, boxPadding.right); -} -function updateDims(chartArea, params, layout, stacks) { - const { pos, box } = layout; - const maxPadding = chartArea.maxPadding; - if (!isObject(pos)) { - if (layout.size) { - chartArea[pos] -= layout.size; - } - const stack = stacks[layout.stack] || { - size: 0, - count: 1 - }; - stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width); - layout.size = stack.size / stack.count; - chartArea[pos] += layout.size; - } - if (box.getPadding) { - updateMaxPadding(maxPadding, box.getPadding()); - } - const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, "left", "right")); - const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, "top", "bottom")); - const widthChanged = newWidth !== chartArea.w; - const heightChanged = newHeight !== chartArea.h; - chartArea.w = newWidth; - chartArea.h = newHeight; - return layout.horizontal ? { - same: widthChanged, - other: heightChanged - } : { - same: heightChanged, - other: widthChanged - }; -} -function handleMaxPadding(chartArea) { - const maxPadding = chartArea.maxPadding; - function updatePos(pos) { - const change = Math.max(maxPadding[pos] - chartArea[pos], 0); - chartArea[pos] += change; - return change; - } - chartArea.y += updatePos("top"); - chartArea.x += updatePos("left"); - updatePos("right"); - updatePos("bottom"); -} -function getMargins(horizontal, chartArea) { - const maxPadding = chartArea.maxPadding; - function marginForPositions(positions2) { - const margin = { - left: 0, - top: 0, - right: 0, - bottom: 0 - }; - positions2.forEach((pos) => { - margin[pos] = Math.max(chartArea[pos], maxPadding[pos]); - }); - return margin; - } - return horizontal ? marginForPositions([ - "left", - "right" - ]) : marginForPositions([ - "top", - "bottom" - ]); -} -function fitBoxes(boxes, chartArea, params, stacks) { - const refitBoxes = []; - let i, ilen, layout, box, refit, changed; - for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) { - layout = boxes[i]; - box = layout.box; - box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea)); - const { same, other } = updateDims(chartArea, params, layout, stacks); - refit |= same && refitBoxes.length; - changed = changed || other; - if (!box.fullSize) { - refitBoxes.push(layout); - } - } - return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed; -} -function setBoxDims(box, left, top, width, height) { - box.top = top; - box.left = left; - box.right = left + width; - box.bottom = top + height; - box.width = width; - box.height = height; -} -function placeBoxes(boxes, chartArea, params, stacks) { - const userPadding = params.padding; - let { x, y } = chartArea; - for (const layout of boxes) { - const box = layout.box; - const stack = stacks[layout.stack] || { - count: 1, - placed: 0, - weight: 1 - }; - const weight = layout.stackWeight / stack.weight || 1; - if (layout.horizontal) { - const width = chartArea.w * weight; - const height = stack.size || box.height; - if (defined(stack.start)) { - y = stack.start; - } - if (box.fullSize) { - setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height); - } else { - setBoxDims(box, chartArea.left + stack.placed, y, width, height); - } - stack.start = y; - stack.placed += width; - y = box.bottom; - } else { - const height = chartArea.h * weight; - const width = stack.size || box.width; - if (defined(stack.start)) { - x = stack.start; - } - if (box.fullSize) { - setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top); - } else { - setBoxDims(box, x, chartArea.top + stack.placed, width, height); - } - stack.start = x; - stack.placed += height; - x = box.right; - } - } - chartArea.x = x; - chartArea.y = y; -} -var layouts = { - addBox(chart, item) { - if (!chart.boxes) { - chart.boxes = []; - } - item.fullSize = item.fullSize || false; - item.position = item.position || "top"; - item.weight = item.weight || 0; - item._layers = item._layers || function() { - return [ - { - z: 0, - draw(chartArea) { - item.draw(chartArea); - } - } - ]; - }; - chart.boxes.push(item); - }, - removeBox(chart, layoutItem) { - const index2 = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; - if (index2 !== -1) { - chart.boxes.splice(index2, 1); - } - }, - configure(chart, item, options) { - item.fullSize = options.fullSize; - item.position = options.position; - item.weight = options.weight; - }, - update(chart, width, height, minPadding) { - if (!chart) { - return; - } - const padding = toPadding(chart.options.layout.padding); - const availableWidth = Math.max(width - padding.width, 0); - const availableHeight = Math.max(height - padding.height, 0); - const boxes = buildLayoutBoxes(chart.boxes); - const verticalBoxes = boxes.vertical; - const horizontalBoxes = boxes.horizontal; - each(chart.boxes, (box) => { - if (typeof box.beforeLayout === "function") { - box.beforeLayout(); - } - }); - const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1; - const params = Object.freeze({ - outerWidth: width, - outerHeight: height, - padding, - availableWidth, - availableHeight, - vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, - hBoxMaxHeight: availableHeight / 2 - }); - const maxPadding = Object.assign({}, padding); - updateMaxPadding(maxPadding, toPadding(minPadding)); - const chartArea = Object.assign({ - maxPadding, - w: availableWidth, - h: availableHeight, - x: padding.left, - y: padding.top - }, padding); - const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params); - fitBoxes(boxes.fullSize, chartArea, params, stacks); - fitBoxes(verticalBoxes, chartArea, params, stacks); - if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) { - fitBoxes(verticalBoxes, chartArea, params, stacks); - } - handleMaxPadding(chartArea); - placeBoxes(boxes.leftAndTop, chartArea, params, stacks); - chartArea.x += chartArea.w; - chartArea.y += chartArea.h; - placeBoxes(boxes.rightAndBottom, chartArea, params, stacks); - chart.chartArea = { - left: chartArea.left, - top: chartArea.top, - right: chartArea.left + chartArea.w, - bottom: chartArea.top + chartArea.h, - height: chartArea.h, - width: chartArea.w - }; - each(boxes.chartArea, (layout) => { - const box = layout.box; - Object.assign(box, chart.chartArea); - box.update(chartArea.w, chartArea.h, { - left: 0, - top: 0, - right: 0, - bottom: 0 - }); - }); - } -}; -var BasePlatform = class { - acquireContext(canvas, aspectRatio) { - } - releaseContext(context) { - return false; - } - addEventListener(chart, type, listener) { - } - removeEventListener(chart, type, listener) { - } - getDevicePixelRatio() { - return 1; - } - getMaximumSize(element, width, height, aspectRatio) { - width = Math.max(0, width || element.width); - height = height || element.height; - return { - width, - height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height) - }; - } - isAttached(canvas) { - return true; - } - updateConfig(config) { - } -}; -var BasicPlatform = class extends BasePlatform { - acquireContext(item) { - return item && item.getContext && item.getContext("2d") || null; - } - updateConfig(config) { - config.options.animation = false; - } -}; -var EXPANDO_KEY = "$chartjs"; -var EVENT_TYPES = { - touchstart: "mousedown", - touchmove: "mousemove", - touchend: "mouseup", - pointerenter: "mouseenter", - pointerdown: "mousedown", - pointermove: "mousemove", - pointerup: "mouseup", - pointerleave: "mouseout", - pointerout: "mouseout" -}; -var isNullOrEmpty = (value) => value === null || value === ""; -function initCanvas(canvas, aspectRatio) { - const style = canvas.style; - const renderHeight = canvas.getAttribute("height"); - const renderWidth = canvas.getAttribute("width"); - canvas[EXPANDO_KEY] = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } - } - }; - style.display = style.display || "block"; - style.boxSizing = style.boxSizing || "border-box"; - if (isNullOrEmpty(renderWidth)) { - const displayWidth = readUsedSize(canvas, "width"); - if (displayWidth !== void 0) { - canvas.width = displayWidth; - } - } - if (isNullOrEmpty(renderHeight)) { - if (canvas.style.height === "") { - canvas.height = canvas.width / (aspectRatio || 2); - } else { - const displayHeight = readUsedSize(canvas, "height"); - if (displayHeight !== void 0) { - canvas.height = displayHeight; - } - } - } - return canvas; -} -var eventListenerOptions = supportsEventListenerOptions ? { - passive: true -} : false; -function addListener(node, type, listener) { - if (node) { - node.addEventListener(type, listener, eventListenerOptions); - } -} -function removeListener(chart, type, listener) { - if (chart && chart.canvas) { - chart.canvas.removeEventListener(type, listener, eventListenerOptions); - } -} -function fromNativeEvent(event, chart) { - const type = EVENT_TYPES[event.type] || event.type; - const { x, y } = getRelativePosition(event, chart); - return { - type, - chart, - native: event, - x: x !== void 0 ? x : null, - y: y !== void 0 ? y : null - }; -} -function nodeListContains(nodeList, canvas) { - for (const node of nodeList) { - if (node === canvas || node.contains(canvas)) { - return true; - } - } -} -function createAttachObserver(chart, type, listener) { - const canvas = chart.canvas; - const observer = new MutationObserver((entries) => { - let trigger = false; - for (const entry of entries) { - trigger = trigger || nodeListContains(entry.addedNodes, canvas); - trigger = trigger && !nodeListContains(entry.removedNodes, canvas); - } - if (trigger) { - listener(); - } - }); - observer.observe(document, { - childList: true, - subtree: true - }); - return observer; -} -function createDetachObserver(chart, type, listener) { - const canvas = chart.canvas; - const observer = new MutationObserver((entries) => { - let trigger = false; - for (const entry of entries) { - trigger = trigger || nodeListContains(entry.removedNodes, canvas); - trigger = trigger && !nodeListContains(entry.addedNodes, canvas); - } - if (trigger) { - listener(); - } - }); - observer.observe(document, { - childList: true, - subtree: true - }); - return observer; -} -var drpListeningCharts = /* @__PURE__ */ new Map(); -var oldDevicePixelRatio = 0; -function onWindowResize() { - const dpr = window.devicePixelRatio; - if (dpr === oldDevicePixelRatio) { - return; - } - oldDevicePixelRatio = dpr; - drpListeningCharts.forEach((resize, chart) => { - if (chart.currentDevicePixelRatio !== dpr) { - resize(); - } - }); -} -function listenDevicePixelRatioChanges(chart, resize) { - if (!drpListeningCharts.size) { - window.addEventListener("resize", onWindowResize); - } - drpListeningCharts.set(chart, resize); -} -function unlistenDevicePixelRatioChanges(chart) { - drpListeningCharts.delete(chart); - if (!drpListeningCharts.size) { - window.removeEventListener("resize", onWindowResize); - } -} -function createResizeObserver(chart, type, listener) { - const canvas = chart.canvas; - const container = canvas && _getParentNode(canvas); - if (!container) { - return; - } - const resize = throttled((width, height) => { - const w = container.clientWidth; - listener(width, height); - if (w < container.clientWidth) { - listener(); - } - }, window); - const observer = new ResizeObserver((entries) => { - const entry = entries[0]; - const width = entry.contentRect.width; - const height = entry.contentRect.height; - if (width === 0 && height === 0) { - return; - } - resize(width, height); - }); - observer.observe(container); - listenDevicePixelRatioChanges(chart, resize); - return observer; -} -function releaseObserver(chart, type, observer) { - if (observer) { - observer.disconnect(); - } - if (type === "resize") { - unlistenDevicePixelRatioChanges(chart); - } -} -function createProxyAndListen(chart, type, listener) { - const canvas = chart.canvas; - const proxy = throttled((event) => { - if (chart.ctx !== null) { - listener(fromNativeEvent(event, chart)); - } - }, chart); - addListener(canvas, type, proxy); - return proxy; -} -var DomPlatform = class extends BasePlatform { - acquireContext(canvas, aspectRatio) { - const context = canvas && canvas.getContext && canvas.getContext("2d"); - if (context && context.canvas === canvas) { - initCanvas(canvas, aspectRatio); - return context; - } - return null; - } - releaseContext(context) { - const canvas = context.canvas; - if (!canvas[EXPANDO_KEY]) { - return false; - } - const initial = canvas[EXPANDO_KEY].initial; - [ - "height", - "width" - ].forEach((prop) => { - const value = initial[prop]; - if (isNullOrUndef(value)) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); - const style = initial.style || {}; - Object.keys(style).forEach((key) => { - canvas.style[key] = style[key]; - }); - canvas.width = canvas.width; - delete canvas[EXPANDO_KEY]; - return true; - } - addEventListener(chart, type, listener) { - this.removeEventListener(chart, type); - const proxies = chart.$proxies || (chart.$proxies = {}); - const handlers = { - attach: createAttachObserver, - detach: createDetachObserver, - resize: createResizeObserver - }; - const handler = handlers[type] || createProxyAndListen; - proxies[type] = handler(chart, type, listener); - } - removeEventListener(chart, type) { - const proxies = chart.$proxies || (chart.$proxies = {}); - const proxy = proxies[type]; - if (!proxy) { - return; - } - const handlers = { - attach: releaseObserver, - detach: releaseObserver, - resize: releaseObserver - }; - const handler = handlers[type] || removeListener; - handler(chart, type, proxy); - proxies[type] = void 0; - } - getDevicePixelRatio() { - return window.devicePixelRatio; - } - getMaximumSize(canvas, width, height, aspectRatio) { - return getMaximumSize(canvas, width, height, aspectRatio); - } - isAttached(canvas) { - const container = canvas && _getParentNode(canvas); - return !!(container && container.isConnected); - } -}; -function _detectPlatform(canvas) { - if (!_isDomSupported() || typeof OffscreenCanvas !== "undefined" && canvas instanceof OffscreenCanvas) { - return BasicPlatform; - } - return DomPlatform; -} -var Element = class { - constructor() { - __publicField(this, "x"); - __publicField(this, "y"); - __publicField(this, "active", false); - __publicField(this, "options"); - __publicField(this, "$animations"); - } - tooltipPosition(useFinalPosition) { - const { x, y } = this.getProps([ - "x", - "y" - ], useFinalPosition); - return { - x, - y - }; - } - hasValue() { - return isNumber(this.x) && isNumber(this.y); - } - getProps(props, final) { - const anims = this.$animations; - if (!final || !anims) { - return this; - } - const ret = {}; - props.forEach((prop) => { - ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop]; - }); - return ret; - } -}; -__publicField(Element, "defaults", {}); -__publicField(Element, "defaultRoutes"); -function autoSkip(scale, ticks) { - const tickOpts = scale.options.ticks; - const determinedMaxTicks = determineMaxTicks(scale); - const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks); - const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : []; - const numMajorIndices = majorIndices.length; - const first = majorIndices[0]; - const last = majorIndices[numMajorIndices - 1]; - const newTicks = []; - if (numMajorIndices > ticksLimit) { - skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit); - return newTicks; - } - const spacing = calculateSpacing(majorIndices, ticks, ticksLimit); - if (numMajorIndices > 0) { - let i, ilen; - const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null; - skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first); - for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) { - skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]); - } - skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing); - return newTicks; - } - skip(ticks, newTicks, spacing); - return newTicks; -} -function determineMaxTicks(scale) { - const offset = scale.options.offset; - const tickLength = scale._tickSize(); - const maxScale = scale._length / tickLength + (offset ? 0 : 1); - const maxChart = scale._maxLength / tickLength; - return Math.floor(Math.min(maxScale, maxChart)); -} -function calculateSpacing(majorIndices, ticks, ticksLimit) { - const evenMajorSpacing = getEvenSpacing(majorIndices); - const spacing = ticks.length / ticksLimit; - if (!evenMajorSpacing) { - return Math.max(spacing, 1); - } - const factors = _factorize(evenMajorSpacing); - for (let i = 0, ilen = factors.length - 1; i < ilen; i++) { - const factor = factors[i]; - if (factor > spacing) { - return factor; - } - } - return Math.max(spacing, 1); -} -function getMajorIndices(ticks) { - const result = []; - let i, ilen; - for (i = 0, ilen = ticks.length; i < ilen; i++) { - if (ticks[i].major) { - result.push(i); - } - } - return result; -} -function skipMajors(ticks, newTicks, majorIndices, spacing) { - let count = 0; - let next = majorIndices[0]; - let i; - spacing = Math.ceil(spacing); - for (i = 0; i < ticks.length; i++) { - if (i === next) { - newTicks.push(ticks[i]); - count++; - next = majorIndices[count * spacing]; - } - } -} -function skip(ticks, newTicks, spacing, majorStart, majorEnd) { - const start = valueOrDefault(majorStart, 0); - const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length); - let count = 0; - let length, i, next; - spacing = Math.ceil(spacing); - if (majorEnd) { - length = majorEnd - majorStart; - spacing = length / Math.floor(length / spacing); - } - next = start; - while (next < 0) { - count++; - next = Math.round(start + count * spacing); - } - for (i = Math.max(start, 0); i < end; i++) { - if (i === next) { - newTicks.push(ticks[i]); - count++; - next = Math.round(start + count * spacing); - } - } -} -function getEvenSpacing(arr) { - const len = arr.length; - let i, diff; - if (len < 2) { - return false; - } - for (diff = arr[0], i = 1; i < len; ++i) { - if (arr[i] - arr[i - 1] !== diff) { - return false; - } - } - return diff; -} -var reverseAlign = (align) => align === "left" ? "right" : align === "right" ? "left" : align; -var offsetFromEdge = (scale, edge, offset) => edge === "top" || edge === "left" ? scale[edge] + offset : scale[edge] - offset; -var getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength); -function sample(arr, numItems) { - const result = []; - const increment = arr.length / numItems; - const len = arr.length; - let i = 0; - for (; i < len; i += increment) { - result.push(arr[Math.floor(i)]); - } - return result; -} -function getPixelForGridLine(scale, index2, offsetGridLines) { - const length = scale.ticks.length; - const validIndex2 = Math.min(index2, length - 1); - const start = scale._startPixel; - const end = scale._endPixel; - const epsilon = 1e-6; - let lineValue = scale.getPixelForTick(validIndex2); - let offset; - if (offsetGridLines) { - if (length === 1) { - offset = Math.max(lineValue - start, end - lineValue); - } else if (index2 === 0) { - offset = (scale.getPixelForTick(1) - lineValue) / 2; - } else { - offset = (lineValue - scale.getPixelForTick(validIndex2 - 1)) / 2; - } - lineValue += validIndex2 < index2 ? offset : -offset; - if (lineValue < start - epsilon || lineValue > end + epsilon) { - return; - } - } - return lineValue; -} -function garbageCollect(caches, length) { - each(caches, (cache) => { - const gc = cache.gc; - const gcLen = gc.length / 2; - let i; - if (gcLen > length) { - for (i = 0; i < gcLen; ++i) { - delete cache.data[gc[i]]; - } - gc.splice(0, gcLen); - } - }); -} -function getTickMarkLength(options) { - return options.drawTicks ? options.tickLength : 0; -} -function getTitleHeight(options, fallback) { - if (!options.display) { - return 0; - } - const font = toFont(options.font, fallback); - const padding = toPadding(options.padding); - const lines = isArray(options.text) ? options.text.length : 1; - return lines * font.lineHeight + padding.height; -} -function createScaleContext(parent, scale) { - return createContext(parent, { - scale, - type: "scale" - }); -} -function createTickContext(parent, index2, tick) { - return createContext(parent, { - tick, - index: index2, - type: "tick" - }); -} -function titleAlign(align, position, reverse) { - let ret = _toLeftRightCenter(align); - if (reverse && position !== "right" || !reverse && position === "right") { - ret = reverseAlign(ret); - } - return ret; -} -function titleArgs(scale, offset, position, align) { - const { top, left, bottom, right, chart } = scale; - const { chartArea, scales: scales2 } = chart; - let rotation = 0; - let maxWidth, titleX, titleY; - const height = bottom - top; - const width = right - left; - if (scale.isHorizontal()) { - titleX = _alignStartEnd(align, left, right); - if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - titleY = scales2[positionAxisID].getPixelForValue(value) + height - offset; - } else if (position === "center") { - titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset; - } else { - titleY = offsetFromEdge(scale, position, offset); - } - maxWidth = right - left; - } else { - if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - titleX = scales2[positionAxisID].getPixelForValue(value) - width + offset; - } else if (position === "center") { - titleX = (chartArea.left + chartArea.right) / 2 - width + offset; - } else { - titleX = offsetFromEdge(scale, position, offset); - } - titleY = _alignStartEnd(align, bottom, top); - rotation = position === "left" ? -HALF_PI : HALF_PI; - } - return { - titleX, - titleY, - maxWidth, - rotation - }; -} -var Scale = class _Scale extends Element { - constructor(cfg) { - super(); - this.id = cfg.id; - this.type = cfg.type; - this.options = void 0; - this.ctx = cfg.ctx; - this.chart = cfg.chart; - this.top = void 0; - this.bottom = void 0; - this.left = void 0; - this.right = void 0; - this.width = void 0; - this.height = void 0; - this._margins = { - left: 0, - right: 0, - top: 0, - bottom: 0 - }; - this.maxWidth = void 0; - this.maxHeight = void 0; - this.paddingTop = void 0; - this.paddingBottom = void 0; - this.paddingLeft = void 0; - this.paddingRight = void 0; - this.axis = void 0; - this.labelRotation = void 0; - this.min = void 0; - this.max = void 0; - this._range = void 0; - this.ticks = []; - this._gridLineItems = null; - this._labelItems = null; - this._labelSizes = null; - this._length = 0; - this._maxLength = 0; - this._longestTextCache = {}; - this._startPixel = void 0; - this._endPixel = void 0; - this._reversePixels = false; - this._userMax = void 0; - this._userMin = void 0; - this._suggestedMax = void 0; - this._suggestedMin = void 0; - this._ticksLength = 0; - this._borderValue = 0; - this._cache = {}; - this._dataLimitsCached = false; - this.$context = void 0; - } - init(options) { - this.options = options.setContext(this.getContext()); - this.axis = options.axis; - this._userMin = this.parse(options.min); - this._userMax = this.parse(options.max); - this._suggestedMin = this.parse(options.suggestedMin); - this._suggestedMax = this.parse(options.suggestedMax); - } - parse(raw, index2) { - return raw; - } - getUserBounds() { - let { _userMin, _userMax, _suggestedMin, _suggestedMax } = this; - _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY); - _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY); - _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY); - _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY); - return { - min: finiteOrDefault(_userMin, _suggestedMin), - max: finiteOrDefault(_userMax, _suggestedMax), - minDefined: isNumberFinite(_userMin), - maxDefined: isNumberFinite(_userMax) - }; - } - getMinMax(canStack) { - let { min, max, minDefined, maxDefined } = this.getUserBounds(); - let range; - if (minDefined && maxDefined) { - return { - min, - max - }; - } - const metas = this.getMatchingVisibleMetas(); - for (let i = 0, ilen = metas.length; i < ilen; ++i) { - range = metas[i].controller.getMinMax(this, canStack); - if (!minDefined) { - min = Math.min(min, range.min); - } - if (!maxDefined) { - max = Math.max(max, range.max); - } - } - min = maxDefined && min > max ? max : min; - max = minDefined && min > max ? min : max; - return { - min: finiteOrDefault(min, finiteOrDefault(max, min)), - max: finiteOrDefault(max, finiteOrDefault(min, max)) - }; - } - getPadding() { - return { - left: this.paddingLeft || 0, - top: this.paddingTop || 0, - right: this.paddingRight || 0, - bottom: this.paddingBottom || 0 - }; - } - getTicks() { - return this.ticks; - } - getLabels() { - const data = this.chart.data; - return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || []; - } - getLabelItems(chartArea = this.chart.chartArea) { - const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea)); - return items; - } - beforeLayout() { - this._cache = {}; - this._dataLimitsCached = false; - } - beforeUpdate() { - callback(this.options.beforeUpdate, [ - this - ]); - } - update(maxWidth, maxHeight, margins) { - const { beginAtZero, grace, ticks: tickOpts } = this.options; - const sampleSize = tickOpts.sampleSize; - this.beforeUpdate(); - this.maxWidth = maxWidth; - this.maxHeight = maxHeight; - this._margins = margins = Object.assign({ - left: 0, - right: 0, - top: 0, - bottom: 0 - }, margins); - this.ticks = null; - this._labelSizes = null; - this._gridLineItems = null; - this._labelItems = null; - this.beforeSetDimensions(); - this.setDimensions(); - this.afterSetDimensions(); - this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom; - if (!this._dataLimitsCached) { - this.beforeDataLimits(); - this.determineDataLimits(); - this.afterDataLimits(); - this._range = _addGrace(this, grace, beginAtZero); - this._dataLimitsCached = true; - } - this.beforeBuildTicks(); - this.ticks = this.buildTicks() || []; - this.afterBuildTicks(); - const samplingEnabled = sampleSize < this.ticks.length; - this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks); - this.configure(); - this.beforeCalculateLabelRotation(); - this.calculateLabelRotation(); - this.afterCalculateLabelRotation(); - if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === "auto")) { - this.ticks = autoSkip(this, this.ticks); - this._labelSizes = null; - this.afterAutoSkip(); - } - if (samplingEnabled) { - this._convertTicksToLabels(this.ticks); - } - this.beforeFit(); - this.fit(); - this.afterFit(); - this.afterUpdate(); - } - configure() { - let reversePixels = this.options.reverse; - let startPixel, endPixel; - if (this.isHorizontal()) { - startPixel = this.left; - endPixel = this.right; - } else { - startPixel = this.top; - endPixel = this.bottom; - reversePixels = !reversePixels; - } - this._startPixel = startPixel; - this._endPixel = endPixel; - this._reversePixels = reversePixels; - this._length = endPixel - startPixel; - this._alignToPixels = this.options.alignToPixels; - } - afterUpdate() { - callback(this.options.afterUpdate, [ - this - ]); - } - beforeSetDimensions() { - callback(this.options.beforeSetDimensions, [ - this - ]); - } - setDimensions() { - if (this.isHorizontal()) { - this.width = this.maxWidth; - this.left = 0; - this.right = this.width; - } else { - this.height = this.maxHeight; - this.top = 0; - this.bottom = this.height; - } - this.paddingLeft = 0; - this.paddingTop = 0; - this.paddingRight = 0; - this.paddingBottom = 0; - } - afterSetDimensions() { - callback(this.options.afterSetDimensions, [ - this - ]); - } - _callHooks(name) { - this.chart.notifyPlugins(name, this.getContext()); - callback(this.options[name], [ - this - ]); - } - beforeDataLimits() { - this._callHooks("beforeDataLimits"); - } - determineDataLimits() { - } - afterDataLimits() { - this._callHooks("afterDataLimits"); - } - beforeBuildTicks() { - this._callHooks("beforeBuildTicks"); - } - buildTicks() { - return []; - } - afterBuildTicks() { - this._callHooks("afterBuildTicks"); - } - beforeTickToLabelConversion() { - callback(this.options.beforeTickToLabelConversion, [ - this - ]); - } - generateTickLabels(ticks) { - const tickOpts = this.options.ticks; - let i, ilen, tick; - for (i = 0, ilen = ticks.length; i < ilen; i++) { - tick = ticks[i]; - tick.label = callback(tickOpts.callback, [ - tick.value, - i, - ticks - ], this); - } - } - afterTickToLabelConversion() { - callback(this.options.afterTickToLabelConversion, [ - this - ]); - } - beforeCalculateLabelRotation() { - callback(this.options.beforeCalculateLabelRotation, [ - this - ]); - } - calculateLabelRotation() { - const options = this.options; - const tickOpts = options.ticks; - const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit); - const minRotation = tickOpts.minRotation || 0; - const maxRotation = tickOpts.maxRotation; - let labelRotation = minRotation; - let tickWidth, maxHeight, maxLabelDiagonal; - if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) { - this.labelRotation = minRotation; - return; - } - const labelSizes = this._getLabelSizes(); - const maxLabelWidth = labelSizes.widest.width; - const maxLabelHeight = labelSizes.highest.height; - const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth); - tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1); - if (maxLabelWidth + 6 > tickWidth) { - tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1)); - maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font); - maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight); - labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1)))); - labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation)); - } - this.labelRotation = labelRotation; - } - afterCalculateLabelRotation() { - callback(this.options.afterCalculateLabelRotation, [ - this - ]); - } - afterAutoSkip() { - } - beforeFit() { - callback(this.options.beforeFit, [ - this - ]); - } - fit() { - const minSize = { - width: 0, - height: 0 - }; - const { chart, options: { ticks: tickOpts, title: titleOpts, grid: gridOpts } } = this; - const display = this._isVisible(); - const isHorizontal = this.isHorizontal(); - if (display) { - const titleHeight = getTitleHeight(titleOpts, chart.options.font); - if (isHorizontal) { - minSize.width = this.maxWidth; - minSize.height = getTickMarkLength(gridOpts) + titleHeight; - } else { - minSize.height = this.maxHeight; - minSize.width = getTickMarkLength(gridOpts) + titleHeight; - } - if (tickOpts.display && this.ticks.length) { - const { first, last, widest, highest } = this._getLabelSizes(); - const tickPadding = tickOpts.padding * 2; - const angleRadians = toRadians(this.labelRotation); - const cos = Math.cos(angleRadians); - const sin = Math.sin(angleRadians); - if (isHorizontal) { - const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height; - minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding); - } else { - const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height; - minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding); - } - this._calculatePadding(first, last, sin, cos); - } - } - this._handleMargins(); - if (isHorizontal) { - this.width = this._length = chart.width - this._margins.left - this._margins.right; - this.height = minSize.height; - } else { - this.width = minSize.width; - this.height = this._length = chart.height - this._margins.top - this._margins.bottom; - } - } - _calculatePadding(first, last, sin, cos) { - const { ticks: { align, padding }, position } = this.options; - const isRotated = this.labelRotation !== 0; - const labelsBelowTicks = position !== "top" && this.axis === "x"; - if (this.isHorizontal()) { - const offsetLeft = this.getPixelForTick(0) - this.left; - const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1); - let paddingLeft = 0; - let paddingRight = 0; - if (isRotated) { - if (labelsBelowTicks) { - paddingLeft = cos * first.width; - paddingRight = sin * last.height; - } else { - paddingLeft = sin * first.height; - paddingRight = cos * last.width; - } - } else if (align === "start") { - paddingRight = last.width; - } else if (align === "end") { - paddingLeft = first.width; - } else if (align !== "inner") { - paddingLeft = first.width / 2; - paddingRight = last.width / 2; - } - this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0); - this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0); - } else { - let paddingTop = last.height / 2; - let paddingBottom = first.height / 2; - if (align === "start") { - paddingTop = 0; - paddingBottom = first.height; - } else if (align === "end") { - paddingTop = last.height; - paddingBottom = 0; - } - this.paddingTop = paddingTop + padding; - this.paddingBottom = paddingBottom + padding; - } - } - _handleMargins() { - if (this._margins) { - this._margins.left = Math.max(this.paddingLeft, this._margins.left); - this._margins.top = Math.max(this.paddingTop, this._margins.top); - this._margins.right = Math.max(this.paddingRight, this._margins.right); - this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom); - } - } - afterFit() { - callback(this.options.afterFit, [ - this - ]); - } - isHorizontal() { - const { axis, position } = this.options; - return position === "top" || position === "bottom" || axis === "x"; - } - isFullSize() { - return this.options.fullSize; - } - _convertTicksToLabels(ticks) { - this.beforeTickToLabelConversion(); - this.generateTickLabels(ticks); - let i, ilen; - for (i = 0, ilen = ticks.length; i < ilen; i++) { - if (isNullOrUndef(ticks[i].label)) { - ticks.splice(i, 1); - ilen--; - i--; - } - } - this.afterTickToLabelConversion(); - } - _getLabelSizes() { - let labelSizes = this._labelSizes; - if (!labelSizes) { - const sampleSize = this.options.ticks.sampleSize; - let ticks = this.ticks; - if (sampleSize < ticks.length) { - ticks = sample(ticks, sampleSize); - } - this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit); - } - return labelSizes; - } - _computeLabelSizes(ticks, length, maxTicksLimit) { - const { ctx, _longestTextCache: caches } = this; - const widths = []; - const heights = []; - const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit)); - let widestLabelSize = 0; - let highestLabelSize = 0; - let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel; - for (i = 0; i < length; i += increment) { - label = ticks[i].label; - tickFont = this._resolveTickFontOptions(i); - ctx.font = fontString = tickFont.string; - cache = caches[fontString] = caches[fontString] || { - data: {}, - gc: [] - }; - lineHeight = tickFont.lineHeight; - width = height = 0; - if (!isNullOrUndef(label) && !isArray(label)) { - width = _measureText(ctx, cache.data, cache.gc, width, label); - height = lineHeight; - } else if (isArray(label)) { - for (j = 0, jlen = label.length; j < jlen; ++j) { - nestedLabel = label[j]; - if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) { - width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel); - height += lineHeight; - } - } - } - widths.push(width); - heights.push(height); - widestLabelSize = Math.max(width, widestLabelSize); - highestLabelSize = Math.max(height, highestLabelSize); - } - garbageCollect(caches, length); - const widest = widths.indexOf(widestLabelSize); - const highest = heights.indexOf(highestLabelSize); - const valueAt = (idx) => ({ - width: widths[idx] || 0, - height: heights[idx] || 0 - }); - return { - first: valueAt(0), - last: valueAt(length - 1), - widest: valueAt(widest), - highest: valueAt(highest), - widths, - heights - }; - } - getLabelForValue(value) { - return value; - } - getPixelForValue(value, index2) { - return NaN; - } - getValueForPixel(pixel) { - } - getPixelForTick(index2) { - const ticks = this.ticks; - if (index2 < 0 || index2 > ticks.length - 1) { - return null; - } - return this.getPixelForValue(ticks[index2].value); - } - getPixelForDecimal(decimal) { - if (this._reversePixels) { - decimal = 1 - decimal; - } - const pixel = this._startPixel + decimal * this._length; - return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel); - } - getDecimalForPixel(pixel) { - const decimal = (pixel - this._startPixel) / this._length; - return this._reversePixels ? 1 - decimal : decimal; - } - getBasePixel() { - return this.getPixelForValue(this.getBaseValue()); - } - getBaseValue() { - const { min, max } = this; - return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0; - } - getContext(index2) { - const ticks = this.ticks || []; - if (index2 >= 0 && index2 < ticks.length) { - const tick = ticks[index2]; - return tick.$context || (tick.$context = createTickContext(this.getContext(), index2, tick)); - } - return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this)); - } - _tickSize() { - const optionTicks = this.options.ticks; - const rot = toRadians(this.labelRotation); - const cos = Math.abs(Math.cos(rot)); - const sin = Math.abs(Math.sin(rot)); - const labelSizes = this._getLabelSizes(); - const padding = optionTicks.autoSkipPadding || 0; - const w = labelSizes ? labelSizes.widest.width + padding : 0; - const h = labelSizes ? labelSizes.highest.height + padding : 0; - return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin; - } - _isVisible() { - const display = this.options.display; - if (display !== "auto") { - return !!display; - } - return this.getMatchingVisibleMetas().length > 0; - } - _computeGridLineItems(chartArea) { - const axis = this.axis; - const chart = this.chart; - const options = this.options; - const { grid, position, border } = options; - const offset = grid.offset; - const isHorizontal = this.isHorizontal(); - const ticks = this.ticks; - const ticksLength = ticks.length + (offset ? 1 : 0); - const tl = getTickMarkLength(grid); - const items = []; - const borderOpts = border.setContext(this.getContext()); - const axisWidth = borderOpts.display ? borderOpts.width : 0; - const axisHalfWidth = axisWidth / 2; - const alignBorderValue = function(pixel) { - return _alignPixel(chart, pixel, axisWidth); - }; - let borderValue, i, lineValue, alignedLineValue; - let tx1, ty1, tx2, ty2, x1, y1, x2, y2; - if (position === "top") { - borderValue = alignBorderValue(this.bottom); - ty1 = this.bottom - tl; - ty2 = borderValue - axisHalfWidth; - y1 = alignBorderValue(chartArea.top) + axisHalfWidth; - y2 = chartArea.bottom; - } else if (position === "bottom") { - borderValue = alignBorderValue(this.top); - y1 = chartArea.top; - y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth; - ty1 = borderValue + axisHalfWidth; - ty2 = this.top + tl; - } else if (position === "left") { - borderValue = alignBorderValue(this.right); - tx1 = this.right - tl; - tx2 = borderValue - axisHalfWidth; - x1 = alignBorderValue(chartArea.left) + axisHalfWidth; - x2 = chartArea.right; - } else if (position === "right") { - borderValue = alignBorderValue(this.left); - x1 = chartArea.left; - x2 = alignBorderValue(chartArea.right) - axisHalfWidth; - tx1 = borderValue + axisHalfWidth; - tx2 = this.left + tl; - } else if (axis === "x") { - if (position === "center") { - borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5); - } else if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); - } - y1 = chartArea.top; - y2 = chartArea.bottom; - ty1 = borderValue + axisHalfWidth; - ty2 = ty1 + tl; - } else if (axis === "y") { - if (position === "center") { - borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2); - } else if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value)); - } - tx1 = borderValue - axisHalfWidth; - tx2 = tx1 - tl; - x1 = chartArea.left; - x2 = chartArea.right; - } - const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength); - const step = Math.max(1, Math.ceil(ticksLength / limit)); - for (i = 0; i < ticksLength; i += step) { - const context = this.getContext(i); - const optsAtIndex = grid.setContext(context); - const optsAtIndexBorder = border.setContext(context); - const lineWidth = optsAtIndex.lineWidth; - const lineColor = optsAtIndex.color; - const borderDash = optsAtIndexBorder.dash || []; - const borderDashOffset = optsAtIndexBorder.dashOffset; - const tickWidth = optsAtIndex.tickWidth; - const tickColor = optsAtIndex.tickColor; - const tickBorderDash = optsAtIndex.tickBorderDash || []; - const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset; - lineValue = getPixelForGridLine(this, i, offset); - if (lineValue === void 0) { - continue; - } - alignedLineValue = _alignPixel(chart, lineValue, lineWidth); - if (isHorizontal) { - tx1 = tx2 = x1 = x2 = alignedLineValue; - } else { - ty1 = ty2 = y1 = y2 = alignedLineValue; - } - items.push({ - tx1, - ty1, - tx2, - ty2, - x1, - y1, - x2, - y2, - width: lineWidth, - color: lineColor, - borderDash, - borderDashOffset, - tickWidth, - tickColor, - tickBorderDash, - tickBorderDashOffset - }); - } - this._ticksLength = ticksLength; - this._borderValue = borderValue; - return items; - } - _computeLabelItems(chartArea) { - const axis = this.axis; - const options = this.options; - const { position, ticks: optionTicks } = options; - const isHorizontal = this.isHorizontal(); - const ticks = this.ticks; - const { align, crossAlign, padding, mirror } = optionTicks; - const tl = getTickMarkLength(options.grid); - const tickAndPadding = tl + padding; - const hTickAndPadding = mirror ? -padding : tickAndPadding; - const rotation = -toRadians(this.labelRotation); - const items = []; - let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; - let textBaseline = "middle"; - if (position === "top") { - y = this.bottom - hTickAndPadding; - textAlign = this._getXAxisLabelAlignment(); - } else if (position === "bottom") { - y = this.top + hTickAndPadding; - textAlign = this._getXAxisLabelAlignment(); - } else if (position === "left") { - const ret = this._getYAxisLabelAlignment(tl); - textAlign = ret.textAlign; - x = ret.x; - } else if (position === "right") { - const ret = this._getYAxisLabelAlignment(tl); - textAlign = ret.textAlign; - x = ret.x; - } else if (axis === "x") { - if (position === "center") { - y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding; - } else if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; - } - textAlign = this._getXAxisLabelAlignment(); - } else if (axis === "y") { - if (position === "center") { - x = (chartArea.left + chartArea.right) / 2 - tickAndPadding; - } else if (isObject(position)) { - const positionAxisID = Object.keys(position)[0]; - const value = position[positionAxisID]; - x = this.chart.scales[positionAxisID].getPixelForValue(value); - } - textAlign = this._getYAxisLabelAlignment(tl).textAlign; - } - if (axis === "y") { - if (align === "start") { - textBaseline = "top"; - } else if (align === "end") { - textBaseline = "bottom"; - } - } - const labelSizes = this._getLabelSizes(); - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - tick = ticks[i]; - label = tick.label; - const optsAtIndex = optionTicks.setContext(this.getContext(i)); - pixel = this.getPixelForTick(i) + optionTicks.labelOffset; - font = this._resolveTickFontOptions(i); - lineHeight = font.lineHeight; - lineCount = isArray(label) ? label.length : 1; - const halfCount = lineCount / 2; - const color2 = optsAtIndex.color; - const strokeColor = optsAtIndex.textStrokeColor; - const strokeWidth = optsAtIndex.textStrokeWidth; - let tickTextAlign = textAlign; - if (isHorizontal) { - x = pixel; - if (textAlign === "inner") { - if (i === ilen - 1) { - tickTextAlign = !this.options.reverse ? "right" : "left"; - } else if (i === 0) { - tickTextAlign = !this.options.reverse ? "left" : "right"; - } else { - tickTextAlign = "center"; - } - } - if (position === "top") { - if (crossAlign === "near" || rotation !== 0) { - textOffset = -lineCount * lineHeight + lineHeight / 2; - } else if (crossAlign === "center") { - textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight; - } else { - textOffset = -labelSizes.highest.height + lineHeight / 2; - } - } else { - if (crossAlign === "near" || rotation !== 0) { - textOffset = lineHeight / 2; - } else if (crossAlign === "center") { - textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight; - } else { - textOffset = labelSizes.highest.height - lineCount * lineHeight; - } - } - if (mirror) { - textOffset *= -1; - } - if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) { - x += lineHeight / 2 * Math.sin(rotation); - } - } else { - y = pixel; - textOffset = (1 - lineCount) * lineHeight / 2; - } - let backdrop; - if (optsAtIndex.showLabelBackdrop) { - const labelPadding = toPadding(optsAtIndex.backdropPadding); - const height = labelSizes.heights[i]; - const width = labelSizes.widths[i]; - let top = textOffset - labelPadding.top; - let left = 0 - labelPadding.left; - switch (textBaseline) { - case "middle": - top -= height / 2; - break; - case "bottom": - top -= height; - break; - } - switch (textAlign) { - case "center": - left -= width / 2; - break; - case "right": - left -= width; - break; - case "inner": - if (i === ilen - 1) { - left -= width; - } else if (i > 0) { - left -= width / 2; - } - break; - } - backdrop = { - left, - top, - width: width + labelPadding.width, - height: height + labelPadding.height, - color: optsAtIndex.backdropColor - }; - } - items.push({ - label, - font, - textOffset, - options: { - rotation, - color: color2, - strokeColor, - strokeWidth, - textAlign: tickTextAlign, - textBaseline, - translation: [ - x, - y - ], - backdrop - } - }); - } - return items; - } - _getXAxisLabelAlignment() { - const { position, ticks } = this.options; - const rotation = -toRadians(this.labelRotation); - if (rotation) { - return position === "top" ? "left" : "right"; - } - let align = "center"; - if (ticks.align === "start") { - align = "left"; - } else if (ticks.align === "end") { - align = "right"; - } else if (ticks.align === "inner") { - align = "inner"; - } - return align; - } - _getYAxisLabelAlignment(tl) { - const { position, ticks: { crossAlign, mirror, padding } } = this.options; - const labelSizes = this._getLabelSizes(); - const tickAndPadding = tl + padding; - const widest = labelSizes.widest.width; - let textAlign; - let x; - if (position === "left") { - if (mirror) { - x = this.right + padding; - if (crossAlign === "near") { - textAlign = "left"; - } else if (crossAlign === "center") { - textAlign = "center"; - x += widest / 2; - } else { - textAlign = "right"; - x += widest; - } - } else { - x = this.right - tickAndPadding; - if (crossAlign === "near") { - textAlign = "right"; - } else if (crossAlign === "center") { - textAlign = "center"; - x -= widest / 2; - } else { - textAlign = "left"; - x = this.left; - } - } - } else if (position === "right") { - if (mirror) { - x = this.left + padding; - if (crossAlign === "near") { - textAlign = "right"; - } else if (crossAlign === "center") { - textAlign = "center"; - x -= widest / 2; - } else { - textAlign = "left"; - x -= widest; - } - } else { - x = this.left + tickAndPadding; - if (crossAlign === "near") { - textAlign = "left"; - } else if (crossAlign === "center") { - textAlign = "center"; - x += widest / 2; - } else { - textAlign = "right"; - x = this.right; - } - } - } else { - textAlign = "right"; - } - return { - textAlign, - x - }; - } - _computeLabelArea() { - if (this.options.ticks.mirror) { - return; - } - const chart = this.chart; - const position = this.options.position; - if (position === "left" || position === "right") { - return { - top: 0, - left: this.left, - bottom: chart.height, - right: this.right - }; - } - if (position === "top" || position === "bottom") { - return { - top: this.top, - left: 0, - bottom: this.bottom, - right: chart.width - }; - } - } - drawBackground() { - const { ctx, options: { backgroundColor }, left, top, width, height } = this; - if (backgroundColor) { - ctx.save(); - ctx.fillStyle = backgroundColor; - ctx.fillRect(left, top, width, height); - ctx.restore(); - } - } - getLineWidthForValue(value) { - const grid = this.options.grid; - if (!this._isVisible() || !grid.display) { - return 0; - } - const ticks = this.ticks; - const index2 = ticks.findIndex((t) => t.value === value); - if (index2 >= 0) { - const opts = grid.setContext(this.getContext(index2)); - return opts.lineWidth; - } - return 0; - } - drawGrid(chartArea) { - const grid = this.options.grid; - const ctx = this.ctx; - const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea)); - let i, ilen; - const drawLine = (p1, p2, style) => { - if (!style.width || !style.color) { - return; - } - ctx.save(); - ctx.lineWidth = style.width; - ctx.strokeStyle = style.color; - ctx.setLineDash(style.borderDash || []); - ctx.lineDashOffset = style.borderDashOffset; - ctx.beginPath(); - ctx.moveTo(p1.x, p1.y); - ctx.lineTo(p2.x, p2.y); - ctx.stroke(); - ctx.restore(); - }; - if (grid.display) { - for (i = 0, ilen = items.length; i < ilen; ++i) { - const item = items[i]; - if (grid.drawOnChartArea) { - drawLine({ - x: item.x1, - y: item.y1 - }, { - x: item.x2, - y: item.y2 - }, item); - } - if (grid.drawTicks) { - drawLine({ - x: item.tx1, - y: item.ty1 - }, { - x: item.tx2, - y: item.ty2 - }, { - color: item.tickColor, - width: item.tickWidth, - borderDash: item.tickBorderDash, - borderDashOffset: item.tickBorderDashOffset - }); - } - } - } - } - drawBorder() { - const { chart, ctx, options: { border, grid } } = this; - const borderOpts = border.setContext(this.getContext()); - const axisWidth = border.display ? borderOpts.width : 0; - if (!axisWidth) { - return; - } - const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth; - const borderValue = this._borderValue; - let x1, x2, y1, y2; - if (this.isHorizontal()) { - x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2; - x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2; - y1 = y2 = borderValue; - } else { - y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2; - y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2; - x1 = x2 = borderValue; - } - ctx.save(); - ctx.lineWidth = borderOpts.width; - ctx.strokeStyle = borderOpts.color; - ctx.beginPath(); - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.stroke(); - ctx.restore(); - } - drawLabels(chartArea) { - const optionTicks = this.options.ticks; - if (!optionTicks.display) { - return; - } - const ctx = this.ctx; - const area = this._computeLabelArea(); - if (area) { - clipArea(ctx, area); - } - const items = this.getLabelItems(chartArea); - for (const item of items) { - const renderTextOptions = item.options; - const tickFont = item.font; - const label = item.label; - const y = item.textOffset; - renderText(ctx, label, 0, y, tickFont, renderTextOptions); - } - if (area) { - unclipArea(ctx); - } - } - drawTitle() { - const { ctx, options: { position, title, reverse } } = this; - if (!title.display) { - return; - } - const font = toFont(title.font); - const padding = toPadding(title.padding); - const align = title.align; - let offset = font.lineHeight / 2; - if (position === "bottom" || position === "center" || isObject(position)) { - offset += padding.bottom; - if (isArray(title.text)) { - offset += font.lineHeight * (title.text.length - 1); - } - } else { - offset += padding.top; - } - const { titleX, titleY, maxWidth, rotation } = titleArgs(this, offset, position, align); - renderText(ctx, title.text, 0, 0, font, { - color: title.color, - maxWidth, - rotation, - textAlign: titleAlign(align, position, reverse), - textBaseline: "middle", - translation: [ - titleX, - titleY - ] - }); - } - draw(chartArea) { - if (!this._isVisible()) { - return; - } - this.drawBackground(); - this.drawGrid(chartArea); - this.drawBorder(); - this.drawTitle(); - this.drawLabels(chartArea); - } - _layers() { - const opts = this.options; - const tz = opts.ticks && opts.ticks.z || 0; - const gz = valueOrDefault(opts.grid && opts.grid.z, -1); - const bz = valueOrDefault(opts.border && opts.border.z, 0); - if (!this._isVisible() || this.draw !== _Scale.prototype.draw) { - return [ - { - z: tz, - draw: (chartArea) => { - this.draw(chartArea); - } - } - ]; - } - return [ - { - z: gz, - draw: (chartArea) => { - this.drawBackground(); - this.drawGrid(chartArea); - this.drawTitle(); - } - }, - { - z: bz, - draw: () => { - this.drawBorder(); - } - }, - { - z: tz, - draw: (chartArea) => { - this.drawLabels(chartArea); - } - } - ]; - } - getMatchingVisibleMetas(type) { - const metas = this.chart.getSortedVisibleDatasetMetas(); - const axisID = this.axis + "AxisID"; - const result = []; - let i, ilen; - for (i = 0, ilen = metas.length; i < ilen; ++i) { - const meta = metas[i]; - if (meta[axisID] === this.id && (!type || meta.type === type)) { - result.push(meta); - } - } - return result; - } - _resolveTickFontOptions(index2) { - const opts = this.options.ticks.setContext(this.getContext(index2)); - return toFont(opts.font); - } - _maxDigits() { - const fontSize = this._resolveTickFontOptions(0).lineHeight; - return (this.isHorizontal() ? this.width : this.height) / fontSize; - } -}; -var TypedRegistry = class { - constructor(type, scope, override) { - this.type = type; - this.scope = scope; - this.override = override; - this.items = /* @__PURE__ */ Object.create(null); - } - isForType(type) { - return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype); - } - register(item) { - const proto = Object.getPrototypeOf(item); - let parentScope; - if (isIChartComponent(proto)) { - parentScope = this.register(proto); - } - const items = this.items; - const id = item.id; - const scope = this.scope + "." + id; - if (!id) { - throw new Error("class does not have id: " + item); - } - if (id in items) { - return scope; - } - items[id] = item; - registerDefaults(item, scope, parentScope); - if (this.override) { - defaults.override(item.id, item.overrides); - } - return scope; - } - get(id) { - return this.items[id]; - } - unregister(item) { - const items = this.items; - const id = item.id; - const scope = this.scope; - if (id in items) { - delete items[id]; - } - if (scope && id in defaults[scope]) { - delete defaults[scope][id]; - if (this.override) { - delete overrides[id]; - } - } - } -}; -function registerDefaults(item, scope, parentScope) { - const itemDefaults = merge(/* @__PURE__ */ Object.create(null), [ - parentScope ? defaults.get(parentScope) : {}, - defaults.get(scope), - item.defaults - ]); - defaults.set(scope, itemDefaults); - if (item.defaultRoutes) { - routeDefaults(scope, item.defaultRoutes); - } - if (item.descriptors) { - defaults.describe(scope, item.descriptors); - } -} -function routeDefaults(scope, routes) { - Object.keys(routes).forEach((property) => { - const propertyParts = property.split("."); - const sourceName = propertyParts.pop(); - const sourceScope = [ - scope - ].concat(propertyParts).join("."); - const parts = routes[property].split("."); - const targetName = parts.pop(); - const targetScope = parts.join("."); - defaults.route(sourceScope, sourceName, targetScope, targetName); - }); -} -function isIChartComponent(proto) { - return "id" in proto && "defaults" in proto; -} -var Registry = class { - constructor() { - this.controllers = new TypedRegistry(DatasetController, "datasets", true); - this.elements = new TypedRegistry(Element, "elements"); - this.plugins = new TypedRegistry(Object, "plugins"); - this.scales = new TypedRegistry(Scale, "scales"); - this._typedRegistries = [ - this.controllers, - this.scales, - this.elements - ]; - } - add(...args) { - this._each("register", args); - } - remove(...args) { - this._each("unregister", args); - } - addControllers(...args) { - this._each("register", args, this.controllers); - } - addElements(...args) { - this._each("register", args, this.elements); - } - addPlugins(...args) { - this._each("register", args, this.plugins); - } - addScales(...args) { - this._each("register", args, this.scales); - } - getController(id) { - return this._get(id, this.controllers, "controller"); - } - getElement(id) { - return this._get(id, this.elements, "element"); - } - getPlugin(id) { - return this._get(id, this.plugins, "plugin"); - } - getScale(id) { - return this._get(id, this.scales, "scale"); - } - removeControllers(...args) { - this._each("unregister", args, this.controllers); - } - removeElements(...args) { - this._each("unregister", args, this.elements); - } - removePlugins(...args) { - this._each("unregister", args, this.plugins); - } - removeScales(...args) { - this._each("unregister", args, this.scales); - } - _each(method, args, typedRegistry) { - [ - ...args - ].forEach((arg) => { - const reg = typedRegistry || this._getRegistryForType(arg); - if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) { - this._exec(method, reg, arg); - } else { - each(arg, (item) => { - const itemReg = typedRegistry || this._getRegistryForType(item); - this._exec(method, itemReg, item); - }); - } - }); - } - _exec(method, registry2, component) { - const camelMethod = _capitalize(method); - callback(component["before" + camelMethod], [], component); - registry2[method](component); - callback(component["after" + camelMethod], [], component); - } - _getRegistryForType(type) { - for (let i = 0; i < this._typedRegistries.length; i++) { - const reg = this._typedRegistries[i]; - if (reg.isForType(type)) { - return reg; - } - } - return this.plugins; - } - _get(id, typedRegistry, type) { - const item = typedRegistry.get(id); - if (item === void 0) { - throw new Error('"' + id + '" is not a registered ' + type + "."); - } - return item; - } -}; -var registry = new Registry(); -var PluginService = class { - constructor() { - this._init = []; - } - notify(chart, hook, args, filter) { - if (hook === "beforeInit") { - this._init = this._createDescriptors(chart, true); - this._notify(this._init, chart, "install"); - } - const descriptors2 = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart); - const result = this._notify(descriptors2, chart, hook, args); - if (hook === "afterDestroy") { - this._notify(descriptors2, chart, "stop"); - this._notify(this._init, chart, "uninstall"); - } - return result; - } - _notify(descriptors2, chart, hook, args) { - args = args || {}; - for (const descriptor of descriptors2) { - const plugin = descriptor.plugin; - const method = plugin[hook]; - const params = [ - chart, - args, - descriptor.options - ]; - if (callback(method, params, plugin) === false && args.cancelable) { - return false; - } - } - return true; - } - invalidate() { - if (!isNullOrUndef(this._cache)) { - this._oldCache = this._cache; - this._cache = void 0; - } - } - _descriptors(chart) { - if (this._cache) { - return this._cache; - } - const descriptors2 = this._cache = this._createDescriptors(chart); - this._notifyStateChanges(chart); - return descriptors2; - } - _createDescriptors(chart, all) { - const config = chart && chart.config; - const options = valueOrDefault(config.options && config.options.plugins, {}); - const plugins2 = allPlugins(config); - return options === false && !all ? [] : createDescriptors(chart, plugins2, options, all); - } - _notifyStateChanges(chart) { - const previousDescriptors = this._oldCache || []; - const descriptors2 = this._cache; - const diff = (a, b) => a.filter((x) => !b.some((y) => x.plugin.id === y.plugin.id)); - this._notify(diff(previousDescriptors, descriptors2), chart, "stop"); - this._notify(diff(descriptors2, previousDescriptors), chart, "start"); - } -}; -function allPlugins(config) { - const localIds = {}; - const plugins2 = []; - const keys = Object.keys(registry.plugins.items); - for (let i = 0; i < keys.length; i++) { - plugins2.push(registry.getPlugin(keys[i])); - } - const local = config.plugins || []; - for (let i = 0; i < local.length; i++) { - const plugin = local[i]; - if (plugins2.indexOf(plugin) === -1) { - plugins2.push(plugin); - localIds[plugin.id] = true; - } - } - return { - plugins: plugins2, - localIds - }; -} -function getOpts(options, all) { - if (!all && options === false) { - return null; - } - if (options === true) { - return {}; - } - return options; -} -function createDescriptors(chart, { plugins: plugins2, localIds }, options, all) { - const result = []; - const context = chart.getContext(); - for (const plugin of plugins2) { - const id = plugin.id; - const opts = getOpts(options[id], all); - if (opts === null) { - continue; - } - result.push({ - plugin, - options: pluginOpts(chart.config, { - plugin, - local: localIds[id] - }, opts, context) - }); - } - return result; -} -function pluginOpts(config, { plugin, local }, opts, context) { - const keys = config.pluginScopeKeys(plugin); - const scopes = config.getOptionScopes(opts, keys); - if (local && plugin.defaults) { - scopes.push(plugin.defaults); - } - return config.createResolver(scopes, context, [ - "" - ], { - scriptable: false, - indexable: false, - allKeys: true - }); -} -function getIndexAxis(type, options) { - const datasetDefaults = defaults.datasets[type] || {}; - const datasetOptions = (options.datasets || {})[type] || {}; - return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || "x"; -} -function getAxisFromDefaultScaleID(id, indexAxis) { - let axis = id; - if (id === "_index_") { - axis = indexAxis; - } else if (id === "_value_") { - axis = indexAxis === "x" ? "y" : "x"; - } - return axis; -} -function getDefaultScaleIDFromAxis(axis, indexAxis) { - return axis === indexAxis ? "_index_" : "_value_"; -} -function idMatchesAxis(id) { - if (id === "x" || id === "y" || id === "r") { - return id; - } -} -function axisFromPosition(position) { - if (position === "top" || position === "bottom") { - return "x"; - } - if (position === "left" || position === "right") { - return "y"; - } -} -function determineAxis(id, ...scaleOptions) { - if (idMatchesAxis(id)) { - return id; - } - for (const opts of scaleOptions) { - const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase()); - if (axis) { - return axis; - } - } - throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`); -} -function getAxisFromDataset(id, axis, dataset) { - if (dataset[axis + "AxisID"] === id) { - return { - axis - }; - } -} -function retrieveAxisFromDatasets(id, config) { - if (config.data && config.data.datasets) { - const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id); - if (boundDs.length) { - return getAxisFromDataset(id, "x", boundDs[0]) || getAxisFromDataset(id, "y", boundDs[0]); - } - } - return {}; -} -function mergeScaleConfig(config, options) { - const chartDefaults = overrides[config.type] || { - scales: {} - }; - const configScales = options.scales || {}; - const chartIndexAxis = getIndexAxis(config.type, options); - const scales2 = /* @__PURE__ */ Object.create(null); - Object.keys(configScales).forEach((id) => { - const scaleConf = configScales[id]; - if (!isObject(scaleConf)) { - return console.error(`Invalid scale configuration for scale: ${id}`); - } - if (scaleConf._proxy) { - return console.warn(`Ignoring resolver passed as options for scale: ${id}`); - } - const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]); - const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis); - const defaultScaleOptions = chartDefaults.scales || {}; - scales2[id] = mergeIf(/* @__PURE__ */ Object.create(null), [ - { - axis - }, - scaleConf, - defaultScaleOptions[axis], - defaultScaleOptions[defaultId] - ]); - }); - config.data.datasets.forEach((dataset) => { - const type = dataset.type || config.type; - const indexAxis = dataset.indexAxis || getIndexAxis(type, options); - const datasetDefaults = overrides[type] || {}; - const defaultScaleOptions = datasetDefaults.scales || {}; - Object.keys(defaultScaleOptions).forEach((defaultID) => { - const axis = getAxisFromDefaultScaleID(defaultID, indexAxis); - const id = dataset[axis + "AxisID"] || axis; - scales2[id] = scales2[id] || /* @__PURE__ */ Object.create(null); - mergeIf(scales2[id], [ - { - axis - }, - configScales[id], - defaultScaleOptions[defaultID] - ]); - }); - }); - Object.keys(scales2).forEach((key) => { - const scale = scales2[key]; - mergeIf(scale, [ - defaults.scales[scale.type], - defaults.scale - ]); - }); - return scales2; -} -function initOptions(config) { - const options = config.options || (config.options = {}); - options.plugins = valueOrDefault(options.plugins, {}); - options.scales = mergeScaleConfig(config, options); -} -function initData(data) { - data = data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; - return data; -} -function initConfig(config) { - config = config || {}; - config.data = initData(config.data); - initOptions(config); - return config; -} -var keyCache = /* @__PURE__ */ new Map(); -var keysCached = /* @__PURE__ */ new Set(); -function cachedKeys(cacheKey, generate) { - let keys = keyCache.get(cacheKey); - if (!keys) { - keys = generate(); - keyCache.set(cacheKey, keys); - keysCached.add(keys); - } - return keys; -} -var addIfFound = (set2, obj, key) => { - const opts = resolveObjectKey(obj, key); - if (opts !== void 0) { - set2.add(opts); - } -}; -var Config = class { - constructor(config) { - this._config = initConfig(config); - this._scopeCache = /* @__PURE__ */ new Map(); - this._resolverCache = /* @__PURE__ */ new Map(); - } - get platform() { - return this._config.platform; - } - get type() { - return this._config.type; - } - set type(type) { - this._config.type = type; - } - get data() { - return this._config.data; - } - set data(data) { - this._config.data = initData(data); - } - get options() { - return this._config.options; - } - set options(options) { - this._config.options = options; - } - get plugins() { - return this._config.plugins; - } - update() { - const config = this._config; - this.clearCache(); - initOptions(config); - } - clearCache() { - this._scopeCache.clear(); - this._resolverCache.clear(); - } - datasetScopeKeys(datasetType) { - return cachedKeys(datasetType, () => [ - [ - `datasets.${datasetType}`, - "" - ] - ]); - } - datasetAnimationScopeKeys(datasetType, transition) { - return cachedKeys(`${datasetType}.transition.${transition}`, () => [ - [ - `datasets.${datasetType}.transitions.${transition}`, - `transitions.${transition}` - ], - [ - `datasets.${datasetType}`, - "" - ] - ]); - } - datasetElementScopeKeys(datasetType, elementType) { - return cachedKeys(`${datasetType}-${elementType}`, () => [ - [ - `datasets.${datasetType}.elements.${elementType}`, - `datasets.${datasetType}`, - `elements.${elementType}`, - "" - ] - ]); - } - pluginScopeKeys(plugin) { - const id = plugin.id; - const type = this.type; - return cachedKeys(`${type}-plugin-${id}`, () => [ - [ - `plugins.${id}`, - ...plugin.additionalOptionScopes || [] - ] - ]); - } - _cachedScopes(mainScope, resetCache) { - const _scopeCache = this._scopeCache; - let cache = _scopeCache.get(mainScope); - if (!cache || resetCache) { - cache = /* @__PURE__ */ new Map(); - _scopeCache.set(mainScope, cache); - } - return cache; - } - getOptionScopes(mainScope, keyLists, resetCache) { - const { options, type } = this; - const cache = this._cachedScopes(mainScope, resetCache); - const cached = cache.get(keyLists); - if (cached) { - return cached; - } - const scopes = /* @__PURE__ */ new Set(); - keyLists.forEach((keys) => { - if (mainScope) { - scopes.add(mainScope); - keys.forEach((key) => addIfFound(scopes, mainScope, key)); - } - keys.forEach((key) => addIfFound(scopes, options, key)); - keys.forEach((key) => addIfFound(scopes, overrides[type] || {}, key)); - keys.forEach((key) => addIfFound(scopes, defaults, key)); - keys.forEach((key) => addIfFound(scopes, descriptors, key)); - }); - const array = Array.from(scopes); - if (array.length === 0) { - array.push(/* @__PURE__ */ Object.create(null)); - } - if (keysCached.has(keyLists)) { - cache.set(keyLists, array); - } - return array; - } - chartOptionScopes() { - const { options, type } = this; - return [ - options, - overrides[type] || {}, - defaults.datasets[type] || {}, - { - type - }, - defaults, - descriptors - ]; - } - resolveNamedOptions(scopes, names2, context, prefixes = [ - "" - ]) { - const result = { - $shared: true - }; - const { resolver, subPrefixes } = getResolver(this._resolverCache, scopes, prefixes); - let options = resolver; - if (needContext(resolver, names2)) { - result.$shared = false; - context = isFunction(context) ? context() : context; - const subResolver = this.createResolver(scopes, context, subPrefixes); - options = _attachContext(resolver, context, subResolver); - } - for (const prop of names2) { - result[prop] = options[prop]; - } - return result; - } - createResolver(scopes, context, prefixes = [ - "" - ], descriptorDefaults) { - const { resolver } = getResolver(this._resolverCache, scopes, prefixes); - return isObject(context) ? _attachContext(resolver, context, void 0, descriptorDefaults) : resolver; - } -}; -function getResolver(resolverCache, scopes, prefixes) { - let cache = resolverCache.get(scopes); - if (!cache) { - cache = /* @__PURE__ */ new Map(); - resolverCache.set(scopes, cache); - } - const cacheKey = prefixes.join(); - let cached = cache.get(cacheKey); - if (!cached) { - const resolver = _createResolver(scopes, prefixes); - cached = { - resolver, - subPrefixes: prefixes.filter((p) => !p.toLowerCase().includes("hover")) - }; - cache.set(cacheKey, cached); - } - return cached; -} -var hasFunction = (value) => isObject(value) && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key])); -function needContext(proxy, names2) { - const { isScriptable, isIndexable } = _descriptors(proxy); - for (const prop of names2) { - const scriptable = isScriptable(prop); - const indexable = isIndexable(prop); - const value = (indexable || scriptable) && proxy[prop]; - if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) { - return true; - } - } - return false; -} -var version = "4.5.0"; -var KNOWN_POSITIONS = [ - "top", - "bottom", - "left", - "right", - "chartArea" -]; -function positionIsHorizontal(position, axis) { - return position === "top" || position === "bottom" || KNOWN_POSITIONS.indexOf(position) === -1 && axis === "x"; -} -function compare2Level(l1, l2) { - return function(a, b) { - return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1]; - }; -} -function onAnimationsComplete(context) { - const chart = context.chart; - const animationOptions = chart.options.animation; - chart.notifyPlugins("afterRender"); - callback(animationOptions && animationOptions.onComplete, [ - context - ], chart); -} -function onAnimationProgress(context) { - const chart = context.chart; - const animationOptions = chart.options.animation; - callback(animationOptions && animationOptions.onProgress, [ - context - ], chart); -} -function getCanvas(item) { - if (_isDomSupported() && typeof item === "string") { - item = document.getElementById(item); - } else if (item && item.length) { - item = item[0]; - } - if (item && item.canvas) { - item = item.canvas; - } - return item; -} -var instances = {}; -var getChart = (key) => { - const canvas = getCanvas(key); - return Object.values(instances).filter((c) => c.canvas === canvas).pop(); -}; -function moveNumericKeys(obj, start, move) { - const keys = Object.keys(obj); - for (const key of keys) { - const intKey = +key; - if (intKey >= start) { - const value = obj[key]; - delete obj[key]; - if (move > 0 || intKey > start) { - obj[intKey + move] = value; - } - } - } -} -function determineLastEvent(e, lastEvent, inChartArea, isClick) { - if (!inChartArea || e.type === "mouseout") { - return null; - } - if (isClick) { - return lastEvent; - } - return e; -} -var Chart = class { - static register(...items) { - registry.add(...items); - invalidatePlugins(); - } - static unregister(...items) { - registry.remove(...items); - invalidatePlugins(); - } - constructor(item, userConfig) { - const config = this.config = new Config(userConfig); - const initialCanvas = getCanvas(item); - const existingChart = getChart(initialCanvas); - if (existingChart) { - throw new Error("Canvas is already in use. Chart with ID '" + existingChart.id + "' must be destroyed before the canvas with ID '" + existingChart.canvas.id + "' can be reused."); - } - const options = config.createResolver(config.chartOptionScopes(), this.getContext()); - this.platform = new (config.platform || _detectPlatform(initialCanvas))(); - this.platform.updateConfig(config); - const context = this.platform.acquireContext(initialCanvas, options.aspectRatio); - const canvas = context && context.canvas; - const height = canvas && canvas.height; - const width = canvas && canvas.width; - this.id = uid(); - this.ctx = context; - this.canvas = canvas; - this.width = width; - this.height = height; - this._options = options; - this._aspectRatio = this.aspectRatio; - this._layers = []; - this._metasets = []; - this._stacks = void 0; - this.boxes = []; - this.currentDevicePixelRatio = void 0; - this.chartArea = void 0; - this._active = []; - this._lastEvent = void 0; - this._listeners = {}; - this._responsiveListeners = void 0; - this._sortedMetasets = []; - this.scales = {}; - this._plugins = new PluginService(); - this.$proxies = {}; - this._hiddenIndices = {}; - this.attached = false; - this._animationsDisabled = void 0; - this.$context = void 0; - this._doResize = debounce((mode) => this.update(mode), options.resizeDelay || 0); - this._dataChanges = []; - instances[this.id] = this; - if (!context || !canvas) { - console.error("Failed to create chart: can't acquire context from the given item"); - return; - } - animator.listen(this, "complete", onAnimationsComplete); - animator.listen(this, "progress", onAnimationProgress); - this._initialize(); - if (this.attached) { - this.update(); - } - } - get aspectRatio() { - const { options: { aspectRatio, maintainAspectRatio }, width, height, _aspectRatio } = this; - if (!isNullOrUndef(aspectRatio)) { - return aspectRatio; - } - if (maintainAspectRatio && _aspectRatio) { - return _aspectRatio; - } - return height ? width / height : null; - } - get data() { - return this.config.data; - } - set data(data) { - this.config.data = data; - } - get options() { - return this._options; - } - set options(options) { - this.config.options = options; - } - get registry() { - return registry; - } - _initialize() { - this.notifyPlugins("beforeInit"); - if (this.options.responsive) { - this.resize(); - } else { - retinaScale(this, this.options.devicePixelRatio); - } - this.bindEvents(); - this.notifyPlugins("afterInit"); - return this; - } - clear() { - clearCanvas(this.canvas, this.ctx); - return this; - } - stop() { - animator.stop(this); - return this; - } - resize(width, height) { - if (!animator.running(this)) { - this._resize(width, height); - } else { - this._resizeBeforeDraw = { - width, - height - }; - } - } - _resize(width, height) { - const options = this.options; - const canvas = this.canvas; - const aspectRatio = options.maintainAspectRatio && this.aspectRatio; - const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio); - const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio(); - const mode = this.width ? "resize" : "attach"; - this.width = newSize.width; - this.height = newSize.height; - this._aspectRatio = this.aspectRatio; - if (!retinaScale(this, newRatio, true)) { - return; - } - this.notifyPlugins("resize", { - size: newSize - }); - callback(options.onResize, [ - this, - newSize - ], this); - if (this.attached) { - if (this._doResize(mode)) { - this.render(); - } - } - } - ensureScalesHaveIDs() { - const options = this.options; - const scalesOptions = options.scales || {}; - each(scalesOptions, (axisOptions, axisID) => { - axisOptions.id = axisID; - }); - } - buildOrUpdateScales() { - const options = this.options; - const scaleOpts = options.scales; - const scales2 = this.scales; - const updated = Object.keys(scales2).reduce((obj, id) => { - obj[id] = false; - return obj; - }, {}); - let items = []; - if (scaleOpts) { - items = items.concat(Object.keys(scaleOpts).map((id) => { - const scaleOptions = scaleOpts[id]; - const axis = determineAxis(id, scaleOptions); - const isRadial = axis === "r"; - const isHorizontal = axis === "x"; - return { - options: scaleOptions, - dposition: isRadial ? "chartArea" : isHorizontal ? "bottom" : "left", - dtype: isRadial ? "radialLinear" : isHorizontal ? "category" : "linear" - }; - })); - } - each(items, (item) => { - const scaleOptions = item.options; - const id = scaleOptions.id; - const axis = determineAxis(id, scaleOptions); - const scaleType = valueOrDefault(scaleOptions.type, item.dtype); - if (scaleOptions.position === void 0 || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) { - scaleOptions.position = item.dposition; - } - updated[id] = true; - let scale = null; - if (id in scales2 && scales2[id].type === scaleType) { - scale = scales2[id]; - } else { - const scaleClass = registry.getScale(scaleType); - scale = new scaleClass({ - id, - type: scaleType, - ctx: this.ctx, - chart: this - }); - scales2[scale.id] = scale; - } - scale.init(scaleOptions, options); - }); - each(updated, (hasUpdated, id) => { - if (!hasUpdated) { - delete scales2[id]; - } - }); - each(scales2, (scale) => { - layouts.configure(this, scale, scale.options); - layouts.addBox(this, scale); - }); - } - _updateMetasets() { - const metasets = this._metasets; - const numData = this.data.datasets.length; - const numMeta = metasets.length; - metasets.sort((a, b) => a.index - b.index); - if (numMeta > numData) { - for (let i = numData; i < numMeta; ++i) { - this._destroyDatasetMeta(i); - } - metasets.splice(numData, numMeta - numData); - } - this._sortedMetasets = metasets.slice(0).sort(compare2Level("order", "index")); - } - _removeUnreferencedMetasets() { - const { _metasets: metasets, data: { datasets } } = this; - if (metasets.length > datasets.length) { - delete this._stacks; - } - metasets.forEach((meta, index2) => { - if (datasets.filter((x) => x === meta._dataset).length === 0) { - this._destroyDatasetMeta(index2); - } - }); - } - buildOrUpdateControllers() { - const newControllers = []; - const datasets = this.data.datasets; - let i, ilen; - this._removeUnreferencedMetasets(); - for (i = 0, ilen = datasets.length; i < ilen; i++) { - const dataset = datasets[i]; - let meta = this.getDatasetMeta(i); - const type = dataset.type || this.config.type; - if (meta.type && meta.type !== type) { - this._destroyDatasetMeta(i); - meta = this.getDatasetMeta(i); - } - meta.type = type; - meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options); - meta.order = dataset.order || 0; - meta.index = i; - meta.label = "" + dataset.label; - meta.visible = this.isDatasetVisible(i); - if (meta.controller) { - meta.controller.updateIndex(i); - meta.controller.linkScales(); - } else { - const ControllerClass = registry.getController(type); - const { datasetElementType, dataElementType } = defaults.datasets[type]; - Object.assign(ControllerClass, { - dataElementType: registry.getElement(dataElementType), - datasetElementType: datasetElementType && registry.getElement(datasetElementType) - }); - meta.controller = new ControllerClass(this, i); - newControllers.push(meta.controller); - } - } - this._updateMetasets(); - return newControllers; - } - _resetElements() { - each(this.data.datasets, (dataset, datasetIndex) => { - this.getDatasetMeta(datasetIndex).controller.reset(); - }, this); - } - reset() { - this._resetElements(); - this.notifyPlugins("reset"); - } - update(mode) { - const config = this.config; - config.update(); - const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext()); - const animsDisabled = this._animationsDisabled = !options.animation; - this._updateScales(); - this._checkEventBindings(); - this._updateHiddenIndices(); - this._plugins.invalidate(); - if (this.notifyPlugins("beforeUpdate", { - mode, - cancelable: true - }) === false) { - return; - } - const newControllers = this.buildOrUpdateControllers(); - this.notifyPlugins("beforeElementsUpdate"); - let minPadding = 0; - for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) { - const { controller } = this.getDatasetMeta(i); - const reset = !animsDisabled && newControllers.indexOf(controller) === -1; - controller.buildOrUpdateElements(reset); - minPadding = Math.max(+controller.getMaxOverflow(), minPadding); - } - minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0; - this._updateLayout(minPadding); - if (!animsDisabled) { - each(newControllers, (controller) => { - controller.reset(); - }); - } - this._updateDatasets(mode); - this.notifyPlugins("afterUpdate", { - mode - }); - this._layers.sort(compare2Level("z", "_idx")); - const { _active, _lastEvent } = this; - if (_lastEvent) { - this._eventHandler(_lastEvent, true); - } else if (_active.length) { - this._updateHoverStyles(_active, _active, true); - } - this.render(); - } - _updateScales() { - each(this.scales, (scale) => { - layouts.removeBox(this, scale); - }); - this.ensureScalesHaveIDs(); - this.buildOrUpdateScales(); - } - _checkEventBindings() { - const options = this.options; - const existingEvents = new Set(Object.keys(this._listeners)); - const newEvents = new Set(options.events); - if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) { - this.unbindEvents(); - this.bindEvents(); - } - } - _updateHiddenIndices() { - const { _hiddenIndices } = this; - const changes = this._getUniformDataChanges() || []; - for (const { method, start, count } of changes) { - const move = method === "_removeElements" ? -count : count; - moveNumericKeys(_hiddenIndices, start, move); - } - } - _getUniformDataChanges() { - const _dataChanges = this._dataChanges; - if (!_dataChanges || !_dataChanges.length) { - return; - } - this._dataChanges = []; - const datasetCount = this.data.datasets.length; - const makeSet = (idx) => new Set(_dataChanges.filter((c) => c[0] === idx).map((c, i) => i + "," + c.splice(1).join(","))); - const changeSet = makeSet(0); - for (let i = 1; i < datasetCount; i++) { - if (!setsEqual(changeSet, makeSet(i))) { - return; - } - } - return Array.from(changeSet).map((c) => c.split(",")).map((a) => ({ - method: a[1], - start: +a[2], - count: +a[3] - })); - } - _updateLayout(minPadding) { - if (this.notifyPlugins("beforeLayout", { - cancelable: true - }) === false) { - return; - } - layouts.update(this, this.width, this.height, minPadding); - const area = this.chartArea; - const noArea = area.width <= 0 || area.height <= 0; - this._layers = []; - each(this.boxes, (box) => { - if (noArea && box.position === "chartArea") { - return; - } - if (box.configure) { - box.configure(); - } - this._layers.push(...box._layers()); - }, this); - this._layers.forEach((item, index2) => { - item._idx = index2; - }); - this.notifyPlugins("afterLayout"); - } - _updateDatasets(mode) { - if (this.notifyPlugins("beforeDatasetsUpdate", { - mode, - cancelable: true - }) === false) { - return; - } - for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - this.getDatasetMeta(i).controller.configure(); - } - for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - this._updateDataset(i, isFunction(mode) ? mode({ - datasetIndex: i - }) : mode); - } - this.notifyPlugins("afterDatasetsUpdate", { - mode - }); - } - _updateDataset(index2, mode) { - const meta = this.getDatasetMeta(index2); - const args = { - meta, - index: index2, - mode, - cancelable: true - }; - if (this.notifyPlugins("beforeDatasetUpdate", args) === false) { - return; - } - meta.controller._update(mode); - args.cancelable = false; - this.notifyPlugins("afterDatasetUpdate", args); - } - render() { - if (this.notifyPlugins("beforeRender", { - cancelable: true - }) === false) { - return; - } - if (animator.has(this)) { - if (this.attached && !animator.running(this)) { - animator.start(this); - } - } else { - this.draw(); - onAnimationsComplete({ - chart: this - }); - } - } - draw() { - let i; - if (this._resizeBeforeDraw) { - const { width, height } = this._resizeBeforeDraw; - this._resizeBeforeDraw = null; - this._resize(width, height); - } - this.clear(); - if (this.width <= 0 || this.height <= 0) { - return; - } - if (this.notifyPlugins("beforeDraw", { - cancelable: true - }) === false) { - return; - } - const layers = this._layers; - for (i = 0; i < layers.length && layers[i].z <= 0; ++i) { - layers[i].draw(this.chartArea); - } - this._drawDatasets(); - for (; i < layers.length; ++i) { - layers[i].draw(this.chartArea); - } - this.notifyPlugins("afterDraw"); - } - _getSortedDatasetMetas(filterVisible) { - const metasets = this._sortedMetasets; - const result = []; - let i, ilen; - for (i = 0, ilen = metasets.length; i < ilen; ++i) { - const meta = metasets[i]; - if (!filterVisible || meta.visible) { - result.push(meta); - } - } - return result; - } - getSortedVisibleDatasetMetas() { - return this._getSortedDatasetMetas(true); - } - _drawDatasets() { - if (this.notifyPlugins("beforeDatasetsDraw", { - cancelable: true - }) === false) { - return; - } - const metasets = this.getSortedVisibleDatasetMetas(); - for (let i = metasets.length - 1; i >= 0; --i) { - this._drawDataset(metasets[i]); - } - this.notifyPlugins("afterDatasetsDraw"); - } - _drawDataset(meta) { - const ctx = this.ctx; - const args = { - meta, - index: meta.index, - cancelable: true - }; - const clip = getDatasetClipArea(this, meta); - if (this.notifyPlugins("beforeDatasetDraw", args) === false) { - return; - } - if (clip) { - clipArea(ctx, clip); - } - meta.controller.draw(); - if (clip) { - unclipArea(ctx); - } - args.cancelable = false; - this.notifyPlugins("afterDatasetDraw", args); - } - isPointInArea(point) { - return _isPointInArea(point, this.chartArea, this._minPadding); - } - getElementsAtEventForMode(e, mode, options, useFinalPosition) { - const method = Interaction.modes[mode]; - if (typeof method === "function") { - return method(this, e, options, useFinalPosition); - } - return []; - } - getDatasetMeta(datasetIndex) { - const dataset = this.data.datasets[datasetIndex]; - const metasets = this._metasets; - let meta = metasets.filter((x) => x && x._dataset === dataset).pop(); - if (!meta) { - meta = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, - xAxisID: null, - yAxisID: null, - order: dataset && dataset.order || 0, - index: datasetIndex, - _dataset: dataset, - _parsed: [], - _sorted: false - }; - metasets.push(meta); - } - return meta; - } - getContext() { - return this.$context || (this.$context = createContext(null, { - chart: this, - type: "chart" - })); - } - getVisibleDatasetCount() { - return this.getSortedVisibleDatasetMetas().length; - } - isDatasetVisible(datasetIndex) { - const dataset = this.data.datasets[datasetIndex]; - if (!dataset) { - return false; - } - const meta = this.getDatasetMeta(datasetIndex); - return typeof meta.hidden === "boolean" ? !meta.hidden : !dataset.hidden; - } - setDatasetVisibility(datasetIndex, visible) { - const meta = this.getDatasetMeta(datasetIndex); - meta.hidden = !visible; - } - toggleDataVisibility(index2) { - this._hiddenIndices[index2] = !this._hiddenIndices[index2]; - } - getDataVisibility(index2) { - return !this._hiddenIndices[index2]; - } - _updateVisibility(datasetIndex, dataIndex, visible) { - const mode = visible ? "show" : "hide"; - const meta = this.getDatasetMeta(datasetIndex); - const anims = meta.controller._resolveAnimations(void 0, mode); - if (defined(dataIndex)) { - meta.data[dataIndex].hidden = !visible; - this.update(); - } else { - this.setDatasetVisibility(datasetIndex, visible); - anims.update(meta, { - visible - }); - this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : void 0); - } - } - hide(datasetIndex, dataIndex) { - this._updateVisibility(datasetIndex, dataIndex, false); - } - show(datasetIndex, dataIndex) { - this._updateVisibility(datasetIndex, dataIndex, true); - } - _destroyDatasetMeta(datasetIndex) { - const meta = this._metasets[datasetIndex]; - if (meta && meta.controller) { - meta.controller._destroy(); - } - delete this._metasets[datasetIndex]; - } - _stop() { - let i, ilen; - this.stop(); - animator.remove(this); - for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - this._destroyDatasetMeta(i); - } - } - destroy() { - this.notifyPlugins("beforeDestroy"); - const { canvas, ctx } = this; - this._stop(); - this.config.clearCache(); - if (canvas) { - this.unbindEvents(); - clearCanvas(canvas, ctx); - this.platform.releaseContext(ctx); - this.canvas = null; - this.ctx = null; - } - delete instances[this.id]; - this.notifyPlugins("afterDestroy"); - } - toBase64Image(...args) { - return this.canvas.toDataURL(...args); - } - bindEvents() { - this.bindUserEvents(); - if (this.options.responsive) { - this.bindResponsiveEvents(); - } else { - this.attached = true; - } - } - bindUserEvents() { - const listeners = this._listeners; - const platform = this.platform; - const _add = (type, listener2) => { - platform.addEventListener(this, type, listener2); - listeners[type] = listener2; - }; - const listener = (e, x, y) => { - e.offsetX = x; - e.offsetY = y; - this._eventHandler(e); - }; - each(this.options.events, (type) => _add(type, listener)); - } - bindResponsiveEvents() { - if (!this._responsiveListeners) { - this._responsiveListeners = {}; - } - const listeners = this._responsiveListeners; - const platform = this.platform; - const _add = (type, listener2) => { - platform.addEventListener(this, type, listener2); - listeners[type] = listener2; - }; - const _remove = (type, listener2) => { - if (listeners[type]) { - platform.removeEventListener(this, type, listener2); - delete listeners[type]; - } - }; - const listener = (width, height) => { - if (this.canvas) { - this.resize(width, height); - } - }; - let detached; - const attached = () => { - _remove("attach", attached); - this.attached = true; - this.resize(); - _add("resize", listener); - _add("detach", detached); - }; - detached = () => { - this.attached = false; - _remove("resize", listener); - this._stop(); - this._resize(0, 0); - _add("attach", attached); - }; - if (platform.isAttached(this.canvas)) { - attached(); - } else { - detached(); - } - } - unbindEvents() { - each(this._listeners, (listener, type) => { - this.platform.removeEventListener(this, type, listener); - }); - this._listeners = {}; - each(this._responsiveListeners, (listener, type) => { - this.platform.removeEventListener(this, type, listener); - }); - this._responsiveListeners = void 0; - } - updateHoverStyle(items, mode, enabled) { - const prefix = enabled ? "set" : "remove"; - let meta, item, i, ilen; - if (mode === "dataset") { - meta = this.getDatasetMeta(items[0].datasetIndex); - meta.controller["_" + prefix + "DatasetHoverStyle"](); - } - for (i = 0, ilen = items.length; i < ilen; ++i) { - item = items[i]; - const controller = item && this.getDatasetMeta(item.datasetIndex).controller; - if (controller) { - controller[prefix + "HoverStyle"](item.element, item.datasetIndex, item.index); - } - } - } - getActiveElements() { - return this._active || []; - } - setActiveElements(activeElements) { - const lastActive = this._active || []; - const active = activeElements.map(({ datasetIndex, index: index2 }) => { - const meta = this.getDatasetMeta(datasetIndex); - if (!meta) { - throw new Error("No dataset found at index " + datasetIndex); - } - return { - datasetIndex, - element: meta.data[index2], - index: index2 - }; - }); - const changed = !_elementsEqual(active, lastActive); - if (changed) { - this._active = active; - this._lastEvent = null; - this._updateHoverStyles(active, lastActive); - } - } - notifyPlugins(hook, args, filter) { - return this._plugins.notify(this, hook, args, filter); - } - isPluginEnabled(pluginId) { - return this._plugins._cache.filter((p) => p.plugin.id === pluginId).length === 1; - } - _updateHoverStyles(active, lastActive, replay) { - const hoverOptions = this.options.hover; - const diff = (a, b) => a.filter((x) => !b.some((y) => x.datasetIndex === y.datasetIndex && x.index === y.index)); - const deactivated = diff(lastActive, active); - const activated = replay ? active : diff(active, lastActive); - if (deactivated.length) { - this.updateHoverStyle(deactivated, hoverOptions.mode, false); - } - if (activated.length && hoverOptions.mode) { - this.updateHoverStyle(activated, hoverOptions.mode, true); - } - } - _eventHandler(e, replay) { - const args = { - event: e, - replay, - cancelable: true, - inChartArea: this.isPointInArea(e) - }; - const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type); - if (this.notifyPlugins("beforeEvent", args, eventFilter) === false) { - return; - } - const changed = this._handleEvent(e, replay, args.inChartArea); - args.cancelable = false; - this.notifyPlugins("afterEvent", args, eventFilter); - if (changed || args.changed) { - this.render(); - } - return this; - } - _handleEvent(e, replay, inChartArea) { - const { _active: lastActive = [], options } = this; - const useFinalPosition = replay; - const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition); - const isClick = _isClickEvent(e); - const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick); - if (inChartArea) { - this._lastEvent = null; - callback(options.onHover, [ - e, - active, - this - ], this); - if (isClick) { - callback(options.onClick, [ - e, - active, - this - ], this); - } - } - const changed = !_elementsEqual(active, lastActive); - if (changed || replay) { - this._active = active; - this._updateHoverStyles(active, lastActive, replay); - } - this._lastEvent = lastEvent; - return changed; - } - _getActiveElements(e, lastActive, inChartArea, useFinalPosition) { - if (e.type === "mouseout") { - return []; - } - if (!inChartArea) { - return lastActive; - } - const hoverOptions = this.options.hover; - return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); - } -}; -__publicField(Chart, "defaults", defaults); -__publicField(Chart, "instances", instances); -__publicField(Chart, "overrides", overrides); -__publicField(Chart, "registry", registry); -__publicField(Chart, "version", version); -__publicField(Chart, "getChart", getChart); -function invalidatePlugins() { - return each(Chart.instances, (chart) => chart._plugins.invalidate()); -} -function clipSelf(ctx, element, endAngle) { - const { startAngle, x, y, outerRadius, innerRadius, options } = element; - const { borderWidth, borderJoinStyle } = options; - const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle)); - ctx.beginPath(); - ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2); - if (innerRadius > 0) { - const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle)); - ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true); - } else { - const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle)); - if (borderJoinStyle === "round") { - ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true); - } else if (borderJoinStyle === "bevel") { - const r = 2 * clipWidth * clipWidth; - const endX = -r * Math.cos(endAngle + PI / 2) + x; - const endY = -r * Math.sin(endAngle + PI / 2) + y; - const startX = r * Math.cos(startAngle + PI / 2) + x; - const startY = r * Math.sin(startAngle + PI / 2) + y; - ctx.lineTo(endX, endY); - ctx.lineTo(startX, startY); - } - } - ctx.closePath(); - ctx.moveTo(0, 0); - ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height); - ctx.clip("evenodd"); -} -function clipArc(ctx, element, endAngle) { - const { startAngle, pixelMargin, x, y, outerRadius, innerRadius } = element; - let angleMargin = pixelMargin / outerRadius; - ctx.beginPath(); - ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin); - if (innerRadius > pixelMargin) { - angleMargin = pixelMargin / innerRadius; - ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true); - } else { - ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI); - } - ctx.closePath(); - ctx.clip(); -} -function toRadiusCorners(value) { - return _readValueToProps(value, [ - "outerStart", - "outerEnd", - "innerStart", - "innerEnd" - ]); -} -function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) { - const o = toRadiusCorners(arc.options.borderRadius); - const halfThickness = (outerRadius - innerRadius) / 2; - const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); - const computeOuterLimit = (val) => { - const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2; - return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit)); - }; - return { - outerStart: computeOuterLimit(o.outerStart), - outerEnd: computeOuterLimit(o.outerEnd), - innerStart: _limitValue(o.innerStart, 0, innerLimit), - innerEnd: _limitValue(o.innerEnd, 0, innerLimit) - }; -} -function rThetaToXY(r, theta, x, y) { - return { - x: x + r * Math.cos(theta), - y: y + r * Math.sin(theta) - }; -} -function pathArc(ctx, element, offset, spacing, end, circular) { - const { x, y, startAngle: start, pixelMargin, innerRadius: innerR } = element; - const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0); - const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0; - let spacingOffset = 0; - const alpha2 = end - start; - if (spacing) { - const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0; - const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0; - const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2; - const adjustedAngle = avNogSpacingRadius !== 0 ? alpha2 * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha2; - spacingOffset = (alpha2 - adjustedAngle) / 2; - } - const beta = Math.max(1e-3, alpha2 * outerRadius - offset / PI) / outerRadius; - const angleOffset = (alpha2 - beta) / 2; - const startAngle = start + angleOffset + spacingOffset; - const endAngle = end - angleOffset - spacingOffset; - const { outerStart, outerEnd, innerStart, innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle); - const outerStartAdjustedRadius = outerRadius - outerStart; - const outerEndAdjustedRadius = outerRadius - outerEnd; - const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius; - const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius; - const innerStartAdjustedRadius = innerRadius + innerStart; - const innerEndAdjustedRadius = innerRadius + innerEnd; - const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius; - const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius; - ctx.beginPath(); - if (circular) { - const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2; - ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle); - ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle); - if (outerEnd > 0) { - const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y); - ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI); - } - const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y); - ctx.lineTo(p4.x, p4.y); - if (innerEnd > 0) { - const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y); - ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI); - } - const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2; - ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true); - ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true); - if (innerStart > 0) { - const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y); - ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI); - } - const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y); - ctx.lineTo(p8.x, p8.y); - if (outerStart > 0) { - const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y); - ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle); - } - } else { - ctx.moveTo(x, y); - const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x; - const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y; - ctx.lineTo(outerStartX, outerStartY); - const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x; - const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y; - ctx.lineTo(outerEndX, outerEndY); - } - ctx.closePath(); -} -function drawArc(ctx, element, offset, spacing, circular) { - const { fullCircles, startAngle, circumference } = element; - let endAngle = element.endAngle; - if (fullCircles) { - pathArc(ctx, element, offset, spacing, endAngle, circular); - for (let i = 0; i < fullCircles; ++i) { - ctx.fill(); - } - if (!isNaN(circumference)) { - endAngle = startAngle + (circumference % TAU || TAU); - } - } - pathArc(ctx, element, offset, spacing, endAngle, circular); - ctx.fill(); - return endAngle; -} -function drawBorder(ctx, element, offset, spacing, circular) { - const { fullCircles, startAngle, circumference, options } = element; - const { borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius } = options; - const inner = options.borderAlign === "inner"; - if (!borderWidth) { - return; - } - ctx.setLineDash(borderDash || []); - ctx.lineDashOffset = borderDashOffset; - if (inner) { - ctx.lineWidth = borderWidth * 2; - ctx.lineJoin = borderJoinStyle || "round"; - } else { - ctx.lineWidth = borderWidth; - ctx.lineJoin = borderJoinStyle || "bevel"; - } - let endAngle = element.endAngle; - if (fullCircles) { - pathArc(ctx, element, offset, spacing, endAngle, circular); - for (let i = 0; i < fullCircles; ++i) { - ctx.stroke(); - } - if (!isNaN(circumference)) { - endAngle = startAngle + (circumference % TAU || TAU); - } - } - if (inner) { - clipArc(ctx, element, endAngle); - } - if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== "miter") { - clipSelf(ctx, element, endAngle); - } - if (!fullCircles) { - pathArc(ctx, element, offset, spacing, endAngle, circular); - ctx.stroke(); - } -} -var ArcElement = class extends Element { - constructor(cfg) { - super(); - __publicField(this, "circumference"); - __publicField(this, "endAngle"); - __publicField(this, "fullCircles"); - __publicField(this, "innerRadius"); - __publicField(this, "outerRadius"); - __publicField(this, "pixelMargin"); - __publicField(this, "startAngle"); - this.options = void 0; - this.circumference = void 0; - this.startAngle = void 0; - this.endAngle = void 0; - this.innerRadius = void 0; - this.outerRadius = void 0; - this.pixelMargin = 0; - this.fullCircles = 0; - if (cfg) { - Object.assign(this, cfg); - } - } - inRange(chartX, chartY, useFinalPosition) { - const point = this.getProps([ - "x", - "y" - ], useFinalPosition); - const { angle, distance } = getAngleFromPoint(point, { - x: chartX, - y: chartY - }); - const { startAngle, endAngle, innerRadius, outerRadius, circumference } = this.getProps([ - "startAngle", - "endAngle", - "innerRadius", - "outerRadius", - "circumference" - ], useFinalPosition); - const rAdjust = (this.options.spacing + this.options.borderWidth) / 2; - const _circumference = valueOrDefault(circumference, endAngle - startAngle); - const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle; - const betweenAngles = _circumference >= TAU || nonZeroBetween; - const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust); - return betweenAngles && withinRadius; - } - getCenterPoint(useFinalPosition) { - const { x, y, startAngle, endAngle, innerRadius, outerRadius } = this.getProps([ - "x", - "y", - "startAngle", - "endAngle", - "innerRadius", - "outerRadius" - ], useFinalPosition); - const { offset, spacing } = this.options; - const halfAngle = (startAngle + endAngle) / 2; - const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2; - return { - x: x + Math.cos(halfAngle) * halfRadius, - y: y + Math.sin(halfAngle) * halfRadius - }; - } - tooltipPosition(useFinalPosition) { - return this.getCenterPoint(useFinalPosition); - } - draw(ctx) { - const { options, circumference } = this; - const offset = (options.offset || 0) / 4; - const spacing = (options.spacing || 0) / 2; - const circular = options.circular; - this.pixelMargin = options.borderAlign === "inner" ? 0.33 : 0; - this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0; - if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) { - return; - } - ctx.save(); - const halfAngle = (this.startAngle + this.endAngle) / 2; - ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset); - const fix = 1 - Math.sin(Math.min(PI, circumference || 0)); - const radiusOffset = offset * fix; - ctx.fillStyle = options.backgroundColor; - ctx.strokeStyle = options.borderColor; - drawArc(ctx, this, radiusOffset, spacing, circular); - drawBorder(ctx, this, radiusOffset, spacing, circular); - ctx.restore(); - } -}; -__publicField(ArcElement, "id", "arc"); -__publicField(ArcElement, "defaults", { - borderAlign: "center", - borderColor: "#fff", - borderDash: [], - borderDashOffset: 0, - borderJoinStyle: void 0, - borderRadius: 0, - borderWidth: 2, - offset: 0, - spacing: 0, - angle: void 0, - circular: true, - selfJoin: false -}); -__publicField(ArcElement, "defaultRoutes", { - backgroundColor: "backgroundColor" -}); -__publicField(ArcElement, "descriptors", { - _scriptable: true, - _indexable: (name) => name !== "borderDash" -}); -function setStyle(ctx, options, style = options) { - ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle); - ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash)); - ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset); - ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle); - ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth); - ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor); -} -function lineTo(ctx, previous, target) { - ctx.lineTo(target.x, target.y); -} -function getLineMethod(options) { - if (options.stepped) { - return _steppedLineTo; - } - if (options.tension || options.cubicInterpolationMode === "monotone") { - return _bezierCurveTo; - } - return lineTo; -} -function pathVars(points, segment, params = {}) { - const count = points.length; - const { start: paramsStart = 0, end: paramsEnd = count - 1 } = params; - const { start: segmentStart, end: segmentEnd } = segment; - const start = Math.max(paramsStart, segmentStart); - const end = Math.min(paramsEnd, segmentEnd); - const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd; - return { - count, - start, - loop: segment.loop, - ilen: end < start && !outside ? count + end - start : end - start - }; -} -function pathSegment(ctx, line, segment, params) { - const { points, options } = line; - const { count, start, loop, ilen } = pathVars(points, segment, params); - const lineMethod = getLineMethod(options); - let { move = true, reverse } = params || {}; - let i, point, prev; - for (i = 0; i <= ilen; ++i) { - point = points[(start + (reverse ? ilen - i : i)) % count]; - if (point.skip) { - continue; - } else if (move) { - ctx.moveTo(point.x, point.y); - move = false; - } else { - lineMethod(ctx, prev, point, reverse, options.stepped); - } - prev = point; - } - if (loop) { - point = points[(start + (reverse ? ilen : 0)) % count]; - lineMethod(ctx, prev, point, reverse, options.stepped); - } - return !!loop; -} -function fastPathSegment(ctx, line, segment, params) { - const points = line.points; - const { count, start, ilen } = pathVars(points, segment, params); - const { move = true, reverse } = params || {}; - let avgX = 0; - let countX = 0; - let i, point, prevX, minY, maxY, lastY; - const pointIndex = (index2) => (start + (reverse ? ilen - index2 : index2)) % count; - const drawX = () => { - if (minY !== maxY) { - ctx.lineTo(avgX, maxY); - ctx.lineTo(avgX, minY); - ctx.lineTo(avgX, lastY); - } - }; - if (move) { - point = points[pointIndex(0)]; - ctx.moveTo(point.x, point.y); - } - for (i = 0; i <= ilen; ++i) { - point = points[pointIndex(i)]; - if (point.skip) { - continue; - } - const x = point.x; - const y = point.y; - const truncX = x | 0; - if (truncX === prevX) { - if (y < minY) { - minY = y; - } else if (y > maxY) { - maxY = y; - } - avgX = (countX * avgX + x) / ++countX; - } else { - drawX(); - ctx.lineTo(x, y); - prevX = truncX; - countX = 0; - minY = maxY = y; - } - lastY = y; - } - drawX(); -} -function _getSegmentMethod(line) { - const opts = line.options; - const borderDash = opts.borderDash && opts.borderDash.length; - const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== "monotone" && !opts.stepped && !borderDash; - return useFastPath ? fastPathSegment : pathSegment; -} -function _getInterpolationMethod(options) { - if (options.stepped) { - return _steppedInterpolation; - } - if (options.tension || options.cubicInterpolationMode === "monotone") { - return _bezierInterpolation; - } - return _pointInLine; -} -function strokePathWithCache(ctx, line, start, count) { - let path = line._path; - if (!path) { - path = line._path = new Path2D(); - if (line.path(path, start, count)) { - path.closePath(); - } - } - setStyle(ctx, line.options); - ctx.stroke(path); -} -function strokePathDirect(ctx, line, start, count) { - const { segments, options } = line; - const segmentMethod = _getSegmentMethod(line); - for (const segment of segments) { - setStyle(ctx, options, segment.style); - ctx.beginPath(); - if (segmentMethod(ctx, line, segment, { - start, - end: start + count - 1 - })) { - ctx.closePath(); - } - ctx.stroke(); - } -} -var usePath2D = typeof Path2D === "function"; -function draw(ctx, line, start, count) { - if (usePath2D && !line.options.segment) { - strokePathWithCache(ctx, line, start, count); - } else { - strokePathDirect(ctx, line, start, count); - } -} -var LineElement = class extends Element { - constructor(cfg) { - super(); - this.animated = true; - this.options = void 0; - this._chart = void 0; - this._loop = void 0; - this._fullLoop = void 0; - this._path = void 0; - this._points = void 0; - this._segments = void 0; - this._decimated = false; - this._pointsUpdated = false; - this._datasetIndex = void 0; - if (cfg) { - Object.assign(this, cfg); - } - } - updateControlPoints(chartArea, indexAxis) { - const options = this.options; - if ((options.tension || options.cubicInterpolationMode === "monotone") && !options.stepped && !this._pointsUpdated) { - const loop = options.spanGaps ? this._loop : this._fullLoop; - _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis); - this._pointsUpdated = true; - } - } - set points(points) { - this._points = points; - delete this._segments; - delete this._path; - this._pointsUpdated = false; - } - get points() { - return this._points; - } - get segments() { - return this._segments || (this._segments = _computeSegments(this, this.options.segment)); - } - first() { - const segments = this.segments; - const points = this.points; - return segments.length && points[segments[0].start]; - } - last() { - const segments = this.segments; - const points = this.points; - const count = segments.length; - return count && points[segments[count - 1].end]; - } - interpolate(point, property) { - const options = this.options; - const value = point[property]; - const points = this.points; - const segments = _boundSegments(this, { - property, - start: value, - end: value - }); - if (!segments.length) { - return; - } - const result = []; - const _interpolate = _getInterpolationMethod(options); - let i, ilen; - for (i = 0, ilen = segments.length; i < ilen; ++i) { - const { start, end } = segments[i]; - const p1 = points[start]; - const p2 = points[end]; - if (p1 === p2) { - result.push(p1); - continue; - } - const t = Math.abs((value - p1[property]) / (p2[property] - p1[property])); - const interpolated = _interpolate(p1, p2, t, options.stepped); - interpolated[property] = point[property]; - result.push(interpolated); - } - return result.length === 1 ? result[0] : result; - } - pathSegment(ctx, segment, params) { - const segmentMethod = _getSegmentMethod(this); - return segmentMethod(ctx, this, segment, params); - } - path(ctx, start, count) { - const segments = this.segments; - const segmentMethod = _getSegmentMethod(this); - let loop = this._loop; - start = start || 0; - count = count || this.points.length - start; - for (const segment of segments) { - loop &= segmentMethod(ctx, this, segment, { - start, - end: start + count - 1 - }); - } - return !!loop; - } - draw(ctx, chartArea, start, count) { - const options = this.options || {}; - const points = this.points || []; - if (points.length && options.borderWidth) { - ctx.save(); - draw(ctx, this, start, count); - ctx.restore(); - } - if (this.animated) { - this._pointsUpdated = false; - this._path = void 0; - } - } -}; -__publicField(LineElement, "id", "line"); -__publicField(LineElement, "defaults", { - borderCapStyle: "butt", - borderDash: [], - borderDashOffset: 0, - borderJoinStyle: "miter", - borderWidth: 3, - capBezierPoints: true, - cubicInterpolationMode: "default", - fill: false, - spanGaps: false, - stepped: false, - tension: 0 -}); -__publicField(LineElement, "defaultRoutes", { - backgroundColor: "backgroundColor", - borderColor: "borderColor" -}); -__publicField(LineElement, "descriptors", { - _scriptable: true, - _indexable: (name) => name !== "borderDash" && name !== "fill" -}); -function inRange$1(el, pos, axis, useFinalPosition) { - const options = el.options; - const { [axis]: value } = el.getProps([ - axis - ], useFinalPosition); - return Math.abs(pos - value) < options.radius + options.hitRadius; -} -var PointElement = class extends Element { - constructor(cfg) { - super(); - __publicField(this, "parsed"); - __publicField(this, "skip"); - __publicField(this, "stop"); - this.options = void 0; - this.parsed = void 0; - this.skip = void 0; - this.stop = void 0; - if (cfg) { - Object.assign(this, cfg); - } - } - inRange(mouseX, mouseY, useFinalPosition) { - const options = this.options; - const { x, y } = this.getProps([ - "x", - "y" - ], useFinalPosition); - return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2); - } - inXRange(mouseX, useFinalPosition) { - return inRange$1(this, mouseX, "x", useFinalPosition); - } - inYRange(mouseY, useFinalPosition) { - return inRange$1(this, mouseY, "y", useFinalPosition); - } - getCenterPoint(useFinalPosition) { - const { x, y } = this.getProps([ - "x", - "y" - ], useFinalPosition); - return { - x, - y - }; - } - size(options) { - options = options || this.options || {}; - let radius = options.radius || 0; - radius = Math.max(radius, radius && options.hoverRadius || 0); - const borderWidth = radius && options.borderWidth || 0; - return (radius + borderWidth) * 2; - } - draw(ctx, area) { - const options = this.options; - if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) { - return; - } - ctx.strokeStyle = options.borderColor; - ctx.lineWidth = options.borderWidth; - ctx.fillStyle = options.backgroundColor; - drawPoint(ctx, options, this.x, this.y); - } - getRange() { - const options = this.options || {}; - return options.radius + options.hitRadius; - } -}; -__publicField(PointElement, "id", "point"); -/** -* @type {any} -*/ -__publicField(PointElement, "defaults", { - borderWidth: 1, - hitRadius: 1, - hoverBorderWidth: 1, - hoverRadius: 4, - pointStyle: "circle", - radius: 3, - rotation: 0 -}); -/** -* @type {any} -*/ -__publicField(PointElement, "defaultRoutes", { - backgroundColor: "backgroundColor", - borderColor: "borderColor" -}); -function getBarBounds(bar, useFinalPosition) { - const { x, y, base, width, height } = bar.getProps([ - "x", - "y", - "base", - "width", - "height" - ], useFinalPosition); - let left, right, top, bottom, half; - if (bar.horizontal) { - half = height / 2; - left = Math.min(x, base); - right = Math.max(x, base); - top = y - half; - bottom = y + half; - } else { - half = width / 2; - left = x - half; - right = x + half; - top = Math.min(y, base); - bottom = Math.max(y, base); - } - return { - left, - top, - right, - bottom - }; -} -function skipOrLimit(skip2, value, min, max) { - return skip2 ? 0 : _limitValue(value, min, max); -} -function parseBorderWidth(bar, maxW, maxH) { - const value = bar.options.borderWidth; - const skip2 = bar.borderSkipped; - const o = toTRBL(value); - return { - t: skipOrLimit(skip2.top, o.top, 0, maxH), - r: skipOrLimit(skip2.right, o.right, 0, maxW), - b: skipOrLimit(skip2.bottom, o.bottom, 0, maxH), - l: skipOrLimit(skip2.left, o.left, 0, maxW) - }; -} -function parseBorderRadius(bar, maxW, maxH) { - const { enableBorderRadius } = bar.getProps([ - "enableBorderRadius" - ]); - const value = bar.options.borderRadius; - const o = toTRBLCorners(value); - const maxR = Math.min(maxW, maxH); - const skip2 = bar.borderSkipped; - const enableBorder = enableBorderRadius || isObject(value); - return { - topLeft: skipOrLimit(!enableBorder || skip2.top || skip2.left, o.topLeft, 0, maxR), - topRight: skipOrLimit(!enableBorder || skip2.top || skip2.right, o.topRight, 0, maxR), - bottomLeft: skipOrLimit(!enableBorder || skip2.bottom || skip2.left, o.bottomLeft, 0, maxR), - bottomRight: skipOrLimit(!enableBorder || skip2.bottom || skip2.right, o.bottomRight, 0, maxR) - }; -} -function boundingRects(bar) { - const bounds = getBarBounds(bar); - const width = bounds.right - bounds.left; - const height = bounds.bottom - bounds.top; - const border = parseBorderWidth(bar, width / 2, height / 2); - const radius = parseBorderRadius(bar, width / 2, height / 2); - return { - outer: { - x: bounds.left, - y: bounds.top, - w: width, - h: height, - radius - }, - inner: { - x: bounds.left + border.l, - y: bounds.top + border.t, - w: width - border.l - border.r, - h: height - border.t - border.b, - radius: { - topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)), - topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)), - bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)), - bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)) - } - } - }; -} -function inRange(bar, x, y, useFinalPosition) { - const skipX = x === null; - const skipY = y === null; - const skipBoth = skipX && skipY; - const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition); - return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom)); -} -function hasRadius(radius) { - return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight; -} -function addNormalRectPath(ctx, rect) { - ctx.rect(rect.x, rect.y, rect.w, rect.h); -} -function inflateRect(rect, amount, refRect = {}) { - const x = rect.x !== refRect.x ? -amount : 0; - const y = rect.y !== refRect.y ? -amount : 0; - const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x; - const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y; - return { - x: rect.x + x, - y: rect.y + y, - w: rect.w + w, - h: rect.h + h, - radius: rect.radius - }; -} -var BarElement = class extends Element { - constructor(cfg) { - super(); - this.options = void 0; - this.horizontal = void 0; - this.base = void 0; - this.width = void 0; - this.height = void 0; - this.inflateAmount = void 0; - if (cfg) { - Object.assign(this, cfg); - } - } - draw(ctx) { - const { inflateAmount, options: { borderColor, backgroundColor } } = this; - const { inner, outer } = boundingRects(this); - const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath; - ctx.save(); - if (outer.w !== inner.w || outer.h !== inner.h) { - ctx.beginPath(); - addRectPath(ctx, inflateRect(outer, inflateAmount, inner)); - ctx.clip(); - addRectPath(ctx, inflateRect(inner, -inflateAmount, outer)); - ctx.fillStyle = borderColor; - ctx.fill("evenodd"); - } - ctx.beginPath(); - addRectPath(ctx, inflateRect(inner, inflateAmount)); - ctx.fillStyle = backgroundColor; - ctx.fill(); - ctx.restore(); - } - inRange(mouseX, mouseY, useFinalPosition) { - return inRange(this, mouseX, mouseY, useFinalPosition); - } - inXRange(mouseX, useFinalPosition) { - return inRange(this, mouseX, null, useFinalPosition); - } - inYRange(mouseY, useFinalPosition) { - return inRange(this, null, mouseY, useFinalPosition); - } - getCenterPoint(useFinalPosition) { - const { x, y, base, horizontal } = this.getProps([ - "x", - "y", - "base", - "horizontal" - ], useFinalPosition); - return { - x: horizontal ? (x + base) / 2 : x, - y: horizontal ? y : (y + base) / 2 - }; - } - getRange(axis) { - return axis === "x" ? this.width / 2 : this.height / 2; - } -}; -__publicField(BarElement, "id", "bar"); -__publicField(BarElement, "defaults", { - borderSkipped: "start", - borderWidth: 0, - borderRadius: 0, - inflateAmount: "auto", - pointStyle: void 0 -}); -__publicField(BarElement, "defaultRoutes", { - backgroundColor: "backgroundColor", - borderColor: "borderColor" -}); -var elements = Object.freeze({ - __proto__: null, - ArcElement, - BarElement, - LineElement, - PointElement -}); -var BORDER_COLORS = [ - "rgb(54, 162, 235)", - "rgb(255, 99, 132)", - "rgb(255, 159, 64)", - "rgb(255, 205, 86)", - "rgb(75, 192, 192)", - "rgb(153, 102, 255)", - "rgb(201, 203, 207)" - // grey -]; -var BACKGROUND_COLORS = BORDER_COLORS.map((color2) => color2.replace("rgb(", "rgba(").replace(")", ", 0.5)")); -function getBorderColor(i) { - return BORDER_COLORS[i % BORDER_COLORS.length]; -} -function getBackgroundColor(i) { - return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length]; -} -function colorizeDefaultDataset(dataset, i) { - dataset.borderColor = getBorderColor(i); - dataset.backgroundColor = getBackgroundColor(i); - return ++i; -} -function colorizeDoughnutDataset(dataset, i) { - dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++)); - return i; -} -function colorizePolarAreaDataset(dataset, i) { - dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++)); - return i; -} -function getColorizer(chart) { - let i = 0; - return (dataset, datasetIndex) => { - const controller = chart.getDatasetMeta(datasetIndex).controller; - if (controller instanceof DoughnutController) { - i = colorizeDoughnutDataset(dataset, i); - } else if (controller instanceof PolarAreaController) { - i = colorizePolarAreaDataset(dataset, i); - } else if (controller) { - i = colorizeDefaultDataset(dataset, i); - } - }; -} -function containsColorsDefinitions(descriptors2) { - let k; - for (k in descriptors2) { - if (descriptors2[k].borderColor || descriptors2[k].backgroundColor) { - return true; - } - } - return false; -} -function containsColorsDefinition(descriptor) { - return descriptor && (descriptor.borderColor || descriptor.backgroundColor); -} -function containsDefaultColorsDefenitions() { - return defaults.borderColor !== "rgba(0,0,0,0.1)" || defaults.backgroundColor !== "rgba(0,0,0,0.1)"; -} -var plugin_colors = { - id: "colors", - defaults: { - enabled: true, - forceOverride: false - }, - beforeLayout(chart, _args, options) { - if (!options.enabled) { - return; - } - const { data: { datasets }, options: chartOptions } = chart.config; - const { elements: elements2 } = chartOptions; - const containsColorDefenition = containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements2 && containsColorsDefinitions(elements2) || containsDefaultColorsDefenitions(); - if (!options.forceOverride && containsColorDefenition) { - return; - } - const colorizer = getColorizer(chart); - datasets.forEach(colorizer); - } -}; -function lttbDecimation(data, start, count, availableWidth, options) { - const samples = options.samples || availableWidth; - if (samples >= count) { - return data.slice(start, start + count); - } - const decimated = []; - const bucketWidth = (count - 2) / (samples - 2); - let sampledIndex = 0; - const endIndex = start + count - 1; - let a = start; - let i, maxAreaPoint, maxArea, area, nextA; - decimated[sampledIndex++] = data[a]; - for (i = 0; i < samples - 2; i++) { - let avgX = 0; - let avgY = 0; - let j; - const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start; - const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start; - const avgRangeLength = avgRangeEnd - avgRangeStart; - for (j = avgRangeStart; j < avgRangeEnd; j++) { - avgX += data[j].x; - avgY += data[j].y; - } - avgX /= avgRangeLength; - avgY /= avgRangeLength; - const rangeOffs = Math.floor(i * bucketWidth) + 1 + start; - const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start; - const { x: pointAx, y: pointAy } = data[a]; - maxArea = area = -1; - for (j = rangeOffs; j < rangeTo; j++) { - area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy)); - if (area > maxArea) { - maxArea = area; - maxAreaPoint = data[j]; - nextA = j; - } - } - decimated[sampledIndex++] = maxAreaPoint; - a = nextA; - } - decimated[sampledIndex++] = data[endIndex]; - return decimated; -} -function minMaxDecimation(data, start, count, availableWidth) { - let avgX = 0; - let countX = 0; - let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY; - const decimated = []; - const endIndex = start + count - 1; - const xMin = data[start].x; - const xMax = data[endIndex].x; - const dx = xMax - xMin; - for (i = start; i < start + count; ++i) { - point = data[i]; - x = (point.x - xMin) / dx * availableWidth; - y = point.y; - const truncX = x | 0; - if (truncX === prevX) { - if (y < minY) { - minY = y; - minIndex = i; - } else if (y > maxY) { - maxY = y; - maxIndex = i; - } - avgX = (countX * avgX + point.x) / ++countX; - } else { - const lastIndex = i - 1; - if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) { - const intermediateIndex1 = Math.min(minIndex, maxIndex); - const intermediateIndex2 = Math.max(minIndex, maxIndex); - if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) { - decimated.push({ - ...data[intermediateIndex1], - x: avgX - }); - } - if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) { - decimated.push({ - ...data[intermediateIndex2], - x: avgX - }); - } - } - if (i > 0 && lastIndex !== startIndex) { - decimated.push(data[lastIndex]); - } - decimated.push(point); - prevX = truncX; - countX = 0; - minY = maxY = y; - minIndex = maxIndex = startIndex = i; - } - } - return decimated; -} -function cleanDecimatedDataset(dataset) { - if (dataset._decimated) { - const data = dataset._data; - delete dataset._decimated; - delete dataset._data; - Object.defineProperty(dataset, "data", { - configurable: true, - enumerable: true, - writable: true, - value: data - }); - } -} -function cleanDecimatedData(chart) { - chart.data.datasets.forEach((dataset) => { - cleanDecimatedDataset(dataset); - }); -} -function getStartAndCountOfVisiblePointsSimplified(meta, points) { - const pointCount = points.length; - let start = 0; - let count; - const { iScale } = meta; - const { min, max, minDefined, maxDefined } = iScale.getUserBounds(); - if (minDefined) { - start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1); - } - if (maxDefined) { - count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start; - } else { - count = pointCount - start; - } - return { - start, - count - }; -} -var plugin_decimation = { - id: "decimation", - defaults: { - algorithm: "min-max", - enabled: false - }, - beforeElementsUpdate: (chart, args, options) => { - if (!options.enabled) { - cleanDecimatedData(chart); - return; - } - const availableWidth = chart.width; - chart.data.datasets.forEach((dataset, datasetIndex) => { - const { _data, indexAxis } = dataset; - const meta = chart.getDatasetMeta(datasetIndex); - const data = _data || dataset.data; - if (resolve([ - indexAxis, - chart.options.indexAxis - ]) === "y") { - return; - } - if (!meta.controller.supportsDecimation) { - return; - } - const xAxis = chart.scales[meta.xAxisID]; - if (xAxis.type !== "linear" && xAxis.type !== "time") { - return; - } - if (chart.options.parsing) { - return; - } - let { start, count } = getStartAndCountOfVisiblePointsSimplified(meta, data); - const threshold = options.threshold || 4 * availableWidth; - if (count <= threshold) { - cleanDecimatedDataset(dataset); - return; - } - if (isNullOrUndef(_data)) { - dataset._data = data; - delete dataset.data; - Object.defineProperty(dataset, "data", { - configurable: true, - enumerable: true, - get: function() { - return this._decimated; - }, - set: function(d) { - this._data = d; - } - }); - } - let decimated; - switch (options.algorithm) { - case "lttb": - decimated = lttbDecimation(data, start, count, availableWidth, options); - break; - case "min-max": - decimated = minMaxDecimation(data, start, count, availableWidth); - break; - default: - throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`); - } - dataset._decimated = decimated; - }); - }, - destroy(chart) { - cleanDecimatedData(chart); - } -}; -function _segments(line, target, property) { - const segments = line.segments; - const points = line.points; - const tpoints = target.points; - const parts = []; - for (const segment of segments) { - let { start, end } = segment; - end = _findSegmentEnd(start, end, points); - const bounds = _getBounds(property, points[start], points[end], segment.loop); - if (!target.segments) { - parts.push({ - source: segment, - target: bounds, - start: points[start], - end: points[end] - }); - continue; - } - const targetSegments = _boundSegments(target, bounds); - for (const tgt of targetSegments) { - const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop); - const fillSources = _boundSegment(segment, points, subBounds); - for (const fillSource of fillSources) { - parts.push({ - source: fillSource, - target: tgt, - start: { - [property]: _getEdge(bounds, subBounds, "start", Math.max) - }, - end: { - [property]: _getEdge(bounds, subBounds, "end", Math.min) - } - }); - } - } - } - return parts; -} -function _getBounds(property, first, last, loop) { - if (loop) { - return; - } - let start = first[property]; - let end = last[property]; - if (property === "angle") { - start = _normalizeAngle(start); - end = _normalizeAngle(end); - } - return { - property, - start, - end - }; -} -function _pointsFromSegments(boundary, line) { - const { x = null, y = null } = boundary || {}; - const linePoints = line.points; - const points = []; - line.segments.forEach(({ start, end }) => { - end = _findSegmentEnd(start, end, linePoints); - const first = linePoints[start]; - const last = linePoints[end]; - if (y !== null) { - points.push({ - x: first.x, - y - }); - points.push({ - x: last.x, - y - }); - } else if (x !== null) { - points.push({ - x, - y: first.y - }); - points.push({ - x, - y: last.y - }); - } - }); - return points; -} -function _findSegmentEnd(start, end, points) { - for (; end > start; end--) { - const point = points[end]; - if (!isNaN(point.x) && !isNaN(point.y)) { - break; - } - } - return end; -} -function _getEdge(a, b, prop, fn) { - if (a && b) { - return fn(a[prop], b[prop]); - } - return a ? a[prop] : b ? b[prop] : 0; -} -function _createBoundaryLine(boundary, line) { - let points = []; - let _loop = false; - if (isArray(boundary)) { - _loop = true; - points = boundary; - } else { - points = _pointsFromSegments(boundary, line); - } - return points.length ? new LineElement({ - points, - options: { - tension: 0 - }, - _loop, - _fullLoop: _loop - }) : null; -} -function _shouldApplyFill(source) { - return source && source.fill !== false; -} -function _resolveTarget(sources, index2, propagate) { - const source = sources[index2]; - let fill2 = source.fill; - const visited = [ - index2 - ]; - let target; - if (!propagate) { - return fill2; - } - while (fill2 !== false && visited.indexOf(fill2) === -1) { - if (!isNumberFinite(fill2)) { - return fill2; - } - target = sources[fill2]; - if (!target) { - return false; - } - if (target.visible) { - return fill2; - } - visited.push(fill2); - fill2 = target.fill; - } - return false; -} -function _decodeFill(line, index2, count) { - const fill2 = parseFillOption(line); - if (isObject(fill2)) { - return isNaN(fill2.value) ? false : fill2; - } - let target = parseFloat(fill2); - if (isNumberFinite(target) && Math.floor(target) === target) { - return decodeTargetIndex(fill2[0], index2, target, count); - } - return [ - "origin", - "start", - "end", - "stack", - "shape" - ].indexOf(fill2) >= 0 && fill2; -} -function decodeTargetIndex(firstCh, index2, target, count) { - if (firstCh === "-" || firstCh === "+") { - target = index2 + target; - } - if (target === index2 || target < 0 || target >= count) { - return false; - } - return target; -} -function _getTargetPixel(fill2, scale) { - let pixel = null; - if (fill2 === "start") { - pixel = scale.bottom; - } else if (fill2 === "end") { - pixel = scale.top; - } else if (isObject(fill2)) { - pixel = scale.getPixelForValue(fill2.value); - } else if (scale.getBasePixel) { - pixel = scale.getBasePixel(); - } - return pixel; -} -function _getTargetValue(fill2, scale, startValue) { - let value; - if (fill2 === "start") { - value = startValue; - } else if (fill2 === "end") { - value = scale.options.reverse ? scale.min : scale.max; - } else if (isObject(fill2)) { - value = fill2.value; - } else { - value = scale.getBaseValue(); - } - return value; -} -function parseFillOption(line) { - const options = line.options; - const fillOption = options.fill; - let fill2 = valueOrDefault(fillOption && fillOption.target, fillOption); - if (fill2 === void 0) { - fill2 = !!options.backgroundColor; - } - if (fill2 === false || fill2 === null) { - return false; - } - if (fill2 === true) { - return "origin"; - } - return fill2; -} -function _buildStackLine(source) { - const { scale, index: index2, line } = source; - const points = []; - const segments = line.segments; - const sourcePoints = line.points; - const linesBelow = getLinesBelow(scale, index2); - linesBelow.push(_createBoundaryLine({ - x: null, - y: scale.bottom - }, line)); - for (let i = 0; i < segments.length; i++) { - const segment = segments[i]; - for (let j = segment.start; j <= segment.end; j++) { - addPointsBelow(points, sourcePoints[j], linesBelow); - } - } - return new LineElement({ - points, - options: {} - }); -} -function getLinesBelow(scale, index2) { - const below = []; - const metas = scale.getMatchingVisibleMetas("line"); - for (let i = 0; i < metas.length; i++) { - const meta = metas[i]; - if (meta.index === index2) { - break; - } - if (!meta.hidden) { - below.unshift(meta.dataset); - } - } - return below; -} -function addPointsBelow(points, sourcePoint, linesBelow) { - const postponed = []; - for (let j = 0; j < linesBelow.length; j++) { - const line = linesBelow[j]; - const { first, last, point } = findPoint(line, sourcePoint, "x"); - if (!point || first && last) { - continue; - } - if (first) { - postponed.unshift(point); - } else { - points.push(point); - if (!last) { - break; - } - } - } - points.push(...postponed); -} -function findPoint(line, sourcePoint, property) { - const point = line.interpolate(sourcePoint, property); - if (!point) { - return {}; - } - const pointValue = point[property]; - const segments = line.segments; - const linePoints = line.points; - let first = false; - let last = false; - for (let i = 0; i < segments.length; i++) { - const segment = segments[i]; - const firstValue = linePoints[segment.start][property]; - const lastValue = linePoints[segment.end][property]; - if (_isBetween(pointValue, firstValue, lastValue)) { - first = pointValue === firstValue; - last = pointValue === lastValue; - break; - } - } - return { - first, - last, - point - }; -} -var simpleArc = class { - constructor(opts) { - this.x = opts.x; - this.y = opts.y; - this.radius = opts.radius; - } - pathSegment(ctx, bounds, opts) { - const { x, y, radius } = this; - bounds = bounds || { - start: 0, - end: TAU - }; - ctx.arc(x, y, radius, bounds.end, bounds.start, true); - return !opts.bounds; - } - interpolate(point) { - const { x, y, radius } = this; - const angle = point.angle; - return { - x: x + Math.cos(angle) * radius, - y: y + Math.sin(angle) * radius, - angle - }; - } -}; -function _getTarget(source) { - const { chart, fill: fill2, line } = source; - if (isNumberFinite(fill2)) { - return getLineByIndex(chart, fill2); - } - if (fill2 === "stack") { - return _buildStackLine(source); - } - if (fill2 === "shape") { - return true; - } - const boundary = computeBoundary(source); - if (boundary instanceof simpleArc) { - return boundary; - } - return _createBoundaryLine(boundary, line); -} -function getLineByIndex(chart, index2) { - const meta = chart.getDatasetMeta(index2); - const visible = meta && chart.isDatasetVisible(index2); - return visible ? meta.dataset : null; -} -function computeBoundary(source) { - const scale = source.scale || {}; - if (scale.getPointPositionForValue) { - return computeCircularBoundary(source); - } - return computeLinearBoundary(source); -} -function computeLinearBoundary(source) { - const { scale = {}, fill: fill2 } = source; - const pixel = _getTargetPixel(fill2, scale); - if (isNumberFinite(pixel)) { - const horizontal = scale.isHorizontal(); - return { - x: horizontal ? pixel : null, - y: horizontal ? null : pixel - }; - } - return null; -} -function computeCircularBoundary(source) { - const { scale, fill: fill2 } = source; - const options = scale.options; - const length = scale.getLabels().length; - const start = options.reverse ? scale.max : scale.min; - const value = _getTargetValue(fill2, scale, start); - const target = []; - if (options.grid.circular) { - const center = scale.getPointPositionForValue(0, start); - return new simpleArc({ - x: center.x, - y: center.y, - radius: scale.getDistanceFromCenterForValue(value) - }); - } - for (let i = 0; i < length; ++i) { - target.push(scale.getPointPositionForValue(i, value)); - } - return target; -} -function _drawfill(ctx, source, area) { - const target = _getTarget(source); - const { chart, index: index2, line, scale, axis } = source; - const lineOpts = line.options; - const fillOption = lineOpts.fill; - const color2 = lineOpts.backgroundColor; - const { above = color2, below = color2 } = fillOption || {}; - const meta = chart.getDatasetMeta(index2); - const clip = getDatasetClipArea(chart, meta); - if (target && line.points.length) { - clipArea(ctx, area); - doFill(ctx, { - line, - target, - above, - below, - area, - scale, - axis, - clip - }); - unclipArea(ctx); - } -} -function doFill(ctx, cfg) { - const { line, target, above, below, area, scale, clip } = cfg; - const property = line._loop ? "angle" : cfg.axis; - ctx.save(); - let fillColor = below; - if (below !== above) { - if (property === "x") { - clipVertical(ctx, target, area.top); - fill(ctx, { - line, - target, - color: above, - scale, - property, - clip - }); - ctx.restore(); - ctx.save(); - clipVertical(ctx, target, area.bottom); - } else if (property === "y") { - clipHorizontal(ctx, target, area.left); - fill(ctx, { - line, - target, - color: below, - scale, - property, - clip - }); - ctx.restore(); - ctx.save(); - clipHorizontal(ctx, target, area.right); - fillColor = above; - } - } - fill(ctx, { - line, - target, - color: fillColor, - scale, - property, - clip - }); - ctx.restore(); -} -function clipVertical(ctx, target, clipY) { - const { segments, points } = target; - let first = true; - let lineLoop = false; - ctx.beginPath(); - for (const segment of segments) { - const { start, end } = segment; - const firstPoint = points[start]; - const lastPoint = points[_findSegmentEnd(start, end, points)]; - if (first) { - ctx.moveTo(firstPoint.x, firstPoint.y); - first = false; - } else { - ctx.lineTo(firstPoint.x, clipY); - ctx.lineTo(firstPoint.x, firstPoint.y); - } - lineLoop = !!target.pathSegment(ctx, segment, { - move: lineLoop - }); - if (lineLoop) { - ctx.closePath(); - } else { - ctx.lineTo(lastPoint.x, clipY); - } - } - ctx.lineTo(target.first().x, clipY); - ctx.closePath(); - ctx.clip(); -} -function clipHorizontal(ctx, target, clipX) { - const { segments, points } = target; - let first = true; - let lineLoop = false; - ctx.beginPath(); - for (const segment of segments) { - const { start, end } = segment; - const firstPoint = points[start]; - const lastPoint = points[_findSegmentEnd(start, end, points)]; - if (first) { - ctx.moveTo(firstPoint.x, firstPoint.y); - first = false; - } else { - ctx.lineTo(clipX, firstPoint.y); - ctx.lineTo(firstPoint.x, firstPoint.y); - } - lineLoop = !!target.pathSegment(ctx, segment, { - move: lineLoop - }); - if (lineLoop) { - ctx.closePath(); - } else { - ctx.lineTo(clipX, lastPoint.y); - } - } - ctx.lineTo(clipX, target.first().y); - ctx.closePath(); - ctx.clip(); -} -function fill(ctx, cfg) { - const { line, target, property, color: color2, scale, clip } = cfg; - const segments = _segments(line, target, property); - for (const { source: src, target: tgt, start, end } of segments) { - const { style: { backgroundColor = color2 } = {} } = src; - const notShape = target !== true; - ctx.save(); - ctx.fillStyle = backgroundColor; - clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end)); - ctx.beginPath(); - const lineLoop = !!line.pathSegment(ctx, src); - let loop; - if (notShape) { - if (lineLoop) { - ctx.closePath(); - } else { - interpolatedLineTo(ctx, target, end, property); - } - const targetLoop = !!target.pathSegment(ctx, tgt, { - move: lineLoop, - reverse: true - }); - loop = lineLoop && targetLoop; - if (!loop) { - interpolatedLineTo(ctx, target, start, property); - } - } - ctx.closePath(); - ctx.fill(loop ? "evenodd" : "nonzero"); - ctx.restore(); - } -} -function clipBounds(ctx, scale, clip, bounds) { - const chartArea = scale.chart.chartArea; - const { property, start, end } = bounds || {}; - if (property === "x" || property === "y") { - let left, top, right, bottom; - if (property === "x") { - left = start; - top = chartArea.top; - right = end; - bottom = chartArea.bottom; - } else { - left = chartArea.left; - top = start; - right = chartArea.right; - bottom = end; - } - ctx.beginPath(); - if (clip) { - left = Math.max(left, clip.left); - right = Math.min(right, clip.right); - top = Math.max(top, clip.top); - bottom = Math.min(bottom, clip.bottom); - } - ctx.rect(left, top, right - left, bottom - top); - ctx.clip(); - } -} -function interpolatedLineTo(ctx, target, point, property) { - const interpolatedPoint = target.interpolate(point, property); - if (interpolatedPoint) { - ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y); - } -} -var index = { - id: "filler", - afterDatasetsUpdate(chart, _args, options) { - const count = (chart.data.datasets || []).length; - const sources = []; - let meta, i, line, source; - for (i = 0; i < count; ++i) { - meta = chart.getDatasetMeta(i); - line = meta.dataset; - source = null; - if (line && line.options && line instanceof LineElement) { - source = { - visible: chart.isDatasetVisible(i), - index: i, - fill: _decodeFill(line, i, count), - chart, - axis: meta.controller.options.indexAxis, - scale: meta.vScale, - line - }; - } - meta.$filler = source; - sources.push(source); - } - for (i = 0; i < count; ++i) { - source = sources[i]; - if (!source || source.fill === false) { - continue; - } - source.fill = _resolveTarget(sources, i, options.propagate); - } - }, - beforeDraw(chart, _args, options) { - const draw2 = options.drawTime === "beforeDraw"; - const metasets = chart.getSortedVisibleDatasetMetas(); - const area = chart.chartArea; - for (let i = metasets.length - 1; i >= 0; --i) { - const source = metasets[i].$filler; - if (!source) { - continue; - } - source.line.updateControlPoints(area, source.axis); - if (draw2 && source.fill) { - _drawfill(chart.ctx, source, area); - } - } - }, - beforeDatasetsDraw(chart, _args, options) { - if (options.drawTime !== "beforeDatasetsDraw") { - return; - } - const metasets = chart.getSortedVisibleDatasetMetas(); - for (let i = metasets.length - 1; i >= 0; --i) { - const source = metasets[i].$filler; - if (_shouldApplyFill(source)) { - _drawfill(chart.ctx, source, chart.chartArea); - } - } - }, - beforeDatasetDraw(chart, args, options) { - const source = args.meta.$filler; - if (!_shouldApplyFill(source) || options.drawTime !== "beforeDatasetDraw") { - return; - } - _drawfill(chart.ctx, source, chart.chartArea); - }, - defaults: { - propagate: true, - drawTime: "beforeDatasetDraw" - } -}; -var getBoxSize = (labelOpts, fontSize) => { - let { boxHeight = fontSize, boxWidth = fontSize } = labelOpts; - if (labelOpts.usePointStyle) { - boxHeight = Math.min(boxHeight, fontSize); - boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize); - } - return { - boxWidth, - boxHeight, - itemHeight: Math.max(fontSize, boxHeight) - }; -}; -var itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index; -var Legend = class extends Element { - constructor(config) { - super(); - this._added = false; - this.legendHitBoxes = []; - this._hoveredItem = null; - this.doughnutMode = false; - this.chart = config.chart; - this.options = config.options; - this.ctx = config.ctx; - this.legendItems = void 0; - this.columnSizes = void 0; - this.lineWidths = void 0; - this.maxHeight = void 0; - this.maxWidth = void 0; - this.top = void 0; - this.bottom = void 0; - this.left = void 0; - this.right = void 0; - this.height = void 0; - this.width = void 0; - this._margins = void 0; - this.position = void 0; - this.weight = void 0; - this.fullSize = void 0; - } - update(maxWidth, maxHeight, margins) { - this.maxWidth = maxWidth; - this.maxHeight = maxHeight; - this._margins = margins; - this.setDimensions(); - this.buildLabels(); - this.fit(); - } - setDimensions() { - if (this.isHorizontal()) { - this.width = this.maxWidth; - this.left = this._margins.left; - this.right = this.width; - } else { - this.height = this.maxHeight; - this.top = this._margins.top; - this.bottom = this.height; - } - } - buildLabels() { - const labelOpts = this.options.labels || {}; - let legendItems = callback(labelOpts.generateLabels, [ - this.chart - ], this) || []; - if (labelOpts.filter) { - legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data)); - } - if (labelOpts.sort) { - legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data)); - } - if (this.options.reverse) { - legendItems.reverse(); - } - this.legendItems = legendItems; - } - fit() { - const { options, ctx } = this; - if (!options.display) { - this.width = this.height = 0; - return; - } - const labelOpts = options.labels; - const labelFont = toFont(labelOpts.font); - const fontSize = labelFont.size; - const titleHeight = this._computeTitleHeight(); - const { boxWidth, itemHeight } = getBoxSize(labelOpts, fontSize); - let width, height; - ctx.font = labelFont.string; - if (this.isHorizontal()) { - width = this.maxWidth; - height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10; - } else { - height = this.maxHeight; - width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10; - } - this.width = Math.min(width, options.maxWidth || this.maxWidth); - this.height = Math.min(height, options.maxHeight || this.maxHeight); - } - _fitRows(titleHeight, fontSize, boxWidth, itemHeight) { - const { ctx, maxWidth, options: { labels: { padding } } } = this; - const hitboxes = this.legendHitBoxes = []; - const lineWidths = this.lineWidths = [ - 0 - ]; - const lineHeight = itemHeight + padding; - let totalHeight = titleHeight; - ctx.textAlign = "left"; - ctx.textBaseline = "middle"; - let row = -1; - let top = -lineHeight; - this.legendItems.forEach((legendItem, i) => { - const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width; - if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) { - totalHeight += lineHeight; - lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0; - top += lineHeight; - row++; - } - hitboxes[i] = { - left: 0, - top, - row, - width: itemWidth, - height: itemHeight - }; - lineWidths[lineWidths.length - 1] += itemWidth + padding; - }); - return totalHeight; - } - _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) { - const { ctx, maxHeight, options: { labels: { padding } } } = this; - const hitboxes = this.legendHitBoxes = []; - const columnSizes = this.columnSizes = []; - const heightLimit = maxHeight - titleHeight; - let totalWidth = padding; - let currentColWidth = 0; - let currentColHeight = 0; - let left = 0; - let col = 0; - this.legendItems.forEach((legendItem, i) => { - const { itemWidth, itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight); - if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { - totalWidth += currentColWidth + padding; - columnSizes.push({ - width: currentColWidth, - height: currentColHeight - }); - left += currentColWidth + padding; - col++; - currentColWidth = currentColHeight = 0; - } - hitboxes[i] = { - left, - top: currentColHeight, - col, - width: itemWidth, - height: itemHeight - }; - currentColWidth = Math.max(currentColWidth, itemWidth); - currentColHeight += itemHeight + padding; - }); - totalWidth += currentColWidth; - columnSizes.push({ - width: currentColWidth, - height: currentColHeight - }); - return totalWidth; - } - adjustHitBoxes() { - if (!this.options.display) { - return; - } - const titleHeight = this._computeTitleHeight(); - const { legendHitBoxes: hitboxes, options: { align, labels: { padding }, rtl } } = this; - const rtlHelper = getRtlAdapter(rtl, this.left, this.width); - if (this.isHorizontal()) { - let row = 0; - let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); - for (const hitbox of hitboxes) { - if (row !== hitbox.row) { - row = hitbox.row; - left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]); - } - hitbox.top += this.top + titleHeight + padding; - hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width); - left += hitbox.width + padding; - } - } else { - let col = 0; - let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); - for (const hitbox of hitboxes) { - if (hitbox.col !== col) { - col = hitbox.col; - top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height); - } - hitbox.top = top; - hitbox.left += this.left + padding; - hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width); - top += hitbox.height + padding; - } - } - } - isHorizontal() { - return this.options.position === "top" || this.options.position === "bottom"; - } - draw() { - if (this.options.display) { - const ctx = this.ctx; - clipArea(ctx, this); - this._draw(); - unclipArea(ctx); - } - } - _draw() { - const { options: opts, columnSizes, lineWidths, ctx } = this; - const { align, labels: labelOpts } = opts; - const defaultColor = defaults.color; - const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); - const labelFont = toFont(labelOpts.font); - const { padding } = labelOpts; - const fontSize = labelFont.size; - const halfFontSize = fontSize / 2; - let cursor; - this.drawTitle(); - ctx.textAlign = rtlHelper.textAlign("left"); - ctx.textBaseline = "middle"; - ctx.lineWidth = 0.5; - ctx.font = labelFont.string; - const { boxWidth, boxHeight, itemHeight } = getBoxSize(labelOpts, fontSize); - const drawLegendBox = function(x, y, legendItem) { - if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) { - return; - } - ctx.save(); - const lineWidth = valueOrDefault(legendItem.lineWidth, 1); - ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor); - ctx.lineCap = valueOrDefault(legendItem.lineCap, "butt"); - ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0); - ctx.lineJoin = valueOrDefault(legendItem.lineJoin, "miter"); - ctx.lineWidth = lineWidth; - ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor); - ctx.setLineDash(valueOrDefault(legendItem.lineDash, [])); - if (labelOpts.usePointStyle) { - const drawOptions = { - radius: boxHeight * Math.SQRT2 / 2, - pointStyle: legendItem.pointStyle, - rotation: legendItem.rotation, - borderWidth: lineWidth - }; - const centerX = rtlHelper.xPlus(x, boxWidth / 2); - const centerY = y + halfFontSize; - drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth); - } else { - const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0); - const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth); - const borderRadius = toTRBLCorners(legendItem.borderRadius); - ctx.beginPath(); - if (Object.values(borderRadius).some((v) => v !== 0)) { - addRoundedRectPath(ctx, { - x: xBoxLeft, - y: yBoxTop, - w: boxWidth, - h: boxHeight, - radius: borderRadius - }); - } else { - ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight); - } - ctx.fill(); - if (lineWidth !== 0) { - ctx.stroke(); - } - } - ctx.restore(); - }; - const fillText = function(x, y, legendItem) { - renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, { - strikethrough: legendItem.hidden, - textAlign: rtlHelper.textAlign(legendItem.textAlign) - }); - }; - const isHorizontal = this.isHorizontal(); - const titleHeight = this._computeTitleHeight(); - if (isHorizontal) { - cursor = { - x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]), - y: this.top + padding + titleHeight, - line: 0 - }; - } else { - cursor = { - x: this.left + padding, - y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height), - line: 0 - }; - } - overrideTextDirection(this.ctx, opts.textDirection); - const lineHeight = itemHeight + padding; - this.legendItems.forEach((legendItem, i) => { - ctx.strokeStyle = legendItem.fontColor; - ctx.fillStyle = legendItem.fontColor; - const textWidth = ctx.measureText(legendItem.text).width; - const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign)); - const width = boxWidth + halfFontSize + textWidth; - let x = cursor.x; - let y = cursor.y; - rtlHelper.setWidth(this.width); - if (isHorizontal) { - if (i > 0 && x + width + padding > this.right) { - y = cursor.y += lineHeight; - cursor.line++; - x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]); - } - } else if (i > 0 && y + lineHeight > this.bottom) { - x = cursor.x = x + columnSizes[cursor.line].width + padding; - cursor.line++; - y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height); - } - const realX = rtlHelper.x(x); - drawLegendBox(realX, y, legendItem); - x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl); - fillText(rtlHelper.x(x), y, legendItem); - if (isHorizontal) { - cursor.x += width + padding; - } else if (typeof legendItem.text !== "string") { - const fontLineHeight = labelFont.lineHeight; - cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding; - } else { - cursor.y += lineHeight; - } - }); - restoreTextDirection(this.ctx, opts.textDirection); - } - drawTitle() { - const opts = this.options; - const titleOpts = opts.title; - const titleFont = toFont(titleOpts.font); - const titlePadding = toPadding(titleOpts.padding); - if (!titleOpts.display) { - return; - } - const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width); - const ctx = this.ctx; - const position = titleOpts.position; - const halfFontSize = titleFont.size / 2; - const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize; - let y; - let left = this.left; - let maxWidth = this.width; - if (this.isHorizontal()) { - maxWidth = Math.max(...this.lineWidths); - y = this.top + topPaddingPlusHalfFontSize; - left = _alignStartEnd(opts.align, left, this.right - maxWidth); - } else { - const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0); - y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight()); - } - const x = _alignStartEnd(position, left, left + maxWidth); - ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position)); - ctx.textBaseline = "middle"; - ctx.strokeStyle = titleOpts.color; - ctx.fillStyle = titleOpts.color; - ctx.font = titleFont.string; - renderText(ctx, titleOpts.text, x, y, titleFont); - } - _computeTitleHeight() { - const titleOpts = this.options.title; - const titleFont = toFont(titleOpts.font); - const titlePadding = toPadding(titleOpts.padding); - return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0; - } - _getLegendItemAt(x, y) { - let i, hitBox, lh; - if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) { - lh = this.legendHitBoxes; - for (i = 0; i < lh.length; ++i) { - hitBox = lh[i]; - if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) { - return this.legendItems[i]; - } - } - } - return null; - } - handleEvent(e) { - const opts = this.options; - if (!isListened(e.type, opts)) { - return; - } - const hoveredItem = this._getLegendItemAt(e.x, e.y); - if (e.type === "mousemove" || e.type === "mouseout") { - const previous = this._hoveredItem; - const sameItem = itemsEqual(previous, hoveredItem); - if (previous && !sameItem) { - callback(opts.onLeave, [ - e, - previous, - this - ], this); - } - this._hoveredItem = hoveredItem; - if (hoveredItem && !sameItem) { - callback(opts.onHover, [ - e, - hoveredItem, - this - ], this); - } - } else if (hoveredItem) { - callback(opts.onClick, [ - e, - hoveredItem, - this - ], this); - } - } -}; -function calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) { - const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx); - const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight); - return { - itemWidth, - itemHeight - }; -} -function calculateItemWidth(legendItem, boxWidth, labelFont, ctx) { - let legendItemText = legendItem.text; - if (legendItemText && typeof legendItemText !== "string") { - legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b); - } - return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width; -} -function calculateItemHeight(_itemHeight, legendItem, fontLineHeight) { - let itemHeight = _itemHeight; - if (typeof legendItem.text !== "string") { - itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight); - } - return itemHeight; -} -function calculateLegendItemHeight(legendItem, fontLineHeight) { - const labelHeight = legendItem.text ? legendItem.text.length : 0; - return fontLineHeight * labelHeight; -} -function isListened(type, opts) { - if ((type === "mousemove" || type === "mouseout") && (opts.onHover || opts.onLeave)) { - return true; - } - if (opts.onClick && (type === "click" || type === "mouseup")) { - return true; - } - return false; -} -var plugin_legend = { - id: "legend", - _element: Legend, - start(chart, _args, options) { - const legend = chart.legend = new Legend({ - ctx: chart.ctx, - options, - chart - }); - layouts.configure(chart, legend, options); - layouts.addBox(chart, legend); - }, - stop(chart) { - layouts.removeBox(chart, chart.legend); - delete chart.legend; - }, - beforeUpdate(chart, _args, options) { - const legend = chart.legend; - layouts.configure(chart, legend, options); - legend.options = options; - }, - afterUpdate(chart) { - const legend = chart.legend; - legend.buildLabels(); - legend.adjustHitBoxes(); - }, - afterEvent(chart, args) { - if (!args.replay) { - chart.legend.handleEvent(args.event); - } - }, - defaults: { - display: true, - position: "top", - align: "center", - fullSize: true, - reverse: false, - weight: 1e3, - onClick(e, legendItem, legend) { - const index2 = legendItem.datasetIndex; - const ci = legend.chart; - if (ci.isDatasetVisible(index2)) { - ci.hide(index2); - legendItem.hidden = true; - } else { - ci.show(index2); - legendItem.hidden = false; - } - }, - onHover: null, - onLeave: null, - labels: { - color: (ctx) => ctx.chart.options.color, - boxWidth: 40, - padding: 10, - generateLabels(chart) { - const datasets = chart.data.datasets; - const { labels: { usePointStyle, pointStyle, textAlign, color: color2, useBorderRadius, borderRadius } } = chart.legend.options; - return chart._getSortedDatasetMetas().map((meta) => { - const style = meta.controller.getStyle(usePointStyle ? 0 : void 0); - const borderWidth = toPadding(style.borderWidth); - return { - text: datasets[meta.index].label, - fillStyle: style.backgroundColor, - fontColor: color2, - hidden: !meta.visible, - lineCap: style.borderCapStyle, - lineDash: style.borderDash, - lineDashOffset: style.borderDashOffset, - lineJoin: style.borderJoinStyle, - lineWidth: (borderWidth.width + borderWidth.height) / 4, - strokeStyle: style.borderColor, - pointStyle: pointStyle || style.pointStyle, - rotation: style.rotation, - textAlign: textAlign || style.textAlign, - borderRadius: useBorderRadius && (borderRadius || style.borderRadius), - datasetIndex: meta.index - }; - }, this); - } - }, - title: { - color: (ctx) => ctx.chart.options.color, - display: false, - position: "center", - text: "" - } - }, - descriptors: { - _scriptable: (name) => !name.startsWith("on"), - labels: { - _scriptable: (name) => ![ - "generateLabels", - "filter", - "sort" - ].includes(name) - } - } -}; -var Title = class extends Element { - constructor(config) { - super(); - this.chart = config.chart; - this.options = config.options; - this.ctx = config.ctx; - this._padding = void 0; - this.top = void 0; - this.bottom = void 0; - this.left = void 0; - this.right = void 0; - this.width = void 0; - this.height = void 0; - this.position = void 0; - this.weight = void 0; - this.fullSize = void 0; - } - update(maxWidth, maxHeight) { - const opts = this.options; - this.left = 0; - this.top = 0; - if (!opts.display) { - this.width = this.height = this.right = this.bottom = 0; - return; - } - this.width = this.right = maxWidth; - this.height = this.bottom = maxHeight; - const lineCount = isArray(opts.text) ? opts.text.length : 1; - this._padding = toPadding(opts.padding); - const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height; - if (this.isHorizontal()) { - this.height = textSize; - } else { - this.width = textSize; - } - } - isHorizontal() { - const pos = this.options.position; - return pos === "top" || pos === "bottom"; - } - _drawArgs(offset) { - const { top, left, bottom, right, options } = this; - const align = options.align; - let rotation = 0; - let maxWidth, titleX, titleY; - if (this.isHorizontal()) { - titleX = _alignStartEnd(align, left, right); - titleY = top + offset; - maxWidth = right - left; - } else { - if (options.position === "left") { - titleX = left + offset; - titleY = _alignStartEnd(align, bottom, top); - rotation = PI * -0.5; - } else { - titleX = right - offset; - titleY = _alignStartEnd(align, top, bottom); - rotation = PI * 0.5; - } - maxWidth = bottom - top; - } - return { - titleX, - titleY, - maxWidth, - rotation - }; - } - draw() { - const ctx = this.ctx; - const opts = this.options; - if (!opts.display) { - return; - } - const fontOpts = toFont(opts.font); - const lineHeight = fontOpts.lineHeight; - const offset = lineHeight / 2 + this._padding.top; - const { titleX, titleY, maxWidth, rotation } = this._drawArgs(offset); - renderText(ctx, opts.text, 0, 0, fontOpts, { - color: opts.color, - maxWidth, - rotation, - textAlign: _toLeftRightCenter(opts.align), - textBaseline: "middle", - translation: [ - titleX, - titleY - ] - }); - } -}; -function createTitle(chart, titleOpts) { - const title = new Title({ - ctx: chart.ctx, - options: titleOpts, - chart - }); - layouts.configure(chart, title, titleOpts); - layouts.addBox(chart, title); - chart.titleBlock = title; -} -var plugin_title = { - id: "title", - _element: Title, - start(chart, _args, options) { - createTitle(chart, options); - }, - stop(chart) { - const titleBlock = chart.titleBlock; - layouts.removeBox(chart, titleBlock); - delete chart.titleBlock; - }, - beforeUpdate(chart, _args, options) { - const title = chart.titleBlock; - layouts.configure(chart, title, options); - title.options = options; - }, - defaults: { - align: "center", - display: false, - font: { - weight: "bold" - }, - fullSize: true, - padding: 10, - position: "top", - text: "", - weight: 2e3 - }, - defaultRoutes: { - color: "color" - }, - descriptors: { - _scriptable: true, - _indexable: false - } -}; -var map2 = /* @__PURE__ */ new WeakMap(); -var plugin_subtitle = { - id: "subtitle", - start(chart, _args, options) { - const title = new Title({ - ctx: chart.ctx, - options, - chart - }); - layouts.configure(chart, title, options); - layouts.addBox(chart, title); - map2.set(chart, title); - }, - stop(chart) { - layouts.removeBox(chart, map2.get(chart)); - map2.delete(chart); - }, - beforeUpdate(chart, _args, options) { - const title = map2.get(chart); - layouts.configure(chart, title, options); - title.options = options; - }, - defaults: { - align: "center", - display: false, - font: { - weight: "normal" - }, - fullSize: true, - padding: 0, - position: "top", - text: "", - weight: 1500 - }, - defaultRoutes: { - color: "color" - }, - descriptors: { - _scriptable: true, - _indexable: false - } -}; -var positioners = { - average(items) { - if (!items.length) { - return false; - } - let i, len; - let xSet = /* @__PURE__ */ new Set(); - let y = 0; - let count = 0; - for (i = 0, len = items.length; i < len; ++i) { - const el = items[i].element; - if (el && el.hasValue()) { - const pos = el.tooltipPosition(); - xSet.add(pos.x); - y += pos.y; - ++count; - } - } - if (count === 0 || xSet.size === 0) { - return false; - } - const xAverage = [ - ...xSet - ].reduce((a, b) => a + b) / xSet.size; - return { - x: xAverage, - y: y / count - }; - }, - nearest(items, eventPosition) { - if (!items.length) { - return false; - } - let x = eventPosition.x; - let y = eventPosition.y; - let minDistance = Number.POSITIVE_INFINITY; - let i, len, nearestElement; - for (i = 0, len = items.length; i < len; ++i) { - const el = items[i].element; - if (el && el.hasValue()) { - const center = el.getCenterPoint(); - const d = distanceBetweenPoints(eventPosition, center); - if (d < minDistance) { - minDistance = d; - nearestElement = el; - } - } - } - if (nearestElement) { - const tp = nearestElement.tooltipPosition(); - x = tp.x; - y = tp.y; - } - return { - x, - y - }; - } -}; -function pushOrConcat(base, toPush) { - if (toPush) { - if (isArray(toPush)) { - Array.prototype.push.apply(base, toPush); - } else { - base.push(toPush); - } - } - return base; -} -function splitNewlines(str) { - if ((typeof str === "string" || str instanceof String) && str.indexOf("\n") > -1) { - return str.split("\n"); - } - return str; -} -function createTooltipItem(chart, item) { - const { element, datasetIndex, index: index2 } = item; - const controller = chart.getDatasetMeta(datasetIndex).controller; - const { label, value } = controller.getLabelAndValue(index2); - return { - chart, - label, - parsed: controller.getParsed(index2), - raw: chart.data.datasets[datasetIndex].data[index2], - formattedValue: value, - dataset: controller.getDataset(), - dataIndex: index2, - datasetIndex, - element - }; -} -function getTooltipSize(tooltip, options) { - const ctx = tooltip.chart.ctx; - const { body, footer, title } = tooltip; - const { boxWidth, boxHeight } = options; - const bodyFont = toFont(options.bodyFont); - const titleFont = toFont(options.titleFont); - const footerFont = toFont(options.footerFont); - const titleLineCount = title.length; - const footerLineCount = footer.length; - const bodyLineItemCount = body.length; - const padding = toPadding(options.padding); - let height = padding.height; - let width = 0; - let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0); - combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length; - if (titleLineCount) { - height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom; - } - if (combinedBodyLength) { - const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight; - height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing; - } - if (footerLineCount) { - height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing; - } - let widthPadding = 0; - const maxLineWidth = function(line) { - width = Math.max(width, ctx.measureText(line).width + widthPadding); - }; - ctx.save(); - ctx.font = titleFont.string; - each(tooltip.title, maxLineWidth); - ctx.font = bodyFont.string; - each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth); - widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0; - each(body, (bodyItem) => { - each(bodyItem.before, maxLineWidth); - each(bodyItem.lines, maxLineWidth); - each(bodyItem.after, maxLineWidth); - }); - widthPadding = 0; - ctx.font = footerFont.string; - each(tooltip.footer, maxLineWidth); - ctx.restore(); - width += padding.width; - return { - width, - height - }; -} -function determineYAlign(chart, size) { - const { y, height } = size; - if (y < height / 2) { - return "top"; - } else if (y > chart.height - height / 2) { - return "bottom"; - } - return "center"; -} -function doesNotFitWithAlign(xAlign, chart, options, size) { - const { x, width } = size; - const caret = options.caretSize + options.caretPadding; - if (xAlign === "left" && x + width + caret > chart.width) { - return true; - } - if (xAlign === "right" && x - width - caret < 0) { - return true; - } -} -function determineXAlign(chart, options, size, yAlign) { - const { x, width } = size; - const { width: chartWidth, chartArea: { left, right } } = chart; - let xAlign = "center"; - if (yAlign === "center") { - xAlign = x <= (left + right) / 2 ? "left" : "right"; - } else if (x <= width / 2) { - xAlign = "left"; - } else if (x >= chartWidth - width / 2) { - xAlign = "right"; - } - if (doesNotFitWithAlign(xAlign, chart, options, size)) { - xAlign = "center"; - } - return xAlign; -} -function determineAlignment(chart, options, size) { - const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size); - return { - xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign), - yAlign - }; -} -function alignX(size, xAlign) { - let { x, width } = size; - if (xAlign === "right") { - x -= width; - } else if (xAlign === "center") { - x -= width / 2; - } - return x; -} -function alignY(size, yAlign, paddingAndSize) { - let { y, height } = size; - if (yAlign === "top") { - y += paddingAndSize; - } else if (yAlign === "bottom") { - y -= height + paddingAndSize; - } else { - y -= height / 2; - } - return y; -} -function getBackgroundPoint(options, size, alignment, chart) { - const { caretSize, caretPadding, cornerRadius } = options; - const { xAlign, yAlign } = alignment; - const paddingAndSize = caretSize + caretPadding; - const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); - let x = alignX(size, xAlign); - const y = alignY(size, yAlign, paddingAndSize); - if (yAlign === "center") { - if (xAlign === "left") { - x += paddingAndSize; - } else if (xAlign === "right") { - x -= paddingAndSize; - } - } else if (xAlign === "left") { - x -= Math.max(topLeft, bottomLeft) + caretSize; - } else if (xAlign === "right") { - x += Math.max(topRight, bottomRight) + caretSize; - } - return { - x: _limitValue(x, 0, chart.width - size.width), - y: _limitValue(y, 0, chart.height - size.height) - }; -} -function getAlignedX(tooltip, align, options) { - const padding = toPadding(options.padding); - return align === "center" ? tooltip.x + tooltip.width / 2 : align === "right" ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left; -} -function getBeforeAfterBodyLines(callback2) { - return pushOrConcat([], splitNewlines(callback2)); -} -function createTooltipContext(parent, tooltip, tooltipItems) { - return createContext(parent, { - tooltip, - tooltipItems, - type: "tooltip" - }); -} -function overrideCallbacks(callbacks, context) { - const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks; - return override ? callbacks.override(override) : callbacks; -} -var defaultCallbacks = { - beforeTitle: noop, - title(tooltipItems) { - if (tooltipItems.length > 0) { - const item = tooltipItems[0]; - const labels = item.chart.data.labels; - const labelCount = labels ? labels.length : 0; - if (this && this.options && this.options.mode === "dataset") { - return item.dataset.label || ""; - } else if (item.label) { - return item.label; - } else if (labelCount > 0 && item.dataIndex < labelCount) { - return labels[item.dataIndex]; - } - } - return ""; - }, - afterTitle: noop, - beforeBody: noop, - beforeLabel: noop, - label(tooltipItem) { - if (this && this.options && this.options.mode === "dataset") { - return tooltipItem.label + ": " + tooltipItem.formattedValue || tooltipItem.formattedValue; - } - let label = tooltipItem.dataset.label || ""; - if (label) { - label += ": "; - } - const value = tooltipItem.formattedValue; - if (!isNullOrUndef(value)) { - label += value; - } - return label; - }, - labelColor(tooltipItem) { - const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); - const options = meta.controller.getStyle(tooltipItem.dataIndex); - return { - borderColor: options.borderColor, - backgroundColor: options.backgroundColor, - borderWidth: options.borderWidth, - borderDash: options.borderDash, - borderDashOffset: options.borderDashOffset, - borderRadius: 0 - }; - }, - labelTextColor() { - return this.options.bodyColor; - }, - labelPointStyle(tooltipItem) { - const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex); - const options = meta.controller.getStyle(tooltipItem.dataIndex); - return { - pointStyle: options.pointStyle, - rotation: options.rotation - }; - }, - afterLabel: noop, - afterBody: noop, - beforeFooter: noop, - footer: noop, - afterFooter: noop -}; -function invokeCallbackWithFallback(callbacks, name, ctx, arg) { - const result = callbacks[name].call(ctx, arg); - if (typeof result === "undefined") { - return defaultCallbacks[name].call(ctx, arg); - } - return result; -} -var Tooltip = class extends Element { - constructor(config) { - super(); - this.opacity = 0; - this._active = []; - this._eventPosition = void 0; - this._size = void 0; - this._cachedAnimations = void 0; - this._tooltipItems = []; - this.$animations = void 0; - this.$context = void 0; - this.chart = config.chart; - this.options = config.options; - this.dataPoints = void 0; - this.title = void 0; - this.beforeBody = void 0; - this.body = void 0; - this.afterBody = void 0; - this.footer = void 0; - this.xAlign = void 0; - this.yAlign = void 0; - this.x = void 0; - this.y = void 0; - this.height = void 0; - this.width = void 0; - this.caretX = void 0; - this.caretY = void 0; - this.labelColors = void 0; - this.labelPointStyles = void 0; - this.labelTextColors = void 0; - } - initialize(options) { - this.options = options; - this._cachedAnimations = void 0; - this.$context = void 0; - } - _resolveAnimations() { - const cached = this._cachedAnimations; - if (cached) { - return cached; - } - const chart = this.chart; - const options = this.options.setContext(this.getContext()); - const opts = options.enabled && chart.options.animation && options.animations; - const animations = new Animations(this.chart, opts); - if (opts._cacheable) { - this._cachedAnimations = Object.freeze(animations); - } - return animations; - } - getContext() { - return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems)); - } - getTitle(context, options) { - const { callbacks } = options; - const beforeTitle = invokeCallbackWithFallback(callbacks, "beforeTitle", this, context); - const title = invokeCallbackWithFallback(callbacks, "title", this, context); - const afterTitle = invokeCallbackWithFallback(callbacks, "afterTitle", this, context); - let lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeTitle)); - lines = pushOrConcat(lines, splitNewlines(title)); - lines = pushOrConcat(lines, splitNewlines(afterTitle)); - return lines; - } - getBeforeBody(tooltipItems, options) { - return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, "beforeBody", this, tooltipItems)); - } - getBody(tooltipItems, options) { - const { callbacks } = options; - const bodyItems = []; - each(tooltipItems, (context) => { - const bodyItem = { - before: [], - lines: [], - after: [] - }; - const scoped = overrideCallbacks(callbacks, context); - pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, "beforeLabel", this, context))); - pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, "label", this, context)); - pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, "afterLabel", this, context))); - bodyItems.push(bodyItem); - }); - return bodyItems; - } - getAfterBody(tooltipItems, options) { - return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, "afterBody", this, tooltipItems)); - } - getFooter(tooltipItems, options) { - const { callbacks } = options; - const beforeFooter = invokeCallbackWithFallback(callbacks, "beforeFooter", this, tooltipItems); - const footer = invokeCallbackWithFallback(callbacks, "footer", this, tooltipItems); - const afterFooter = invokeCallbackWithFallback(callbacks, "afterFooter", this, tooltipItems); - let lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeFooter)); - lines = pushOrConcat(lines, splitNewlines(footer)); - lines = pushOrConcat(lines, splitNewlines(afterFooter)); - return lines; - } - _createItems(options) { - const active = this._active; - const data = this.chart.data; - const labelColors = []; - const labelPointStyles = []; - const labelTextColors = []; - let tooltipItems = []; - let i, len; - for (i = 0, len = active.length; i < len; ++i) { - tooltipItems.push(createTooltipItem(this.chart, active[i])); - } - if (options.filter) { - tooltipItems = tooltipItems.filter((element, index2, array) => options.filter(element, index2, array, data)); - } - if (options.itemSort) { - tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data)); - } - each(tooltipItems, (context) => { - const scoped = overrideCallbacks(options.callbacks, context); - labelColors.push(invokeCallbackWithFallback(scoped, "labelColor", this, context)); - labelPointStyles.push(invokeCallbackWithFallback(scoped, "labelPointStyle", this, context)); - labelTextColors.push(invokeCallbackWithFallback(scoped, "labelTextColor", this, context)); - }); - this.labelColors = labelColors; - this.labelPointStyles = labelPointStyles; - this.labelTextColors = labelTextColors; - this.dataPoints = tooltipItems; - return tooltipItems; - } - update(changed, replay) { - const options = this.options.setContext(this.getContext()); - const active = this._active; - let properties; - let tooltipItems = []; - if (!active.length) { - if (this.opacity !== 0) { - properties = { - opacity: 0 - }; - } - } else { - const position = positioners[options.position].call(this, active, this._eventPosition); - tooltipItems = this._createItems(options); - this.title = this.getTitle(tooltipItems, options); - this.beforeBody = this.getBeforeBody(tooltipItems, options); - this.body = this.getBody(tooltipItems, options); - this.afterBody = this.getAfterBody(tooltipItems, options); - this.footer = this.getFooter(tooltipItems, options); - const size = this._size = getTooltipSize(this, options); - const positionAndSize = Object.assign({}, position, size); - const alignment = determineAlignment(this.chart, options, positionAndSize); - const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart); - this.xAlign = alignment.xAlign; - this.yAlign = alignment.yAlign; - properties = { - opacity: 1, - x: backgroundPoint.x, - y: backgroundPoint.y, - width: size.width, - height: size.height, - caretX: position.x, - caretY: position.y - }; - } - this._tooltipItems = tooltipItems; - this.$context = void 0; - if (properties) { - this._resolveAnimations().update(this, properties); - } - if (changed && options.external) { - options.external.call(this, { - chart: this.chart, - tooltip: this, - replay - }); - } - } - drawCaret(tooltipPoint, ctx, size, options) { - const caretPosition = this.getCaretPosition(tooltipPoint, size, options); - ctx.lineTo(caretPosition.x1, caretPosition.y1); - ctx.lineTo(caretPosition.x2, caretPosition.y2); - ctx.lineTo(caretPosition.x3, caretPosition.y3); - } - getCaretPosition(tooltipPoint, size, options) { - const { xAlign, yAlign } = this; - const { caretSize, cornerRadius } = options; - const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(cornerRadius); - const { x: ptX, y: ptY } = tooltipPoint; - const { width, height } = size; - let x1, x2, x3, y1, y2, y3; - if (yAlign === "center") { - y2 = ptY + height / 2; - if (xAlign === "left") { - x1 = ptX; - x2 = x1 - caretSize; - y1 = y2 + caretSize; - y3 = y2 - caretSize; - } else { - x1 = ptX + width; - x2 = x1 + caretSize; - y1 = y2 - caretSize; - y3 = y2 + caretSize; - } - x3 = x1; - } else { - if (xAlign === "left") { - x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize; - } else if (xAlign === "right") { - x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize; - } else { - x2 = this.caretX; - } - if (yAlign === "top") { - y1 = ptY; - y2 = y1 - caretSize; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else { - y1 = ptY + height; - y2 = y1 + caretSize; - x1 = x2 + caretSize; - x3 = x2 - caretSize; - } - y3 = y1; - } - return { - x1, - x2, - x3, - y1, - y2, - y3 - }; - } - drawTitle(pt, ctx, options) { - const title = this.title; - const length = title.length; - let titleFont, titleSpacing, i; - if (length) { - const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); - pt.x = getAlignedX(this, options.titleAlign, options); - ctx.textAlign = rtlHelper.textAlign(options.titleAlign); - ctx.textBaseline = "middle"; - titleFont = toFont(options.titleFont); - titleSpacing = options.titleSpacing; - ctx.fillStyle = options.titleColor; - ctx.font = titleFont.string; - for (i = 0; i < length; ++i) { - ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2); - pt.y += titleFont.lineHeight + titleSpacing; - if (i + 1 === length) { - pt.y += options.titleMarginBottom - titleSpacing; - } - } - } - } - _drawColorBox(ctx, pt, i, rtlHelper, options) { - const labelColor = this.labelColors[i]; - const labelPointStyle = this.labelPointStyles[i]; - const { boxHeight, boxWidth } = options; - const bodyFont = toFont(options.bodyFont); - const colorX = getAlignedX(this, "left", options); - const rtlColorX = rtlHelper.x(colorX); - const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0; - const colorY = pt.y + yOffSet; - if (options.usePointStyle) { - const drawOptions = { - radius: Math.min(boxWidth, boxHeight) / 2, - pointStyle: labelPointStyle.pointStyle, - rotation: labelPointStyle.rotation, - borderWidth: 1 - }; - const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2; - const centerY = colorY + boxHeight / 2; - ctx.strokeStyle = options.multiKeyBackground; - ctx.fillStyle = options.multiKeyBackground; - drawPoint(ctx, drawOptions, centerX, centerY); - ctx.strokeStyle = labelColor.borderColor; - ctx.fillStyle = labelColor.backgroundColor; - drawPoint(ctx, drawOptions, centerX, centerY); - } else { - ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1; - ctx.strokeStyle = labelColor.borderColor; - ctx.setLineDash(labelColor.borderDash || []); - ctx.lineDashOffset = labelColor.borderDashOffset || 0; - const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth); - const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2); - const borderRadius = toTRBLCorners(labelColor.borderRadius); - if (Object.values(borderRadius).some((v) => v !== 0)) { - ctx.beginPath(); - ctx.fillStyle = options.multiKeyBackground; - addRoundedRectPath(ctx, { - x: outerX, - y: colorY, - w: boxWidth, - h: boxHeight, - radius: borderRadius - }); - ctx.fill(); - ctx.stroke(); - ctx.fillStyle = labelColor.backgroundColor; - ctx.beginPath(); - addRoundedRectPath(ctx, { - x: innerX, - y: colorY + 1, - w: boxWidth - 2, - h: boxHeight - 2, - radius: borderRadius - }); - ctx.fill(); - } else { - ctx.fillStyle = options.multiKeyBackground; - ctx.fillRect(outerX, colorY, boxWidth, boxHeight); - ctx.strokeRect(outerX, colorY, boxWidth, boxHeight); - ctx.fillStyle = labelColor.backgroundColor; - ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2); - } - } - ctx.fillStyle = this.labelTextColors[i]; - } - drawBody(pt, ctx, options) { - const { body } = this; - const { bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding } = options; - const bodyFont = toFont(options.bodyFont); - let bodyLineHeight = bodyFont.lineHeight; - let xLinePadding = 0; - const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); - const fillLineOfText = function(line) { - ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2); - pt.y += bodyLineHeight + bodySpacing; - }; - const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign); - let bodyItem, textColor, lines, i, j, ilen, jlen; - ctx.textAlign = bodyAlign; - ctx.textBaseline = "middle"; - ctx.font = bodyFont.string; - pt.x = getAlignedX(this, bodyAlignForCalculation, options); - ctx.fillStyle = options.bodyColor; - each(this.beforeBody, fillLineOfText); - xLinePadding = displayColors && bodyAlignForCalculation !== "right" ? bodyAlign === "center" ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0; - for (i = 0, ilen = body.length; i < ilen; ++i) { - bodyItem = body[i]; - textColor = this.labelTextColors[i]; - ctx.fillStyle = textColor; - each(bodyItem.before, fillLineOfText); - lines = bodyItem.lines; - if (displayColors && lines.length) { - this._drawColorBox(ctx, pt, i, rtlHelper, options); - bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight); - } - for (j = 0, jlen = lines.length; j < jlen; ++j) { - fillLineOfText(lines[j]); - bodyLineHeight = bodyFont.lineHeight; - } - each(bodyItem.after, fillLineOfText); - } - xLinePadding = 0; - bodyLineHeight = bodyFont.lineHeight; - each(this.afterBody, fillLineOfText); - pt.y -= bodySpacing; - } - drawFooter(pt, ctx, options) { - const footer = this.footer; - const length = footer.length; - let footerFont, i; - if (length) { - const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width); - pt.x = getAlignedX(this, options.footerAlign, options); - pt.y += options.footerMarginTop; - ctx.textAlign = rtlHelper.textAlign(options.footerAlign); - ctx.textBaseline = "middle"; - footerFont = toFont(options.footerFont); - ctx.fillStyle = options.footerColor; - ctx.font = footerFont.string; - for (i = 0; i < length; ++i) { - ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2); - pt.y += footerFont.lineHeight + options.footerSpacing; - } - } - } - drawBackground(pt, ctx, tooltipSize, options) { - const { xAlign, yAlign } = this; - const { x, y } = pt; - const { width, height } = tooltipSize; - const { topLeft, topRight, bottomLeft, bottomRight } = toTRBLCorners(options.cornerRadius); - ctx.fillStyle = options.backgroundColor; - ctx.strokeStyle = options.borderColor; - ctx.lineWidth = options.borderWidth; - ctx.beginPath(); - ctx.moveTo(x + topLeft, y); - if (yAlign === "top") { - this.drawCaret(pt, ctx, tooltipSize, options); - } - ctx.lineTo(x + width - topRight, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + topRight); - if (yAlign === "center" && xAlign === "right") { - this.drawCaret(pt, ctx, tooltipSize, options); - } - ctx.lineTo(x + width, y + height - bottomRight); - ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height); - if (yAlign === "bottom") { - this.drawCaret(pt, ctx, tooltipSize, options); - } - ctx.lineTo(x + bottomLeft, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft); - if (yAlign === "center" && xAlign === "left") { - this.drawCaret(pt, ctx, tooltipSize, options); - } - ctx.lineTo(x, y + topLeft); - ctx.quadraticCurveTo(x, y, x + topLeft, y); - ctx.closePath(); - ctx.fill(); - if (options.borderWidth > 0) { - ctx.stroke(); - } - } - _updateAnimationTarget(options) { - const chart = this.chart; - const anims = this.$animations; - const animX = anims && anims.x; - const animY = anims && anims.y; - if (animX || animY) { - const position = positioners[options.position].call(this, this._active, this._eventPosition); - if (!position) { - return; - } - const size = this._size = getTooltipSize(this, options); - const positionAndSize = Object.assign({}, position, this._size); - const alignment = determineAlignment(chart, options, positionAndSize); - const point = getBackgroundPoint(options, positionAndSize, alignment, chart); - if (animX._to !== point.x || animY._to !== point.y) { - this.xAlign = alignment.xAlign; - this.yAlign = alignment.yAlign; - this.width = size.width; - this.height = size.height; - this.caretX = position.x; - this.caretY = position.y; - this._resolveAnimations().update(this, point); - } - } - } - _willRender() { - return !!this.opacity; - } - draw(ctx) { - const options = this.options.setContext(this.getContext()); - let opacity = this.opacity; - if (!opacity) { - return; - } - this._updateAnimationTarget(options); - const tooltipSize = { - width: this.width, - height: this.height - }; - const pt = { - x: this.x, - y: this.y - }; - opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity; - const padding = toPadding(options.padding); - const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length; - if (options.enabled && hasTooltipContent) { - ctx.save(); - ctx.globalAlpha = opacity; - this.drawBackground(pt, ctx, tooltipSize, options); - overrideTextDirection(ctx, options.textDirection); - pt.y += padding.top; - this.drawTitle(pt, ctx, options); - this.drawBody(pt, ctx, options); - this.drawFooter(pt, ctx, options); - restoreTextDirection(ctx, options.textDirection); - ctx.restore(); - } - } - getActiveElements() { - return this._active || []; - } - setActiveElements(activeElements, eventPosition) { - const lastActive = this._active; - const active = activeElements.map(({ datasetIndex, index: index2 }) => { - const meta = this.chart.getDatasetMeta(datasetIndex); - if (!meta) { - throw new Error("Cannot find a dataset at index " + datasetIndex); - } - return { - datasetIndex, - element: meta.data[index2], - index: index2 - }; - }); - const changed = !_elementsEqual(lastActive, active); - const positionChanged = this._positionChanged(active, eventPosition); - if (changed || positionChanged) { - this._active = active; - this._eventPosition = eventPosition; - this._ignoreReplayEvents = true; - this.update(true); - } - } - handleEvent(e, replay, inChartArea = true) { - if (replay && this._ignoreReplayEvents) { - return false; - } - this._ignoreReplayEvents = false; - const options = this.options; - const lastActive = this._active || []; - const active = this._getActiveElements(e, lastActive, replay, inChartArea); - const positionChanged = this._positionChanged(active, e); - const changed = replay || !_elementsEqual(active, lastActive) || positionChanged; - if (changed) { - this._active = active; - if (options.enabled || options.external) { - this._eventPosition = { - x: e.x, - y: e.y - }; - this.update(true, replay); - } - } - return changed; - } - _getActiveElements(e, lastActive, replay, inChartArea) { - const options = this.options; - if (e.type === "mouseout") { - return []; - } - if (!inChartArea) { - return lastActive.filter((i) => this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== void 0); - } - const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay); - if (options.reverse) { - active.reverse(); - } - return active; - } - _positionChanged(active, e) { - const { caretX, caretY, options } = this; - const position = positioners[options.position].call(this, active, e); - return position !== false && (caretX !== position.x || caretY !== position.y); - } -}; -__publicField(Tooltip, "positioners", positioners); -var plugin_tooltip = { - id: "tooltip", - _element: Tooltip, - positioners, - afterInit(chart, _args, options) { - if (options) { - chart.tooltip = new Tooltip({ - chart, - options - }); - } - }, - beforeUpdate(chart, _args, options) { - if (chart.tooltip) { - chart.tooltip.initialize(options); - } - }, - reset(chart, _args, options) { - if (chart.tooltip) { - chart.tooltip.initialize(options); - } - }, - afterDraw(chart) { - const tooltip = chart.tooltip; - if (tooltip && tooltip._willRender()) { - const args = { - tooltip - }; - if (chart.notifyPlugins("beforeTooltipDraw", { - ...args, - cancelable: true - }) === false) { - return; - } - tooltip.draw(chart.ctx); - chart.notifyPlugins("afterTooltipDraw", args); - } - }, - afterEvent(chart, args) { - if (chart.tooltip) { - const useFinalPosition = args.replay; - if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) { - args.changed = true; - } - } - }, - defaults: { - enabled: true, - external: null, - position: "average", - backgroundColor: "rgba(0,0,0,0.8)", - titleColor: "#fff", - titleFont: { - weight: "bold" - }, - titleSpacing: 2, - titleMarginBottom: 6, - titleAlign: "left", - bodyColor: "#fff", - bodySpacing: 2, - bodyFont: {}, - bodyAlign: "left", - footerColor: "#fff", - footerSpacing: 2, - footerMarginTop: 6, - footerFont: { - weight: "bold" - }, - footerAlign: "left", - padding: 6, - caretPadding: 2, - caretSize: 5, - cornerRadius: 6, - boxHeight: (ctx, opts) => opts.bodyFont.size, - boxWidth: (ctx, opts) => opts.bodyFont.size, - multiKeyBackground: "#fff", - displayColors: true, - boxPadding: 0, - borderColor: "rgba(0,0,0,0)", - borderWidth: 0, - animation: { - duration: 400, - easing: "easeOutQuart" - }, - animations: { - numbers: { - type: "number", - properties: [ - "x", - "y", - "width", - "height", - "caretX", - "caretY" - ] - }, - opacity: { - easing: "linear", - duration: 200 - } - }, - callbacks: defaultCallbacks - }, - defaultRoutes: { - bodyFont: "font", - footerFont: "font", - titleFont: "font" - }, - descriptors: { - _scriptable: (name) => name !== "filter" && name !== "itemSort" && name !== "external", - _indexable: false, - callbacks: { - _scriptable: false, - _indexable: false - }, - animation: { - _fallback: false - }, - animations: { - _fallback: "animation" - } - }, - additionalOptionScopes: [ - "interaction" - ] -}; -var plugins = Object.freeze({ - __proto__: null, - Colors: plugin_colors, - Decimation: plugin_decimation, - Filler: index, - Legend: plugin_legend, - SubTitle: plugin_subtitle, - Title: plugin_title, - Tooltip: plugin_tooltip -}); -var addIfString = (labels, raw, index2, addedLabels) => { - if (typeof raw === "string") { - index2 = labels.push(raw) - 1; - addedLabels.unshift({ - index: index2, - label: raw - }); - } else if (isNaN(raw)) { - index2 = null; - } - return index2; -}; -function findOrAddLabel(labels, raw, index2, addedLabels) { - const first = labels.indexOf(raw); - if (first === -1) { - return addIfString(labels, raw, index2, addedLabels); - } - const last = labels.lastIndexOf(raw); - return first !== last ? index2 : first; -} -var validIndex = (index2, max) => index2 === null ? null : _limitValue(Math.round(index2), 0, max); -function _getLabelForValue(value) { - const labels = this.getLabels(); - if (value >= 0 && value < labels.length) { - return labels[value]; - } - return value; -} -var CategoryScale = class extends Scale { - constructor(cfg) { - super(cfg); - this._startValue = void 0; - this._valueRange = 0; - this._addedLabels = []; - } - init(scaleOptions) { - const added = this._addedLabels; - if (added.length) { - const labels = this.getLabels(); - for (const { index: index2, label } of added) { - if (labels[index2] === label) { - labels.splice(index2, 1); - } - } - this._addedLabels = []; - } - super.init(scaleOptions); - } - parse(raw, index2) { - if (isNullOrUndef(raw)) { - return null; - } - const labels = this.getLabels(); - index2 = isFinite(index2) && labels[index2] === raw ? index2 : findOrAddLabel(labels, raw, valueOrDefault(index2, raw), this._addedLabels); - return validIndex(index2, labels.length - 1); - } - determineDataLimits() { - const { minDefined, maxDefined } = this.getUserBounds(); - let { min, max } = this.getMinMax(true); - if (this.options.bounds === "ticks") { - if (!minDefined) { - min = 0; - } - if (!maxDefined) { - max = this.getLabels().length - 1; - } - } - this.min = min; - this.max = max; - } - buildTicks() { - const min = this.min; - const max = this.max; - const offset = this.options.offset; - const ticks = []; - let labels = this.getLabels(); - labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1); - this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1); - this._startValue = this.min - (offset ? 0.5 : 0); - for (let value = min; value <= max; value++) { - ticks.push({ - value - }); - } - return ticks; - } - getLabelForValue(value) { - return _getLabelForValue.call(this, value); - } - configure() { - super.configure(); - if (!this.isHorizontal()) { - this._reversePixels = !this._reversePixels; - } - } - getPixelForValue(value) { - if (typeof value !== "number") { - value = this.parse(value); - } - return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); - } - getPixelForTick(index2) { - const ticks = this.ticks; - if (index2 < 0 || index2 > ticks.length - 1) { - return null; - } - return this.getPixelForValue(ticks[index2].value); - } - getValueForPixel(pixel) { - return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange); - } - getBasePixel() { - return this.bottom; - } -}; -__publicField(CategoryScale, "id", "category"); -__publicField(CategoryScale, "defaults", { - ticks: { - callback: _getLabelForValue - } -}); -function generateTicks$1(generationOptions, dataRange) { - const ticks = []; - const MIN_SPACING = 1e-14; - const { bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds } = generationOptions; - const unit = step || 1; - const maxSpaces = maxTicks - 1; - const { min: rmin, max: rmax } = dataRange; - const minDefined = !isNullOrUndef(min); - const maxDefined = !isNullOrUndef(max); - const countDefined = !isNullOrUndef(count); - const minSpacing = (rmax - rmin) / (maxDigits + 1); - let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit; - let factor, niceMin, niceMax, numSpaces; - if (spacing < MIN_SPACING && !minDefined && !maxDefined) { - return [ - { - value: rmin - }, - { - value: rmax - } - ]; - } - numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing); - if (numSpaces > maxSpaces) { - spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit; - } - if (!isNullOrUndef(precision)) { - factor = Math.pow(10, precision); - spacing = Math.ceil(spacing * factor) / factor; - } - if (bounds === "ticks") { - niceMin = Math.floor(rmin / spacing) * spacing; - niceMax = Math.ceil(rmax / spacing) * spacing; - } else { - niceMin = rmin; - niceMax = rmax; - } - if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1e3)) { - numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks)); - spacing = (max - min) / numSpaces; - niceMin = min; - niceMax = max; - } else if (countDefined) { - niceMin = minDefined ? min : niceMin; - niceMax = maxDefined ? max : niceMax; - numSpaces = count - 1; - spacing = (niceMax - niceMin) / numSpaces; - } else { - numSpaces = (niceMax - niceMin) / spacing; - if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1e3)) { - numSpaces = Math.round(numSpaces); - } else { - numSpaces = Math.ceil(numSpaces); - } - } - const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin)); - factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision); - niceMin = Math.round(niceMin * factor) / factor; - niceMax = Math.round(niceMax * factor) / factor; - let j = 0; - if (minDefined) { - if (includeBounds && niceMin !== min) { - ticks.push({ - value: min - }); - if (niceMin < min) { - j++; - } - if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) { - j++; - } - } else if (niceMin < min) { - j++; - } - } - for (; j < numSpaces; ++j) { - const tickValue = Math.round((niceMin + j * spacing) * factor) / factor; - if (maxDefined && tickValue > max) { - break; - } - ticks.push({ - value: tickValue - }); - } - if (maxDefined && includeBounds && niceMax !== max) { - if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) { - ticks[ticks.length - 1].value = max; - } else { - ticks.push({ - value: max - }); - } - } else if (!maxDefined || niceMax === max) { - ticks.push({ - value: niceMax - }); - } - return ticks; -} -function relativeLabelSize(value, minSpacing, { horizontal, minRotation }) { - const rad = toRadians(minRotation); - const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 1e-3; - const length = 0.75 * minSpacing * ("" + value).length; - return Math.min(minSpacing / ratio, length); -} -var LinearScaleBase = class extends Scale { - constructor(cfg) { - super(cfg); - this.start = void 0; - this.end = void 0; - this._startValue = void 0; - this._endValue = void 0; - this._valueRange = 0; - } - parse(raw, index2) { - if (isNullOrUndef(raw)) { - return null; - } - if ((typeof raw === "number" || raw instanceof Number) && !isFinite(+raw)) { - return null; - } - return +raw; - } - handleTickRangeOptions() { - const { beginAtZero } = this.options; - const { minDefined, maxDefined } = this.getUserBounds(); - let { min, max } = this; - const setMin = (v) => min = minDefined ? min : v; - const setMax = (v) => max = maxDefined ? max : v; - if (beginAtZero) { - const minSign = sign(min); - const maxSign = sign(max); - if (minSign < 0 && maxSign < 0) { - setMax(0); - } else if (minSign > 0 && maxSign > 0) { - setMin(0); - } - } - if (min === max) { - let offset = max === 0 ? 1 : Math.abs(max * 0.05); - setMax(max + offset); - if (!beginAtZero) { - setMin(min - offset); - } - } - this.min = min; - this.max = max; - } - getTickLimit() { - const tickOpts = this.options.ticks; - let { maxTicksLimit, stepSize } = tickOpts; - let maxTicks; - if (stepSize) { - maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1; - if (maxTicks > 1e3) { - console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`); - maxTicks = 1e3; - } - } else { - maxTicks = this.computeTickLimit(); - maxTicksLimit = maxTicksLimit || 11; - } - if (maxTicksLimit) { - maxTicks = Math.min(maxTicksLimit, maxTicks); - } - return maxTicks; - } - computeTickLimit() { - return Number.POSITIVE_INFINITY; - } - buildTicks() { - const opts = this.options; - const tickOpts = opts.ticks; - let maxTicks = this.getTickLimit(); - maxTicks = Math.max(2, maxTicks); - const numericGeneratorOptions = { - maxTicks, - bounds: opts.bounds, - min: opts.min, - max: opts.max, - precision: tickOpts.precision, - step: tickOpts.stepSize, - count: tickOpts.count, - maxDigits: this._maxDigits(), - horizontal: this.isHorizontal(), - minRotation: tickOpts.minRotation || 0, - includeBounds: tickOpts.includeBounds !== false - }; - const dataRange = this._range || this; - const ticks = generateTicks$1(numericGeneratorOptions, dataRange); - if (opts.bounds === "ticks") { - _setMinAndMaxByKey(ticks, this, "value"); - } - if (opts.reverse) { - ticks.reverse(); - this.start = this.max; - this.end = this.min; - } else { - this.start = this.min; - this.end = this.max; - } - return ticks; - } - configure() { - const ticks = this.ticks; - let start = this.min; - let end = this.max; - super.configure(); - if (this.options.offset && ticks.length) { - const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2; - start -= offset; - end += offset; - } - this._startValue = start; - this._endValue = end; - this._valueRange = end - start; - } - getLabelForValue(value) { - return formatNumber(value, this.chart.options.locale, this.options.ticks.format); - } -}; -var LinearScale = class extends LinearScaleBase { - determineDataLimits() { - const { min, max } = this.getMinMax(true); - this.min = isNumberFinite(min) ? min : 0; - this.max = isNumberFinite(max) ? max : 1; - this.handleTickRangeOptions(); - } - computeTickLimit() { - const horizontal = this.isHorizontal(); - const length = horizontal ? this.width : this.height; - const minRotation = toRadians(this.options.ticks.minRotation); - const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 1e-3; - const tickFont = this._resolveTickFontOptions(0); - return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio)); - } - getPixelForValue(value) { - return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange); - } - getValueForPixel(pixel) { - return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange; - } -}; -__publicField(LinearScale, "id", "linear"); -__publicField(LinearScale, "defaults", { - ticks: { - callback: Ticks.formatters.numeric - } -}); -var log10Floor = (v) => Math.floor(log10(v)); -var changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m); -function isMajor(tickVal) { - const remain = tickVal / Math.pow(10, log10Floor(tickVal)); - return remain === 1; -} -function steps(min, max, rangeExp) { - const rangeStep = Math.pow(10, rangeExp); - const start = Math.floor(min / rangeStep); - const end = Math.ceil(max / rangeStep); - return end - start; -} -function startExp(min, max) { - const range = max - min; - let rangeExp = log10Floor(range); - while (steps(min, max, rangeExp) > 10) { - rangeExp++; - } - while (steps(min, max, rangeExp) < 10) { - rangeExp--; - } - return Math.min(rangeExp, log10Floor(min)); -} -function generateTicks(generationOptions, { min, max }) { - min = finiteOrDefault(generationOptions.min, min); - const ticks = []; - const minExp = log10Floor(min); - let exp = startExp(min, max); - let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - const stepSize = Math.pow(10, exp); - const base = minExp > exp ? Math.pow(10, minExp) : 0; - const start = Math.round((min - base) * precision) / precision; - const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10; - let significand = Math.floor((start - offset) / Math.pow(10, exp)); - let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision); - while (value < max) { - ticks.push({ - value, - major: isMajor(value), - significand - }); - if (significand >= 10) { - significand = significand < 15 ? 15 : 20; - } else { - significand++; - } - if (significand >= 20) { - exp++; - significand = 2; - precision = exp >= 0 ? 1 : precision; - } - value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; - } - const lastTick = finiteOrDefault(generationOptions.max, value); - ticks.push({ - value: lastTick, - major: isMajor(lastTick), - significand - }); - return ticks; -} -var LogarithmicScale = class extends Scale { - constructor(cfg) { - super(cfg); - this.start = void 0; - this.end = void 0; - this._startValue = void 0; - this._valueRange = 0; - } - parse(raw, index2) { - const value = LinearScaleBase.prototype.parse.apply(this, [ - raw, - index2 - ]); - if (value === 0) { - this._zero = true; - return void 0; - } - return isNumberFinite(value) && value > 0 ? value : null; - } - determineDataLimits() { - const { min, max } = this.getMinMax(true); - this.min = isNumberFinite(min) ? Math.max(0, min) : null; - this.max = isNumberFinite(max) ? Math.max(0, max) : null; - if (this.options.beginAtZero) { - this._zero = true; - } - if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) { - this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0); - } - this.handleTickRangeOptions(); - } - handleTickRangeOptions() { - const { minDefined, maxDefined } = this.getUserBounds(); - let min = this.min; - let max = this.max; - const setMin = (v) => min = minDefined ? min : v; - const setMax = (v) => max = maxDefined ? max : v; - if (min === max) { - if (min <= 0) { - setMin(1); - setMax(10); - } else { - setMin(changeExponent(min, -1)); - setMax(changeExponent(max, 1)); - } - } - if (min <= 0) { - setMin(changeExponent(max, -1)); - } - if (max <= 0) { - setMax(changeExponent(min, 1)); - } - this.min = min; - this.max = max; - } - buildTicks() { - const opts = this.options; - const generationOptions = { - min: this._userMin, - max: this._userMax - }; - const ticks = generateTicks(generationOptions, this); - if (opts.bounds === "ticks") { - _setMinAndMaxByKey(ticks, this, "value"); - } - if (opts.reverse) { - ticks.reverse(); - this.start = this.max; - this.end = this.min; - } else { - this.start = this.min; - this.end = this.max; - } - return ticks; - } - getLabelForValue(value) { - return value === void 0 ? "0" : formatNumber(value, this.chart.options.locale, this.options.ticks.format); - } - configure() { - const start = this.min; - super.configure(); - this._startValue = log10(start); - this._valueRange = log10(this.max) - log10(start); - } - getPixelForValue(value) { - if (value === void 0 || value === 0) { - value = this.min; - } - if (value === null || isNaN(value)) { - return NaN; - } - return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange); - } - getValueForPixel(pixel) { - const decimal = this.getDecimalForPixel(pixel); - return Math.pow(10, this._startValue + decimal * this._valueRange); - } -}; -__publicField(LogarithmicScale, "id", "logarithmic"); -__publicField(LogarithmicScale, "defaults", { - ticks: { - callback: Ticks.formatters.logarithmic, - major: { - enabled: true - } - } -}); -function getTickBackdropHeight(opts) { - const tickOpts = opts.ticks; - if (tickOpts.display && opts.display) { - const padding = toPadding(tickOpts.backdropPadding); - return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height; - } - return 0; -} -function measureLabelSize(ctx, font, label) { - label = isArray(label) ? label : [ - label - ]; - return { - w: _longestText(ctx, font.string, label), - h: label.length * font.lineHeight - }; -} -function determineLimits(angle, pos, size, min, max) { - if (angle === min || angle === max) { - return { - start: pos - size / 2, - end: pos + size / 2 - }; - } else if (angle < min || angle > max) { - return { - start: pos - size, - end: pos - }; - } - return { - start: pos, - end: pos + size - }; -} -function fitWithPointLabels(scale) { - const orig = { - l: scale.left + scale._padding.left, - r: scale.right - scale._padding.right, - t: scale.top + scale._padding.top, - b: scale.bottom - scale._padding.bottom - }; - const limits = Object.assign({}, orig); - const labelSizes = []; - const padding = []; - const valueCount = scale._pointLabels.length; - const pointLabelOpts = scale.options.pointLabels; - const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0; - for (let i = 0; i < valueCount; i++) { - const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i)); - padding[i] = opts.padding; - const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle); - const plFont = toFont(opts.font); - const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]); - labelSizes[i] = textSize; - const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle); - const angle = Math.round(toDegrees(angleRadians)); - const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); - const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); - updateLimits(limits, orig, angleRadians, hLimits, vLimits); - } - scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b); - scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding); -} -function updateLimits(limits, orig, angle, hLimits, vLimits) { - const sin = Math.abs(Math.sin(angle)); - const cos = Math.abs(Math.cos(angle)); - let x = 0; - let y = 0; - if (hLimits.start < orig.l) { - x = (orig.l - hLimits.start) / sin; - limits.l = Math.min(limits.l, orig.l - x); - } else if (hLimits.end > orig.r) { - x = (hLimits.end - orig.r) / sin; - limits.r = Math.max(limits.r, orig.r + x); - } - if (vLimits.start < orig.t) { - y = (orig.t - vLimits.start) / cos; - limits.t = Math.min(limits.t, orig.t - y); - } else if (vLimits.end > orig.b) { - y = (vLimits.end - orig.b) / cos; - limits.b = Math.max(limits.b, orig.b + y); - } -} -function createPointLabelItem(scale, index2, itemOpts) { - const outerDistance = scale.drawingArea; - const { extra, additionalAngle, padding, size } = itemOpts; - const pointLabelPosition = scale.getPointPosition(index2, outerDistance + extra + padding, additionalAngle); - const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI))); - const y = yForAngle(pointLabelPosition.y, size.h, angle); - const textAlign = getTextAlignForAngle(angle); - const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign); - return { - visible: true, - x: pointLabelPosition.x, - y, - textAlign, - left, - top: y, - right: left + size.w, - bottom: y + size.h - }; -} -function isNotOverlapped(item, area) { - if (!area) { - return true; - } - const { left, top, right, bottom } = item; - const apexesInArea = _isPointInArea({ - x: left, - y: top - }, area) || _isPointInArea({ - x: left, - y: bottom - }, area) || _isPointInArea({ - x: right, - y: top - }, area) || _isPointInArea({ - x: right, - y: bottom - }, area); - return !apexesInArea; -} -function buildPointLabelItems(scale, labelSizes, padding) { - const items = []; - const valueCount = scale._pointLabels.length; - const opts = scale.options; - const { centerPointLabels, display } = opts.pointLabels; - const itemOpts = { - extra: getTickBackdropHeight(opts) / 2, - additionalAngle: centerPointLabels ? PI / valueCount : 0 - }; - let area; - for (let i = 0; i < valueCount; i++) { - itemOpts.padding = padding[i]; - itemOpts.size = labelSizes[i]; - const item = createPointLabelItem(scale, i, itemOpts); - items.push(item); - if (display === "auto") { - item.visible = isNotOverlapped(item, area); - if (item.visible) { - area = item; - } - } - } - return items; -} -function getTextAlignForAngle(angle) { - if (angle === 0 || angle === 180) { - return "center"; - } else if (angle < 180) { - return "left"; - } - return "right"; -} -function leftForTextAlign(x, w, align) { - if (align === "right") { - x -= w; - } else if (align === "center") { - x -= w / 2; - } - return x; -} -function yForAngle(y, h, angle) { - if (angle === 90 || angle === 270) { - y -= h / 2; - } else if (angle > 270 || angle < 90) { - y -= h; - } - return y; -} -function drawPointLabelBox(ctx, opts, item) { - const { left, top, right, bottom } = item; - const { backdropColor } = opts; - if (!isNullOrUndef(backdropColor)) { - const borderRadius = toTRBLCorners(opts.borderRadius); - const padding = toPadding(opts.backdropPadding); - ctx.fillStyle = backdropColor; - const backdropLeft = left - padding.left; - const backdropTop = top - padding.top; - const backdropWidth = right - left + padding.width; - const backdropHeight = bottom - top + padding.height; - if (Object.values(borderRadius).some((v) => v !== 0)) { - ctx.beginPath(); - addRoundedRectPath(ctx, { - x: backdropLeft, - y: backdropTop, - w: backdropWidth, - h: backdropHeight, - radius: borderRadius - }); - ctx.fill(); - } else { - ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight); - } - } -} -function drawPointLabels(scale, labelCount) { - const { ctx, options: { pointLabels } } = scale; - for (let i = labelCount - 1; i >= 0; i--) { - const item = scale._pointLabelItems[i]; - if (!item.visible) { - continue; - } - const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i)); - drawPointLabelBox(ctx, optsAtIndex, item); - const plFont = toFont(optsAtIndex.font); - const { x, y, textAlign } = item; - renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, { - color: optsAtIndex.color, - textAlign, - textBaseline: "middle" - }); - } -} -function pathRadiusLine(scale, radius, circular, labelCount) { - const { ctx } = scale; - if (circular) { - ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU); - } else { - let pointPosition = scale.getPointPosition(0, radius); - ctx.moveTo(pointPosition.x, pointPosition.y); - for (let i = 1; i < labelCount; i++) { - pointPosition = scale.getPointPosition(i, radius); - ctx.lineTo(pointPosition.x, pointPosition.y); - } - } -} -function drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) { - const ctx = scale.ctx; - const circular = gridLineOpts.circular; - const { color: color2, lineWidth } = gridLineOpts; - if (!circular && !labelCount || !color2 || !lineWidth || radius < 0) { - return; - } - ctx.save(); - ctx.strokeStyle = color2; - ctx.lineWidth = lineWidth; - ctx.setLineDash(borderOpts.dash || []); - ctx.lineDashOffset = borderOpts.dashOffset; - ctx.beginPath(); - pathRadiusLine(scale, radius, circular, labelCount); - ctx.closePath(); - ctx.stroke(); - ctx.restore(); -} -function createPointLabelContext(parent, index2, label) { - return createContext(parent, { - label, - index: index2, - type: "pointLabel" - }); -} -var RadialLinearScale = class extends LinearScaleBase { - constructor(cfg) { - super(cfg); - this.xCenter = void 0; - this.yCenter = void 0; - this.drawingArea = void 0; - this._pointLabels = []; - this._pointLabelItems = []; - } - setDimensions() { - const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2); - const w = this.width = this.maxWidth - padding.width; - const h = this.height = this.maxHeight - padding.height; - this.xCenter = Math.floor(this.left + w / 2 + padding.left); - this.yCenter = Math.floor(this.top + h / 2 + padding.top); - this.drawingArea = Math.floor(Math.min(w, h) / 2); - } - determineDataLimits() { - const { min, max } = this.getMinMax(false); - this.min = isNumberFinite(min) && !isNaN(min) ? min : 0; - this.max = isNumberFinite(max) && !isNaN(max) ? max : 0; - this.handleTickRangeOptions(); - } - computeTickLimit() { - return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options)); - } - generateTickLabels(ticks) { - LinearScaleBase.prototype.generateTickLabels.call(this, ticks); - this._pointLabels = this.getLabels().map((value, index2) => { - const label = callback(this.options.pointLabels.callback, [ - value, - index2 - ], this); - return label || label === 0 ? label : ""; - }).filter((v, i) => this.chart.getDataVisibility(i)); - } - fit() { - const opts = this.options; - if (opts.display && opts.pointLabels.display) { - fitWithPointLabels(this); - } else { - this.setCenterPoint(0, 0, 0, 0); - } - } - setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) { - this.xCenter += Math.floor((leftMovement - rightMovement) / 2); - this.yCenter += Math.floor((topMovement - bottomMovement) / 2); - this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement)); - } - getIndexAngle(index2) { - const angleMultiplier = TAU / (this._pointLabels.length || 1); - const startAngle = this.options.startAngle || 0; - return _normalizeAngle(index2 * angleMultiplier + toRadians(startAngle)); - } - getDistanceFromCenterForValue(value) { - if (isNullOrUndef(value)) { - return NaN; - } - const scalingFactor = this.drawingArea / (this.max - this.min); - if (this.options.reverse) { - return (this.max - value) * scalingFactor; - } - return (value - this.min) * scalingFactor; - } - getValueForDistanceFromCenter(distance) { - if (isNullOrUndef(distance)) { - return NaN; - } - const scaledDistance = distance / (this.drawingArea / (this.max - this.min)); - return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance; - } - getPointLabelContext(index2) { - const pointLabels = this._pointLabels || []; - if (index2 >= 0 && index2 < pointLabels.length) { - const pointLabel = pointLabels[index2]; - return createPointLabelContext(this.getContext(), index2, pointLabel); - } - } - getPointPosition(index2, distanceFromCenter, additionalAngle = 0) { - const angle = this.getIndexAngle(index2) - HALF_PI + additionalAngle; - return { - x: Math.cos(angle) * distanceFromCenter + this.xCenter, - y: Math.sin(angle) * distanceFromCenter + this.yCenter, - angle - }; - } - getPointPositionForValue(index2, value) { - return this.getPointPosition(index2, this.getDistanceFromCenterForValue(value)); - } - getBasePosition(index2) { - return this.getPointPositionForValue(index2 || 0, this.getBaseValue()); - } - getPointLabelPosition(index2) { - const { left, top, right, bottom } = this._pointLabelItems[index2]; - return { - left, - top, - right, - bottom - }; - } - drawBackground() { - const { backgroundColor, grid: { circular } } = this.options; - if (backgroundColor) { - const ctx = this.ctx; - ctx.save(); - ctx.beginPath(); - pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length); - ctx.closePath(); - ctx.fillStyle = backgroundColor; - ctx.fill(); - ctx.restore(); - } - } - drawGrid() { - const ctx = this.ctx; - const opts = this.options; - const { angleLines, grid, border } = opts; - const labelCount = this._pointLabels.length; - let i, offset, position; - if (opts.pointLabels.display) { - drawPointLabels(this, labelCount); - } - if (grid.display) { - this.ticks.forEach((tick, index2) => { - if (index2 !== 0 || index2 === 0 && this.min < 0) { - offset = this.getDistanceFromCenterForValue(tick.value); - const context = this.getContext(index2); - const optsAtIndex = grid.setContext(context); - const optsAtIndexBorder = border.setContext(context); - drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder); - } - }); - } - if (angleLines.display) { - ctx.save(); - for (i = labelCount - 1; i >= 0; i--) { - const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i)); - const { color: color2, lineWidth } = optsAtIndex; - if (!lineWidth || !color2) { - continue; - } - ctx.lineWidth = lineWidth; - ctx.strokeStyle = color2; - ctx.setLineDash(optsAtIndex.borderDash); - ctx.lineDashOffset = optsAtIndex.borderDashOffset; - offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max); - position = this.getPointPosition(i, offset); - ctx.beginPath(); - ctx.moveTo(this.xCenter, this.yCenter); - ctx.lineTo(position.x, position.y); - ctx.stroke(); - } - ctx.restore(); - } - } - drawBorder() { - } - drawLabels() { - const ctx = this.ctx; - const opts = this.options; - const tickOpts = opts.ticks; - if (!tickOpts.display) { - return; - } - const startAngle = this.getIndexAngle(0); - let offset, width; - ctx.save(); - ctx.translate(this.xCenter, this.yCenter); - ctx.rotate(startAngle); - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - this.ticks.forEach((tick, index2) => { - if (index2 === 0 && this.min >= 0 && !opts.reverse) { - return; - } - const optsAtIndex = tickOpts.setContext(this.getContext(index2)); - const tickFont = toFont(optsAtIndex.font); - offset = this.getDistanceFromCenterForValue(this.ticks[index2].value); - if (optsAtIndex.showLabelBackdrop) { - ctx.font = tickFont.string; - width = ctx.measureText(tick.label).width; - ctx.fillStyle = optsAtIndex.backdropColor; - const padding = toPadding(optsAtIndex.backdropPadding); - ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height); - } - renderText(ctx, tick.label, 0, -offset, tickFont, { - color: optsAtIndex.color, - strokeColor: optsAtIndex.textStrokeColor, - strokeWidth: optsAtIndex.textStrokeWidth - }); - }); - ctx.restore(); - } - drawTitle() { - } -}; -__publicField(RadialLinearScale, "id", "radialLinear"); -__publicField(RadialLinearScale, "defaults", { - display: true, - animate: true, - position: "chartArea", - angleLines: { - display: true, - lineWidth: 1, - borderDash: [], - borderDashOffset: 0 - }, - grid: { - circular: false - }, - startAngle: 0, - ticks: { - showLabelBackdrop: true, - callback: Ticks.formatters.numeric - }, - pointLabels: { - backdropColor: void 0, - backdropPadding: 2, - display: true, - font: { - size: 10 - }, - callback(label) { - return label; - }, - padding: 5, - centerPointLabels: false - } -}); -__publicField(RadialLinearScale, "defaultRoutes", { - "angleLines.color": "borderColor", - "pointLabels.color": "color", - "ticks.color": "color" -}); -__publicField(RadialLinearScale, "descriptors", { - angleLines: { - _fallback: "grid" - } -}); -var INTERVALS = { - millisecond: { - common: true, - size: 1, - steps: 1e3 - }, - second: { - common: true, - size: 1e3, - steps: 60 - }, - minute: { - common: true, - size: 6e4, - steps: 60 - }, - hour: { - common: true, - size: 36e5, - steps: 24 - }, - day: { - common: true, - size: 864e5, - steps: 30 - }, - week: { - common: false, - size: 6048e5, - steps: 4 - }, - month: { - common: true, - size: 2628e6, - steps: 12 - }, - quarter: { - common: false, - size: 7884e6, - steps: 4 - }, - year: { - common: true, - size: 3154e7 - } -}; -var UNITS = Object.keys(INTERVALS); -function sorter(a, b) { - return a - b; -} -function parse(scale, input) { - if (isNullOrUndef(input)) { - return null; - } - const adapter = scale._adapter; - const { parser, round: round2, isoWeekday } = scale._parseOpts; - let value = input; - if (typeof parser === "function") { - value = parser(value); - } - if (!isNumberFinite(value)) { - value = typeof parser === "string" ? adapter.parse(value, parser) : adapter.parse(value); - } - if (value === null) { - return null; - } - if (round2) { - value = round2 === "week" && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, "isoWeek", isoWeekday) : adapter.startOf(value, round2); - } - return +value; -} -function determineUnitForAutoTicks(minUnit, min, max, capacity) { - const ilen = UNITS.length; - for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { - const interval = INTERVALS[UNITS[i]]; - const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER; - if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { - return UNITS[i]; - } - } - return UNITS[ilen - 1]; -} -function determineUnitForFormatting(scale, numTicks, minUnit, min, max) { - for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) { - const unit = UNITS[i]; - if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) { - return unit; - } - } - return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; -} -function determineMajorUnit(unit) { - for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { - if (INTERVALS[UNITS[i]].common) { - return UNITS[i]; - } - } -} -function addTick(ticks, time, timestamps) { - if (!timestamps) { - ticks[time] = true; - } else if (timestamps.length) { - const { lo, hi } = _lookup(timestamps, time); - const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi]; - ticks[timestamp] = true; - } -} -function setMajorTicks(scale, ticks, map3, majorUnit) { - const adapter = scale._adapter; - const first = +adapter.startOf(ticks[0].value, majorUnit); - const last = ticks[ticks.length - 1].value; - let major, index2; - for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) { - index2 = map3[major]; - if (index2 >= 0) { - ticks[index2].major = true; - } - } - return ticks; -} -function ticksFromTimestamps(scale, values, majorUnit) { - const ticks = []; - const map3 = {}; - const ilen = values.length; - let i, value; - for (i = 0; i < ilen; ++i) { - value = values[i]; - map3[value] = i; - ticks.push({ - value, - major: false - }); - } - return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map3, majorUnit); -} -var TimeScale = class extends Scale { - constructor(props) { - super(props); - this._cache = { - data: [], - labels: [], - all: [] - }; - this._unit = "day"; - this._majorUnit = void 0; - this._offsets = {}; - this._normalized = false; - this._parseOpts = void 0; - } - init(scaleOpts, opts = {}) { - const time = scaleOpts.time || (scaleOpts.time = {}); - const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date); - adapter.init(opts); - mergeIf(time.displayFormats, adapter.formats()); - this._parseOpts = { - parser: time.parser, - round: time.round, - isoWeekday: time.isoWeekday - }; - super.init(scaleOpts); - this._normalized = opts.normalized; - } - parse(raw, index2) { - if (raw === void 0) { - return null; - } - return parse(this, raw); - } - beforeLayout() { - super.beforeLayout(); - this._cache = { - data: [], - labels: [], - all: [] - }; - } - determineDataLimits() { - const options = this.options; - const adapter = this._adapter; - const unit = options.time.unit || "day"; - let { min, max, minDefined, maxDefined } = this.getUserBounds(); - function _applyBounds(bounds) { - if (!minDefined && !isNaN(bounds.min)) { - min = Math.min(min, bounds.min); - } - if (!maxDefined && !isNaN(bounds.max)) { - max = Math.max(max, bounds.max); - } - } - if (!minDefined || !maxDefined) { - _applyBounds(this._getLabelBounds()); - if (options.bounds !== "ticks" || options.ticks.source !== "labels") { - _applyBounds(this.getMinMax(false)); - } - } - min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit); - max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1; - this.min = Math.min(min, max - 1); - this.max = Math.max(min + 1, max); - } - _getLabelBounds() { - const arr = this.getLabelTimestamps(); - let min = Number.POSITIVE_INFINITY; - let max = Number.NEGATIVE_INFINITY; - if (arr.length) { - min = arr[0]; - max = arr[arr.length - 1]; - } - return { - min, - max - }; - } - buildTicks() { - const options = this.options; - const timeOpts = options.time; - const tickOpts = options.ticks; - const timestamps = tickOpts.source === "labels" ? this.getLabelTimestamps() : this._generate(); - if (options.bounds === "ticks" && timestamps.length) { - this.min = this._userMin || timestamps[0]; - this.max = this._userMax || timestamps[timestamps.length - 1]; - } - const min = this.min; - const max = this.max; - const ticks = _filterBetween(timestamps, min, max); - this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max)); - this._majorUnit = !tickOpts.major.enabled || this._unit === "year" ? void 0 : determineMajorUnit(this._unit); - this.initOffsets(timestamps); - if (options.reverse) { - ticks.reverse(); - } - return ticksFromTimestamps(this, ticks, this._majorUnit); - } - afterAutoSkip() { - if (this.options.offsetAfterAutoskip) { - this.initOffsets(this.ticks.map((tick) => +tick.value)); - } - } - initOffsets(timestamps = []) { - let start = 0; - let end = 0; - let first, last; - if (this.options.offset && timestamps.length) { - first = this.getDecimalForValue(timestamps[0]); - if (timestamps.length === 1) { - start = 1 - first; - } else { - start = (this.getDecimalForValue(timestamps[1]) - first) / 2; - } - last = this.getDecimalForValue(timestamps[timestamps.length - 1]); - if (timestamps.length === 1) { - end = last; - } else { - end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2; - } - } - const limit = timestamps.length < 3 ? 0.5 : 0.25; - start = _limitValue(start, 0, limit); - end = _limitValue(end, 0, limit); - this._offsets = { - start, - end, - factor: 1 / (start + 1 + end) - }; - } - _generate() { - const adapter = this._adapter; - const min = this.min; - const max = this.max; - const options = this.options; - const timeOpts = options.time; - const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min)); - const stepSize = valueOrDefault(options.ticks.stepSize, 1); - const weekday = minor === "week" ? timeOpts.isoWeekday : false; - const hasWeekday = isNumber(weekday) || weekday === true; - const ticks = {}; - let first = min; - let time, count; - if (hasWeekday) { - first = +adapter.startOf(first, "isoWeek", weekday); - } - first = +adapter.startOf(first, hasWeekday ? "day" : minor); - if (adapter.diff(max, min, minor) > 1e5 * stepSize) { - throw new Error(min + " and " + max + " are too far apart with stepSize of " + stepSize + " " + minor); - } - const timestamps = options.ticks.source === "data" && this.getDataTimestamps(); - for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) { - addTick(ticks, time, timestamps); - } - if (time === max || options.bounds === "ticks" || count === 1) { - addTick(ticks, time, timestamps); - } - return Object.keys(ticks).sort(sorter).map((x) => +x); - } - getLabelForValue(value) { - const adapter = this._adapter; - const timeOpts = this.options.time; - if (timeOpts.tooltipFormat) { - return adapter.format(value, timeOpts.tooltipFormat); - } - return adapter.format(value, timeOpts.displayFormats.datetime); - } - format(value, format) { - const options = this.options; - const formats = options.time.displayFormats; - const unit = this._unit; - const fmt = format || formats[unit]; - return this._adapter.format(value, fmt); - } - _tickFormatFunction(time, index2, ticks, format) { - const options = this.options; - const formatter = options.ticks.callback; - if (formatter) { - return callback(formatter, [ - time, - index2, - ticks - ], this); - } - const formats = options.time.displayFormats; - const unit = this._unit; - const majorUnit = this._majorUnit; - const minorFormat = unit && formats[unit]; - const majorFormat = majorUnit && formats[majorUnit]; - const tick = ticks[index2]; - const major = majorUnit && majorFormat && tick && tick.major; - return this._adapter.format(time, format || (major ? majorFormat : minorFormat)); - } - generateTickLabels(ticks) { - let i, ilen, tick; - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - tick = ticks[i]; - tick.label = this._tickFormatFunction(tick.value, i, ticks); - } - } - getDecimalForValue(value) { - return value === null ? NaN : (value - this.min) / (this.max - this.min); - } - getPixelForValue(value) { - const offsets = this._offsets; - const pos = this.getDecimalForValue(value); - return this.getPixelForDecimal((offsets.start + pos) * offsets.factor); - } - getValueForPixel(pixel) { - const offsets = this._offsets; - const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; - return this.min + pos * (this.max - this.min); - } - _getLabelSize(label) { - const ticksOpts = this.options.ticks; - const tickLabelWidth = this.ctx.measureText(label).width; - const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation); - const cosRotation = Math.cos(angle); - const sinRotation = Math.sin(angle); - const tickFontSize = this._resolveTickFontOptions(0).size; - return { - w: tickLabelWidth * cosRotation + tickFontSize * sinRotation, - h: tickLabelWidth * sinRotation + tickFontSize * cosRotation - }; - } - _getLabelCapacity(exampleTime) { - const timeOpts = this.options.time; - const displayFormats = timeOpts.displayFormats; - const format = displayFormats[timeOpts.unit] || displayFormats.millisecond; - const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [ - exampleTime - ], this._majorUnit), format); - const size = this._getLabelSize(exampleLabel); - const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1; - return capacity > 0 ? capacity : 1; - } - getDataTimestamps() { - let timestamps = this._cache.data || []; - let i, ilen; - if (timestamps.length) { - return timestamps; - } - const metas = this.getMatchingVisibleMetas(); - if (this._normalized && metas.length) { - return this._cache.data = metas[0].controller.getAllParsedValues(this); - } - for (i = 0, ilen = metas.length; i < ilen; ++i) { - timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this)); - } - return this._cache.data = this.normalize(timestamps); - } - getLabelTimestamps() { - const timestamps = this._cache.labels || []; - let i, ilen; - if (timestamps.length) { - return timestamps; - } - const labels = this.getLabels(); - for (i = 0, ilen = labels.length; i < ilen; ++i) { - timestamps.push(parse(this, labels[i])); - } - return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps); - } - normalize(values) { - return _arrayUnique(values.sort(sorter)); - } -}; -__publicField(TimeScale, "id", "time"); -__publicField(TimeScale, "defaults", { - bounds: "data", - adapters: {}, - time: { - parser: false, - unit: false, - round: false, - isoWeekday: false, - minUnit: "millisecond", - displayFormats: {} - }, - ticks: { - source: "auto", - callback: false, - major: { - enabled: false - } - } -}); -function interpolate2(table, val, reverse) { - let lo = 0; - let hi = table.length - 1; - let prevSource, nextSource, prevTarget, nextTarget; - if (reverse) { - if (val >= table[lo].pos && val <= table[hi].pos) { - ({ lo, hi } = _lookupByKey(table, "pos", val)); - } - ({ pos: prevSource, time: prevTarget } = table[lo]); - ({ pos: nextSource, time: nextTarget } = table[hi]); - } else { - if (val >= table[lo].time && val <= table[hi].time) { - ({ lo, hi } = _lookupByKey(table, "time", val)); - } - ({ time: prevSource, pos: prevTarget } = table[lo]); - ({ time: nextSource, pos: nextTarget } = table[hi]); - } - const span = nextSource - prevSource; - return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget; -} -var TimeSeriesScale = class extends TimeScale { - constructor(props) { - super(props); - this._table = []; - this._minPos = void 0; - this._tableRange = void 0; - } - initOffsets() { - const timestamps = this._getTimestampsForTable(); - const table = this._table = this.buildLookupTable(timestamps); - this._minPos = interpolate2(table, this.min); - this._tableRange = interpolate2(table, this.max) - this._minPos; - super.initOffsets(timestamps); - } - buildLookupTable(timestamps) { - const { min, max } = this; - const items = []; - const table = []; - let i, ilen, prev, curr, next; - for (i = 0, ilen = timestamps.length; i < ilen; ++i) { - curr = timestamps[i]; - if (curr >= min && curr <= max) { - items.push(curr); - } - } - if (items.length < 2) { - return [ - { - time: min, - pos: 0 - }, - { - time: max, - pos: 1 - } - ]; - } - for (i = 0, ilen = items.length; i < ilen; ++i) { - next = items[i + 1]; - prev = items[i - 1]; - curr = items[i]; - if (Math.round((next + prev) / 2) !== curr) { - table.push({ - time: curr, - pos: i / (ilen - 1) - }); - } - } - return table; - } - _generate() { - const min = this.min; - const max = this.max; - let timestamps = super.getDataTimestamps(); - if (!timestamps.includes(min) || !timestamps.length) { - timestamps.splice(0, 0, min); - } - if (!timestamps.includes(max) || timestamps.length === 1) { - timestamps.push(max); - } - return timestamps.sort((a, b) => a - b); - } - _getTimestampsForTable() { - let timestamps = this._cache.all || []; - if (timestamps.length) { - return timestamps; - } - const data = this.getDataTimestamps(); - const label = this.getLabelTimestamps(); - if (data.length && label.length) { - timestamps = this.normalize(data.concat(label)); - } else { - timestamps = data.length ? data : label; - } - timestamps = this._cache.all = timestamps; - return timestamps; - } - getDecimalForValue(value) { - return (interpolate2(this._table, value) - this._minPos) / this._tableRange; - } - getValueForPixel(pixel) { - const offsets = this._offsets; - const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end; - return interpolate2(this._table, decimal * this._tableRange + this._minPos, true); - } -}; -__publicField(TimeSeriesScale, "id", "timeseries"); -__publicField(TimeSeriesScale, "defaults", TimeScale.defaults); -var scales = Object.freeze({ - __proto__: null, - CategoryScale, - LinearScale, - LogarithmicScale, - RadialLinearScale, - TimeScale, - TimeSeriesScale -}); -var registerables = [ - controllers, - elements, - plugins, - scales -]; - -export { - Ticks, - defaults, - animator, - Animation, - Animations, - DatasetController, - BarController, - BubbleController, - DoughnutController, - LineController, - PolarAreaController, - PieController, - RadarController, - ScatterController, - controllers, - adapters, - Interaction, - layouts, - BasePlatform, - BasicPlatform, - DomPlatform, - _detectPlatform, - Element, - Scale, - registry, - Chart, - ArcElement, - LineElement, - PointElement, - BarElement, - elements, - plugin_colors, - plugin_decimation, - index, - plugin_legend, - plugin_title, - plugin_subtitle, - plugin_tooltip, - plugins, - CategoryScale, - LinearScale, - LogarithmicScale, - RadialLinearScale, - TimeScale, - TimeSeriesScale, - scales, - registerables -}; -/*! Bundled license information: - -@kurkle/color/dist/color.esm.js: - (*! - * @kurkle/color v0.3.4 - * https://github.com/kurkle/color#readme - * (c) 2024 Jukka Kurkela - * Released under the MIT License - *) - -chart.js/dist/chunks/helpers.dataset.js: - (*! - * Chart.js v4.5.0 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - *) - -chart.js/dist/chart.js: - (*! - * Chart.js v4.5.0 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - *) -*/ -//# sourceMappingURL=chunk-DTNR33MA.js.map diff --git a/vite/node_modules/.vite/deps/chunk-DTNR33MA.js.map b/vite/node_modules/.vite/deps/chunk-DTNR33MA.js.map deleted file mode 100644 index 8c03359f3d26151bc6481a93bfc642accbeb370f..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chunk-DTNR33MA.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../@kurkle/color/dist/color.esm.js", "../../chart.js/src/helpers/helpers.core.ts", "../../chart.js/src/helpers/helpers.math.ts", "../../chart.js/src/helpers/helpers.collection.ts", "../../chart.js/src/helpers/helpers.extras.ts", "../../chart.js/src/helpers/helpers.easing.ts", "../../chart.js/src/helpers/helpers.color.ts", "../../chart.js/src/core/core.animations.defaults.js", "../../chart.js/src/core/core.layouts.defaults.js", "../../chart.js/src/helpers/helpers.intl.ts", "../../chart.js/src/core/core.ticks.js", "../../chart.js/src/core/core.scale.defaults.js", "../../chart.js/src/core/core.defaults.js", "../../chart.js/src/helpers/helpers.canvas.ts", "../../chart.js/src/helpers/helpers.options.ts", "../../chart.js/src/helpers/helpers.config.ts", "../../chart.js/src/helpers/helpers.curve.ts", "../../chart.js/src/helpers/helpers.dom.ts", "../../chart.js/src/helpers/helpers.interpolation.ts", "../../chart.js/src/helpers/helpers.rtl.ts", "../../chart.js/src/helpers/helpers.segment.js", "../../chart.js/src/helpers/helpers.dataset.ts", "../../chart.js/src/core/core.animator.js", "../../chart.js/src/core/core.animation.js", "../../chart.js/src/core/core.animations.js", "../../chart.js/src/core/core.datasetController.js", "../../chart.js/src/controllers/controller.bar.js", "../../chart.js/src/controllers/controller.bubble.js", "../../chart.js/src/controllers/controller.doughnut.js", "../../chart.js/src/controllers/controller.line.js", "../../chart.js/src/controllers/controller.polarArea.js", "../../chart.js/src/controllers/controller.pie.js", "../../chart.js/src/controllers/controller.radar.js", "../../chart.js/src/controllers/controller.scatter.js", "../../chart.js/src/core/core.adapters.ts", "../../chart.js/src/core/core.interaction.js", "../../chart.js/src/core/core.layouts.js", "../../chart.js/src/platform/platform.base.js", "../../chart.js/src/platform/platform.basic.js", "../../chart.js/src/platform/platform.dom.js", "../../chart.js/src/platform/index.js", "../../chart.js/src/core/core.element.ts", "../../chart.js/src/core/core.scale.autoskip.js", "../../chart.js/src/core/core.scale.js", "../../chart.js/src/core/core.typedRegistry.js", "../../chart.js/src/core/core.registry.js", "../../chart.js/src/core/core.plugins.js", "../../chart.js/src/core/core.config.js", "../../chart.js/src/core/core.controller.js", "../../chart.js/src/elements/element.arc.ts", "../../chart.js/src/elements/element.line.js", "../../chart.js/src/elements/element.point.ts", "../../chart.js/src/elements/element.bar.js", "../../chart.js/src/plugins/plugin.colors.ts", "../../chart.js/src/plugins/plugin.decimation.js", "../../chart.js/src/plugins/plugin.filler/filler.segment.js", "../../chart.js/src/plugins/plugin.filler/filler.helper.js", "../../chart.js/src/plugins/plugin.filler/filler.options.js", "../../chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../chart.js/src/plugins/plugin.filler/simpleArc.js", "../../chart.js/src/plugins/plugin.filler/filler.target.js", "../../chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../chart.js/src/plugins/plugin.filler/index.js", "../../chart.js/src/plugins/plugin.legend.js", "../../chart.js/src/plugins/plugin.title.js", "../../chart.js/src/plugins/plugin.subtitle.js", "../../chart.js/src/plugins/plugin.tooltip.js", "../../chart.js/src/scales/scale.category.js", "../../chart.js/src/scales/scale.linearbase.js", "../../chart.js/src/scales/scale.linear.js", "../../chart.js/src/scales/scale.logarithmic.js", "../../chart.js/src/scales/scale.radialLinear.js", "../../chart.js/src/scales/scale.time.js", "../../chart.js/src/scales/scale.timeseries.js", "../../chart.js/src/index.ts"], - "sourcesContent": ["/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n", "/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n", "import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\n/**\n * Verifies that attempting to coerce n to string or number won't throw a TypeError.\n */\nfunction isNonPrimitive(n: unknown) {\n return typeof n === 'symbol' || (typeof n === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n));\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNonPrimitive(n) && !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n", "import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n", "import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\nimport {isNullOrUndef} from './helpers.core.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, vScale, _parsed} = meta;\n const spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);\n if (spanGaps) {\n const distanceToDefinedLo = (_parsed\n .slice(0, start + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n start -= Math.max(0, distanceToDefinedLo);\n }\n start = _limitValue(start, 0, pointCount - 1);\n }\n if (maxDefined) {\n let end = Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);\n if (spanGaps) {\n const distanceToDefinedHi = (_parsed\n .slice(end - 1)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n end += Math.max(0, distanceToDefinedHi);\n }\n count = _limitValue(end, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n", "import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n", "import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n", "const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n", "export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n", "\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n", "import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n", "import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n", "import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n", "import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n", "import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n", "import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n", "import type {ChartArea, Scale} from '../types/index.js';\nimport type PrivateChart from '../core/core.controller.js';\nimport type {Chart, ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart | PrivateChart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart | PrivateChart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n (chart as PrivateChart).height = Math.floor(chart.height);\n (chart as PrivateChart).width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n (chart as PrivateChart).currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n", "import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n", "export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n", "import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n", "import type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n const clip = meta._clip;\n if (clip.disabled) {\n return false;\n }\n const area = getDatasetArea(meta, chart.chartArea);\n\n return {\n left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n };\n}\n", "import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n", "import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n", "import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n", "import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n let found = false;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n\n if (!found && !options.all) {\n return 0;\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getAxisCount() {\n return this._getAxis().length;\n }\n\n getFirstScaleIdForIndexAxis() {\n const scales = this.chart.scales;\n const indexScaleId = this.chart.options.indexAxis;\n return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n }\n\n _getAxis() {\n const axis = {};\n const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n for (const dataset of this.chart.data.datasets) {\n axis[valueOrDefault(\n this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n )] = true;\n }\n return Object.keys(axis);\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n const axisCount = this._getAxisCount();\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount * axisCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n", "import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n", "import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n", "/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: string): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: string): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number | boolean): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options?: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase as {\n new (options?: AnyObject): DateAdapter;\n override(\n members: Partial, 'options'>>\n ): void;\n }\n};\n", "import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea, isNullOrUndef} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n const spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;\n\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n const result = lookupMethod(data, axis, value);\n if (spanGaps) {\n const {vScale} = controller._cachedMeta;\n const {_parsed} = metaset;\n\n const distanceToDefinedLo = (_parsed\n .slice(0, result.lo + 1)\n .reverse()\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.lo -= Math.max(0, distanceToDefinedLo);\n\n const distanceToDefinedHi = (_parsed\n .slice(result.hi)\n .findIndex(\n point => !isNullOrUndef(point[vScale.axis])));\n result.hi += Math.max(0, distanceToDefinedHi);\n }\n return result;\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n", "import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n", "\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n", "/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n", "/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n", "import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n", "import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n", "import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n", "import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n", "import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n", "import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n", "import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n", "import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n", "import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n // @ts-expect-error\n const clip = getDatasetClipArea(this, meta);\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (clip) {\n clipArea(ctx, clip);\n }\n\n meta.controller.draw();\n\n if (clip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n", "import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.beginPath();\n ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n if (innerRadius > 0) {\n const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n } else {\n const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n if (borderJoinStyle === 'round') {\n ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n } else if (borderJoinStyle === 'bevel') {\n const r = 2 * clipWidth * clipWidth;\n const endX = -r * Math.cos(endAngle + PI / 2) + x;\n const endY = -r * Math.sin(endAngle + PI / 2) + y;\n const startX = r * Math.cos(startAngle + PI / 2) + x;\n const startY = r * Math.sin(startAngle + PI / 2) + y;\n ctx.lineTo(endX, endY);\n ctx.lineTo(startX, startY);\n }\n }\n ctx.closePath();\n\n ctx.moveTo(0, 0);\n ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n ctx.clip('evenodd');\n}\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset, borderRadius} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n clipSelf(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n selfJoin: false,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n", "import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n", "import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n", "import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n", "import {DoughnutController, PolarAreaController, defaults} from '../index.js';\nimport type {Chart, ChartDataset} from '../types.js';\n\nexport interface ColorsPluginOptions {\n enabled?: boolean;\n forceOverride?: boolean;\n}\n\ninterface ColorsDescriptor {\n backgroundColor?: unknown;\n borderColor?: unknown;\n}\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)', // blue\n 'rgb(255, 99, 132)', // red\n 'rgb(255, 159, 64)', // orange\n 'rgb(255, 205, 86)', // yellow\n 'rgb(75, 192, 192)', // green\n 'rgb(153, 102, 255)', // purple\n 'rgb(201, 203, 207)' // grey\n];\n\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\n\nfunction getBorderColor(i: number) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i: number) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset: ChartDataset, i: number) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n\n return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset: ChartDataset, i: number) {\n dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n\n return i;\n}\n\nfunction colorizePolarAreaDataset(dataset: ChartDataset, i: number) {\n dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n\n return i;\n}\n\nfunction getColorizer(chart: Chart) {\n let i = 0;\n\n return (dataset: ChartDataset, datasetIndex: number) => {\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\n\nfunction containsColorsDefinitions(\n descriptors: ColorsDescriptor[] | Record\n) {\n let k: number | string;\n\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction containsColorsDefinition(\n descriptor: ColorsDescriptor\n) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nfunction containsDefaultColorsDefenitions() {\n return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\n\nexport default {\n id: 'colors',\n\n defaults: {\n enabled: true,\n forceOverride: false\n } as ColorsPluginOptions,\n\n beforeLayout(chart: Chart, _args, options: ColorsPluginOptions) {\n if (!options.enabled) {\n return;\n }\n\n const {\n data: {datasets},\n options: chartOptions\n } = chart.config;\n const {elements} = chartOptions;\n\n const containsColorDefenition = (\n containsColorsDefinitions(datasets) ||\n containsColorsDefinition(chartOptions) ||\n (elements && containsColorsDefinitions(elements)) ||\n containsDefaultColorsDefenitions());\n\n if (!options.forceOverride && containsColorDefenition) {\n return;\n }\n\n const colorizer = getColorizer(chart);\n\n datasets.forEach(colorizer);\n }\n};\n", "import {_limitValue, _lookupByKey, isNullOrUndef, resolve} from '../helpers/index.js';\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n /**\n * Implementation of the Largest Triangle Three Buckets algorithm.\n *\n * This implementation is based on the original implementation by Sveinn Steinarsson\n * in https://github.com/sveinn-steinarsson/flot-downsample/blob/master/jquery.flot.downsample.js\n *\n * The original implementation is MIT licensed.\n */\n const samples = options.samples || availableWidth;\n // There are less points than the threshold, returning the whole array\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n\n const decimated = [];\n\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n // Starting from offset\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n\n decimated[sampledIndex++] = data[a];\n\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n\n // Adding offset\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n\n // Adding offset\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n\n // Note that this is changed from the original algorithm which initializes these\n // values to 1. The reason for this change is that if the area is small, nextA\n // would never be set and thus a crash would occur in the next loop as `a` would become\n // `undefined`. Since the area is always positive, but could be 0 in the case of a flat trace,\n // initializing with a negative number is the correct solution.\n maxArea = area = -1;\n\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n\n // Include the last point\n decimated[sampledIndex++] = data[endIndex];\n\n return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n // Use point.x here because we're computing the average data `x` value\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n // Push up to 4 points, 3 for the last interval and the first point for this interval\n const lastIndex = i - 1;\n\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n // The interval is defined by 4 points: start, min, max, end.\n // The starting point is already considered at this point, so we need to determine which\n // of the other points to add. We need to sort these points to ensure the decimated data\n // is still sorted and then ensure there are no duplicates.\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n\n // lastIndex === startIndex will occur when a range has only 1 point which could\n // happen with very uneven data\n if (i > 0 && lastIndex !== startIndex) {\n // Last point in the previous interval\n decimated.push(data[lastIndex]);\n }\n\n // Start of the new interval\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n\n return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data,\n });\n }\n}\n\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n\n let start = 0;\n let count;\n\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n\n return {start, count};\n}\n\nexport default {\n id: 'decimation',\n\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n // The decimation plugin may have been previously enabled. Need to remove old `dataset._data` handlers\n cleanDecimatedData(chart);\n return;\n }\n\n // Assume the entire chart is available to show a few more points than needed\n const availableWidth = chart.width;\n\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n // Decimation is only supported for lines that have an X indexAxis\n return;\n }\n\n if (!meta.controller.supportsDecimation) {\n // Only line datasets are supported\n return;\n }\n\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n // Only linear interpolation is supported\n return;\n }\n\n if (chart.options.parsing) {\n // Plugin only supports data that does not need parsing\n return;\n }\n\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n // No decimation is required until we are above this threshold\n cleanDecimatedDataset(dataset);\n return;\n }\n\n if (isNullOrUndef(_data)) {\n // First time we are seeing this dataset\n // We override the 'data' property with a setter that stores the\n // raw data in _data, but reads the decimated data from _decimated\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n\n // Point the chart to the decimated data\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n\n dataset._decimated = decimated;\n });\n },\n\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n", "import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n // Special case for boundary not supporting `segments` (simpleArc)\n // Bounds are provided as `target` for partial circle, or undefined for full circle\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n // Get all segments from `target` that intersect the bounds of current segment of `line`\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n // @ts-ignore\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n", "import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n /** @type {string | {value: number}} */\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n // @ts-ignore\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n let value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n // @ts-ignore\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n", "/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n // First point of a segment -> need to add another point before this,\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n // In the middle of a segment, no need to add more points.\n break;\n }\n }\n }\n points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n", "import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n", "import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n const {chart, fill, line} = source;\n\n if (isFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n\n if (isFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\n", "import {clipArea, unclipArea, getDatasetClipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {chart, index, line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n const meta = chart.getDatasetMeta(index);\n const clip = getDatasetClipArea(chart, meta);\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale, clip} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n\n ctx.save();\n\n let fillColor = below;\n if (below !== above) {\n if (property === 'x') {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n } else if (property === 'y') {\n clipHorizontal(ctx, target, area.left);\n fill(ctx, {line, target, color: below, scale, property, clip});\n ctx.restore();\n ctx.save();\n clipHorizontal(ctx, target, area.right);\n fillColor = above;\n }\n }\n fill(ctx, {line, target, color: fillColor, scale, property, clip});\n\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction clipHorizontal(ctx, target, clipX) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(clipX, firstPoint.y);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(clipX, lastPoint.y);\n }\n }\n\n ctx.lineTo(clipX, target.first().y);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale, clip} = cfg;\n const segments = _segments(line, target, property);\n\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n\n clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));\n\n ctx.beginPath();\n\n const lineLoop = !!line.pathSegment(ctx, src);\n\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n ctx.restore();\n }\n}\n\nfunction clipBounds(ctx, scale, clip, bounds) {\n const chartArea = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n\n if (property === 'x' || property === 'y') {\n let left, top, right, bottom;\n\n if (property === 'x') {\n left = start;\n top = chartArea.top;\n right = end;\n bottom = chartArea.bottom;\n } else {\n left = chartArea.left;\n top = start;\n right = chartArea.right;\n bottom = end;\n }\n\n ctx.beginPath();\n\n if (clip) {\n left = Math.max(left, clip.left);\n right = Math.min(right, clip.right);\n top = Math.max(top, clip.top);\n bottom = Math.min(bottom, clip.bottom);\n }\n\n ctx.rect(left, top, right - left, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\n", "/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n", "import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n", "import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n", "import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n", "import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n", "import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n", "import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n", "import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n", "import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n", "import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n", "import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n", "import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n", "export * from './controllers/index.js';\nexport * from './core/index.js';\nexport * from './elements/index.js';\nexport * from './platform/index.js';\nexport * from './plugins/index.js';\nexport * from './scales/index.js';\n\nimport * as controllers from './controllers/index.js';\nimport * as elements from './elements/index.js';\nimport * as plugins from './plugins/index.js';\nimport * as scales from './scales/index.js';\n\nexport {\n controllers,\n elements,\n plugins,\n scales,\n};\n\nexport const registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n"], - "mappings": "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", - "names": ["color", "noop", "uid", "id", "isNullOrUndef", "value", "undefined", "isArray", "Array", "type", "Object", "prototype", "toString", "call", "slice", "isObject", "isNumberFinite", "Number", "isFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "toPercentage", "dimension", "endsWith", "parseFloat", "toDimension", "callback", "fn", "args", "thisArg", "apply", "each", "loopable", "reverse", "i", "len", "keys", "length", "_elementsEqual", "a0", "a1", "ilen", "v0", "v1", "datasetIndex", "index", "clone", "source", "map", "target", "create", "klen", "k", "isValidKey", "key", "indexOf", "_merger", "options", "tval", "sval", "merge", "sources", "merger", "current", "mergeIf", "_mergerIf", "hasOwnProperty", "keyResolvers", "v", "x", "o", "y", "_splitKey", "key", "parts", "split", "keys", "tmp", "part", "endsWith", "slice", "push", "_getKeyResolver", "obj", "k", "resolveObjectKey", "resolver", "_capitalize", "str", "charAt", "toUpperCase", "defined", "value", "isFunction", "setsEqual", "a", "b", "size", "item", "has", "_isClickEvent", "e", "type", "PI", "Math", "TAU", "PITAU", "INFINITY", "Number", "POSITIVE_INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "almostEquals", "epsilon", "abs", "niceNum", "range", "roundedRange", "round", "niceRange", "pow", "floor", "fraction", "niceFraction", "_factorize", "result", "sqrt", "i", "sort", "pop", "isNonPrimitive", "n", "Symbol", "toPrimitive", "isNumber", "isNaN", "parseFloat", "isFinite", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "target", "property", "ilen", "length", "min", "max", "toRadians", "degrees", "toDegrees", "radians", "_decimalPlaces", "isFiniteNumber", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "atan2", "distance", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "s", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "index", "hi", "lo", "mid", "_lookupByKey", "last", "ti", "_rlookupByKey", "_filterBetween", "values", "arrayEvents", "listenArrayEvents", "listener", "_chartjs", "listeners", "Object", "defineProperty", "configurable", "enumerable", "forEach", "method", "base", "args", "res", "apply", "object", "unlistenArrayEvents", "stub", "indexOf", "splice", "_arrayUnique", "items", "set", "Set", "Array", "from", "requestAnimFrame", "window", "callback", "requestAnimationFrame", "throttled", "fn", "thisArg", "argsToUse", "ticking", "args", "call", "apply", "debounce", "delay", "timeout", "clearTimeout", "setTimeout", "_toLeftRightCenter", "align", "_alignStartEnd", "start", "end", "_textX", "left", "right", "rtl", "check", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "length", "count", "_sorted", "iScale", "vScale", "_parsed", "spanGaps", "dataset", "options", "axis", "min", "max", "minDefined", "maxDefined", "getUserBounds", "Math", "_lookupByKey", "lo", "getPixelForValue", "distanceToDefinedLo", "slice", "reverse", "findIndex", "point", "isNullOrUndef", "_limitValue", "hi", "distanceToDefinedHi", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "xmin", "xmax", "ymin", "ymax", "changed", "Object", "assign", "atEdge", "t", "elasticIn", "s", "p", "pow", "sin", "TAU", "elasticOut", "effects", "linear", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "cos", "HALF_PI", "easeOutSine", "easeInOutSine", "PI", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "sqrt", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "m", "d", "easeInOutBounce", "isPatternOrGradient", "value", "type", "toString", "color", "Color", "getHoverColor", "saturate", "darken", "hexString", "numbers", "colors", "applyAnimationsDefaults", "defaults", "set", "undefined", "duration", "easing", "from", "loop", "to", "describe", "_fallback", "_indexable", "_scriptable", "name", "properties", "active", "animation", "resize", "show", "animations", "visible", "hide", "v", "applyLayoutsDefaults", "autoPadding", "padding", "top", "bottom", "intlCache", "Map", "getNumberFormat", "locale", "cacheKey", "JSON", "stringify", "formatter", "get", "Intl", "NumberFormat", "formatNumber", "num", "format", "formatters", "values", "isArray", "numeric", "tickValue", "index", "ticks", "chart", "notation", "delta", "maxTick", "abs", "calculateDelta", "logDelta", "log10", "numDecimal", "isNaN", "floor", "minimumFractionDigits", "maximumFractionDigits", "logarithmic", "remain", "significand", "includes", "applyScaleDefaults", "display", "offset", "beginAtZero", "bounds", "clip", "grace", "grid", "lineWidth", "drawOnChartArea", "drawTicks", "tickLength", "tickWidth", "_ctx", "tickColor", "border", "dash", "dashOffset", "width", "title", "text", "minRotation", "maxRotation", "mirror", "textStrokeWidth", "textStrokeColor", "autoSkip", "autoSkipPadding", "labelOffset", "Ticks", "minor", "major", "crossAlign", "showLabelBackdrop", "backdropColor", "backdropPadding", "route", "startsWith", "overrides", "create", "descriptors", "getScope", "node", "key", "keys", "split", "i", "n", "k", "root", "scope", "merge", "Defaults", "constructor", "_descriptors", "_appliers", "backgroundColor", "borderColor", "datasets", "devicePixelRatio", "context", "platform", "getDevicePixelRatio", "elements", "events", "font", "family", "size", "style", "lineHeight", "weight", "hover", "hoverBackgroundColor", "ctx", "hoverBorderColor", "hoverColor", "indexAxis", "interaction", "mode", "intersect", "includeInvisible", "maintainAspectRatio", "onHover", "onClick", "parsing", "plugins", "responsive", "scale", "scales", "showLine", "drawActiveElementsOnTop", "override", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "defineProperties", "writable", "enumerable", "local", "target", "isObject", "valueOrDefault", "appliers", "forEach", "toFontString", "_measureText", "data", "gc", "longest", "string", "textWidth", "measureText", "push", "_longestText", "arrayOfThings", "cache", "garbageCollect", "save", "ilen", "j", "jlen", "thing", "nestedThing", "restore", "gcLen", "splice", "_alignPixel", "pixel", "currentDevicePixelRatio", "halfWidth", "round", "clearCanvas", "canvas", "getContext", "resetTransform", "clearRect", "height", "drawPoint", "x", "y", "drawPointLegend", "w", "xOffset", "yOffset", "cornerRadius", "xOffsetW", "yOffsetW", "pointStyle", "rotation", "radius", "rad", "RAD_PER_DEG", "translate", "rotate", "drawImage", "beginPath", "ellipse", "arc", "closePath", "moveTo", "TWO_THIRDS_PI", "lineTo", "QUARTER_PI", "SQRT1_2", "rect", "fill", "borderWidth", "stroke", "_isPointInArea", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "midpoint", "_bezierCurveTo", "bezierCurveTo", "cp1x", "cp2x", "cp1y", "cp2y", "setRenderOpts", "opts", "translation", "fillStyle", "textAlign", "textBaseline", "decorateText", "line", "strikethrough", "underline", "metrics", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "yDecoration", "strokeStyle", "decorationWidth", "drawBackdrop", "oldColor", "fillRect", "renderText", "lines", "strokeWidth", "strokeColor", "backdrop", "strokeText", "maxWidth", "fillText", "Number", "addRoundedRectPath", "h", "topLeft", "bottomLeft", "bottomRight", "topRight", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "match", "numberOrZero", "_readValueToProps", "props", "ret", "objProps", "read", "prop", "toTRBL", "toTRBLCorners", "toPadding", "obj", "toFont", "fallback", "parseInt", "console", "warn", "resolve", "inputs", "info", "cacheable", "_addGrace", "minmax", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "finalRootScopes", "_resolve", "Symbol", "toStringTag", "_cacheable", "_scopes", "_rootScopes", "_getTarget", "Proxy", "deleteProperty", "_keys", "_cached", "_resolveWithPrefixes", "getOwnPropertyDescriptor", "Reflect", "getPrototypeOf", "has", "getKeysFromAllScopes", "ownKeys", "storage", "_storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "_proxy", "_context", "_subProxy", "_stack", "Set", "setContext", "receiver", "_resolveWithContext", "allKeys", "configurable", "scriptable", "indexable", "_allKeys", "isScriptable", "isFunction", "isIndexable", "readKey", "prefix", "_capitalize", "needsSubResolver", "prototype", "hasOwnProperty", "_resolveScriptable", "_resolveArray", "getValue", "Error", "Array", "join", "delete", "createSubResolver", "arr", "filter", "item", "resolver", "resolveFallback", "parent", "resolveObjectKey", "addScopes", "parentScopes", "parentFallback", "allScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "_parsing", "parsed", "r", "parse", "EPSILON", "getPoint", "skip", "getValueAxis", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "current", "next", "d01", "distanceBetweenPoints", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "almostEquals", "monotoneCompute", "valueAxis", "pointBefore", "iPixel", "vPixel", "splineCurveMonotone", "slopeDelta", "sign", "capControlPoint", "pt", "capBezierPoints", "inArea", "inAreaPrev", "inAreaNext", "_updateBezierControlPoints", "controlPoints", "cubicInterpolationMode", "prev", "tension", "_isDomSupported", "document", "_getParentNode", "domNode", "parentNode", "host", "parseMaxStyle", "styleValue", "parentProperty", "valueInPixels", "indexOf", "getComputedStyle", "element", "ownerDocument", "defaultView", "getStyle", "el", "property", "getPropertyValue", "positions", "getPositionedStyle", "styles", "suffix", "result", "pos", "parseFloat", "useOffsetPos", "shadowRoot", "getCanvasPosition", "e", "touches", "source", "offsetX", "offsetY", "box", "getBoundingClientRect", "clientX", "clientY", "getRelativePosition", "event", "borderBox", "boxSizing", "paddings", "borders", "getContainerSize", "maxHeight", "container", "clientWidth", "clientHeight", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "round1", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "maintainHeight", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "setTransform", "supportsEventListenerOptions", "passiveSupported", "passive", "addEventListener", "removeEventListener", "readUsedSize", "_pointInLine", "p1", "p2", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "a", "b", "c", "getRightToLeftAdapter", "rectX", "setWidth", "xPlus", "leftForLtr", "itemWidth", "getLeftToRightAdapter", "_itemWidth", "getRtlAdapter", "overrideTextDirection", "direction", "original", "getPropertyPriority", "setProperty", "prevTextDirection", "restoreTextDirection", "propertyFn", "between", "_angleBetween", "compare", "_angleDiff", "normalize", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "segment", "startBound", "endBound", "_boundSegment", "inside", "subStart", "prevValue", "startIsBefore", "endIsBefore", "shouldStart", "shouldStop", "_boundSegments", "segments", "sub", "findStartAndEnd", "solidSegments", "last", "cur", "stop", "_computeSegments", "segmentOptions", "_loop", "splitByStyles", "completeLoop", "_fullLoop", "doSplitByStyles", "chartContext", "_chart", "baseStyle", "readStyle", "_datasetIndex", "datasetIndex", "prevStyle", "addStyle", "l", "st", "dir", "p0", "p0DataIndex", "p1DataIndex", "styleChanged", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "replacer", "getSizeForArea", "chartArea", "field", "getDatasetArea", "getDatasetClipArea", "_clip", "disabled", "Animator", "constructor", "_request", "_charts", "Map", "_running", "_lastDate", "undefined", "_notify", "chart", "anims", "date", "type", "callbacks", "listeners", "numSteps", "duration", "forEach", "fn", "initial", "currentStep", "Math", "min", "start", "_refresh", "requestAnimFrame", "call", "window", "_update", "Date", "now", "remaining", "running", "items", "length", "i", "draw", "item", "_active", "_total", "tick", "pop", "_getAnims", "charts", "get", "complete", "progress", "set", "listen", "event", "cb", "push", "add", "has", "reduce", "acc", "cur", "max", "_duration", "stop", "cancel", "remove", "delete", "transparent", "interpolators", "boolean", "from", "to", "factor", "color", "c0", "helpersColor", "c1", "valid", "mix", "hexString", "number", "Animation", "cfg", "target", "prop", "currentValue", "resolve", "_fn", "_easing", "effects", "easing", "linear", "_start", "floor", "delay", "_loop", "loop", "_target", "_prop", "_from", "_to", "_promises", "active", "update", "elapsed", "remain", "wait", "promises", "Promise", "res", "rej", "resolved", "method", "Animations", "config", "_chart", "_properties", "configure", "isObject", "animationOptions", "Object", "keys", "defaults", "animation", "animatedProps", "getOwnPropertyNames", "key", "option", "isArray", "properties", "_animateOptions", "values", "newOptions", "options", "resolveTargetOptions", "animations", "_createAnimations", "$shared", "awaitAll", "$animations", "then", "props", "charAt", "value", "size", "assign", "animator", "anim", "all", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "end", "defaultClip", "xScale", "yScale", "x", "y", "top", "right", "bottom", "left", "toClip", "t", "r", "b", "l", "disabled", "getSortedDatasetIndices", "filterVisible", "metasets", "_getSortedDatasetMetas", "ilen", "index", "applyStack", "stack", "dsIndex", "singleMode", "mode", "datasetIndex", "otherValue", "found", "isFinite", "sign", "convertObjectDataToArray", "data", "meta", "iScale", "vScale", "iAxisKey", "axis", "vAxisKey", "adata", "Array", "isStacked", "stacked", "getStackKey", "indexScale", "valueScale", "id", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iAxis", "vAxis", "itemStacks", "_top", "_bottom", "visualValues", "_visualValues", "getFirstScaleId", "scales", "filter", "shift", "createDatasetContext", "parent", "createContext", "dataset", "createDataContext", "element", "dataIndex", "raw", "clearStacks", "_parsed", "isDirectUpdateMode", "cloneIfNotShared", "cached", "shared", "createStack", "canStack", "hidden", "_stacked", "DatasetController", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "datasetElementType", "dataElementType", "initialize", "linkScales", "addElements", "fill", "isPluginEnabled", "console", "warn", "updateIndex", "getDataset", "chooseId", "xid", "xAxisID", "valueOrDefault", "yid", "yAxisID", "rid", "rAxisID", "indexAxis", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "datasets", "getDatasetMeta", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "scopes", "getOptionScopes", "createResolver", "getContext", "parsing", "parse", "count", "sorted", "_sorted", "prev", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "labels", "getLabels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "getParsed", "getDataElement", "updateRangeFromParsed", "range", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getAllParsedValues", "getMaxOverflow", "getLabelAndValue", "label", "getLabelForValue", "_clip", "clip", "elements", "area", "chartArea", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "context", "_resolveElementOptions", "elementType", "cache", "cacheKey", "sharing", "defined", "datasetElementScopeKeys", "prefixes", "names", "resolveNamedOptions", "freeze", "_resolveAnimations", "transition", "datasetAnimationScopeKeys", "_cacheable", "getSharedOptions", "includeOptions", "sharedOptions", "_animationsDisabled", "_getSharedOptions", "firstOpts", "previouslySharedOptions", "updateSharedOptions", "updateElement", "_setStyle", "removeHoverStyle", "setHoverStyle", "_removeDatasetHoverStyle", "_setDatasetHoverStyle", "arg1", "arg2", "numMeta", "numData", "_insertElements", "_removeElements", "move", "arr", "updateElements", "removed", "splice", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "updateMinAndPrev", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "_custom", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "BarController", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "grouped", "currentParsed", "iScaleValue", "skipNull", "find", "val", "isNaN", "indexOf", "_getStackCount", "_getAxisCount", "_getAxis", "getFirstScaleIdForIndexAxis", "indexScaleId", "firstScaleAxisId", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "axisCount", "axisID", "axisNumber", "stackIndex", "rects", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "BubbleController", "radius", "points", "point", "iPixel", "vPixel", "skip", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "cos", "startY", "sin", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "spacing", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "animateRotate", "calculateCircumference", "animationOpts", "centerX", "centerY", "animateScale", "arc", "metaData", "formatNumber", "locale", "borderAlign", "borderWidth", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "LineController", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "showLine", "segment", "animated", "spanGaps", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "angleLines", "display", "circular", "pointLabels", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "registry", "getElement", "interaction", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "_date", "binarySearch", "metaset", "intersect", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "result", "distanceToDefinedLo", "slice", "lo", "findIndex", "distanceToDefinedHi", "hi", "el", "getRange", "evaluateInteractionItems", "position", "handler", "getSortedVisibleDatasetMetas", "j", "getDistanceMetricForAxis", "useX", "useY", "pt1", "pt2", "deltaX", "deltaY", "sqrt", "pow", "getIntersectItems", "useFinalPosition", "includeInvisible", "isPointInArea", "evaluationFunc", "_isPointInArea", "inRange", "getNearestRadialItems", "getProps", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "getCenterPoint", "pointInArea", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "modes", "getRelativePosition", "nearest", "STATIC_POSITIONS", "filterByPosition", "array", "pos", "filterDynamicPositionByAxis", "box", "sortByWeight", "v0", "wrapBoxes", "boxes", "layoutBoxes", "stackWeight", "buildStacks", "layouts", "wrap", "includes", "_stack", "placed", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "availableWidth", "availableHeight", "buildLayoutBoxes", "centerHorizontal", "centerVertical", "leftAndTop", "rightAndBottom", "vertical", "getCombinedMax", "maxPadding", "updateMaxPadding", "boxPadding", "updateDims", "getPadding", "newWidth", "outerWidth", "newHeight", "outerHeight", "widthChanged", "w", "heightChanged", "h", "same", "other", "handleMaxPadding", "updatePos", "change", "getMargins", "marginForPositions", "positions", "margin", "fitBoxes", "refitBoxes", "refit", "changed", "setBoxDims", "placeBoxes", "userPadding", "padding", "addBox", "_layers", "z", "removeBox", "layoutItem", "minPadding", "toPadding", "verticalBoxes", "horizontalBoxes", "each", "beforeLayout", "visibleVerticalBoxCount", "BasePlatform", "acquireContext", "canvas", "releaseContext", "addEventListener", "listener", "removeEventListener", "getDevicePixelRatio", "getMaximumSize", "isAttached", "updateConfig", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "touchstart", "touchmove", "touchend", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointerout", "isNullOrEmpty", "initCanvas", "renderHeight", "getAttribute", "renderWidth", "boxSizing", "displayWidth", "readUsedSize", "displayHeight", "eventListenerOptions", "supportsEventListenerOptions", "passive", "addListener", "node", "removeListener", "fromNativeEvent", "native", "nodeListContains", "nodeList", "contains", "createAttachObserver", "observer", "MutationObserver", "entries", "trigger", "addedNodes", "removedNodes", "observe", "document", "childList", "subtree", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "dpr", "devicePixelRatio", "resize", "currentDevicePixelRatio", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "container", "_getParentNode", "throttled", "clientWidth", "ResizeObserver", "contentRect", "releaseObserver", "disconnect", "createProxyAndListen", "proxy", "DomPlatform", "removeAttribute", "setAttribute", "proxies", "$proxies", "handlers", "attach", "detach", "isConnected", "_detectPlatform", "_isDomSupported", "OffscreenCanvas", "Element", "tooltipPosition", "hasValue", "final", "ret", "defaultRoutes", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "round", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "ceil", "majorStart", "majorEnd", "len", "reverseAlign", "align", "offsetFromEdge", "getTicksLimit", "ticksLength", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "epsilon", "lineValue", "garbageCollect", "caches", "gc", "gcLen", "getTickMarkLength", "drawTicks", "getTitleHeight", "fallback", "font", "toFont", "lines", "lineHeight", "createScaleContext", "createTickContext", "titleAlign", "_toLeftRightCenter", "titleArgs", "titleX", "titleY", "_alignStartEnd", "positionAxisID", "Scale", "_margins", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "labelRotation", "_range", "_gridLineItems", "_labelItems", "_labelSizes", "_longestTextCache", "_userMax", "_userMin", "_suggestedMax", "_suggestedMin", "_ticksLength", "_borderValue", "_dataLimitsCached", "setContext", "suggestedMin", "suggestedMax", "finiteOrDefault", "metas", "getTicks", "xLabels", "yLabels", "getLabelItems", "_computeLabelItems", "beforeUpdate", "margins", "grace", "sampleSize", "beforeSetDimensions", "setDimensions", "afterSetDimensions", "beforeDataLimits", "determineDataLimits", "afterDataLimits", "_addGrace", "beforeBuildTicks", "buildTicks", "afterBuildTicks", "samplingEnabled", "_convertTicksToLabels", "beforeCalculateLabelRotation", "calculateLabelRotation", "afterCalculateLabelRotation", "source", "afterAutoSkip", "beforeFit", "fit", "afterFit", "afterUpdate", "reversePixels", "_alignToPixels", "alignToPixels", "_callHooks", "notifyPlugins", "beforeTickToLabelConversion", "generateTickLabels", "callback", "afterTickToLabelConversion", "numTicks", "minRotation", "maxRotation", "tickWidth", "maxLabelDiagonal", "_isVisible", "labelSizes", "_getLabelSizes", "maxLabelWidth", "widest", "maxLabelHeight", "highest", "_limitValue", "title", "toDegrees", "asin", "titleOpts", "gridOpts", "titleHeight", "tickPadding", "angleRadians", "labelHeight", "mirror", "labelWidth", "_calculatePadding", "_handleMargins", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "isFullSize", "_computeLabelSizes", "widths", "heights", "widestLabelSize", "highestLabelSize", "jlen", "tickFont", "fontString", "nestedLabel", "_resolveTickFontOptions", "string", "_measureText", "valueAt", "idx", "pixel", "decimal", "_int16Range", "_alignPixel", "getDecimalForPixel", "getBaseValue", "optionTicks", "rot", "autoSkipPadding", "_computeGridLineItems", "tl", "borderOpts", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "step", "optsAtIndex", "optsAtIndexBorder", "lineColor", "borderDash", "dash", "borderDashOffset", "dashOffset", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "tickAndPadding", "hTickAndPadding", "textAlign", "lineCount", "textOffset", "textBaseline", "_getXAxisLabelAlignment", "_getYAxisLabelAlignment", "labelOffset", "halfCount", "strokeColor", "textStrokeColor", "strokeWidth", "textStrokeWidth", "tickTextAlign", "showLabelBackdrop", "backdrop", "labelPadding", "backdropPadding", "backdropColor", "translation", "_computeLabelArea", "drawBackground", "save", "fillRect", "restore", "drawGrid", "drawLine", "p1", "p2", "setLineDash", "lineDashOffset", "beginPath", "moveTo", "lineTo", "stroke", "drawOnChartArea", "drawBorder", "lastLineWidth", "drawLabels", "clipArea", "renderTextOptions", "renderText", "unclipArea", "drawTitle", "tz", "gz", "bz", "_maxDigits", "fontSize", "TypedRegistry", "scope", "create", "isForType", "isPrototypeOf", "register", "proto", "getPrototypeOf", "parentScope", "isIChartComponent", "registerDefaults", "unregister", "itemDefaults", "merge", "routeDefaults", "describe", "routes", "property", "propertyParts", "split", "sourceName", "sourceScope", "join", "parts", "targetName", "targetScope", "route", "Registry", "controllers", "_typedRegistries", "_each", "addControllers", "addPlugins", "addScales", "getController", "_get", "getPlugin", "getScale", "removeControllers", "removeElements", "removePlugins", "removeScales", "typedRegistry", "arg", "reg", "_getRegistryForType", "_exec", "itemReg", "component", "camelMethod", "_capitalize", "PluginService", "_init", "notify", "hook", "_createDescriptors", "_descriptors", "descriptor", "plugin", "callCallback", "cancelable", "invalidate", "_oldCache", "_notifyStateChanges", "allPlugins", "createDescriptors", "previousDescriptors", "some", "localIds", "local", "getOpts", "pluginOpts", "pluginScopeKeys", "scriptable", "indexable", "allKeys", "getIndexAxis", "datasetDefaults", "datasetOptions", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "idMatchesAxis", "axisFromPosition", "determineAxis", "scaleOptions", "toLowerCase", "getAxisFromDataset", "retrieveAxisFromDatasets", "boundDs", "d", "mergeScaleConfig", "chartDefaults", "configScales", "chartIndexAxis", "scaleConf", "error", "_proxy", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "Set", "cachedKeys", "generate", "addIfFound", "Config", "_config", "_scopeCache", "_resolverCache", "platform", "clearCache", "clear", "datasetType", "additionalOptionScopes", "_cachedScopes", "mainScope", "resetCache", "keyLists", "chartOptionScopes", "resolver", "subPrefixes", "getResolver", "needContext", "isFunction", "subResolver", "_attachContext", "descriptorDefaults", "resolverCache", "_createResolver", "p", "hasFunction", "isScriptable", "isIndexable", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l1", "l2", "onAnimationsComplete", "onComplete", "onAnimationProgress", "onProgress", "getCanvas", "getElementById", "instances", "getChart", "c", "moveNumericKeys", "intKey", "determineLastEvent", "lastEvent", "inChartArea", "isClick", "Chart", "invalidatePlugins", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_plugins", "_hiddenIndices", "attached", "_doResize", "debounce", "resizeDelay", "_initialize", "maintainAspectRatio", "responsive", "retinaScale", "bindEvents", "clearCanvas", "_resize", "_resizeBeforeDraw", "newSize", "newRatio", "onResize", "render", "ensureScalesHaveIDs", "scalesOptions", "axisOptions", "buildOrUpdateScales", "scaleOpts", "updated", "isRadial", "dposition", "dtype", "scaleType", "scaleClass", "hasUpdated", "_updateMetasets", "_destroyDatasetMeta", "_removeUnreferencedMetasets", "buildOrUpdateControllers", "newControllers", "order", "visible", "ControllerClass", "_resetElements", "animsDisabled", "_updateScales", "_checkEventBindings", "_updateHiddenIndices", "_minPadding", "autoPadding", "_updateLayout", "_updateDatasets", "_eventHandler", "_updateHoverStyles", "existingEvents", "newEvents", "events", "setsEqual", "unbindEvents", "changes", "_getUniformDataChanges", "datasetCount", "makeSet", "changeSet", "noArea", "_idx", "_updateDataset", "layers", "_drawDatasets", "_drawDataset", "getDatasetClipArea", "getElementsAtEventForMode", "Interaction", "setDatasetVisibility", "_updateVisibility", "hide", "show", "_stop", "destroy", "toBase64Image", "toDataURL", "bindUserEvents", "bindResponsiveEvents", "_add", "_remove", "detached", "updateHoverStyle", "prefix", "getActiveElements", "setActiveElements", "activeElements", "lastActive", "_elementsEqual", "pluginId", "replay", "hoverOptions", "hover", "deactivated", "activated", "eventFilter", "_handleEvent", "_getActiveElements", "_isClickEvent", "onHover", "version", "clipSelf", "borderJoinStyle", "outerAngleClip", "_normalizeAngle", "innerAngleClip", "clipWidth", "closePath", "rect", "clipArc", "pixelMargin", "angleMargin", "toRadiusCorners", "_readValueToProps", "parseBorderRadius", "angleDelta", "o", "borderRadius", "halfThickness", "innerLimit", "computeOuterLimit", "outerArcLimit", "outerStart", "outerEnd", "innerStart", "innerEnd", "rThetaToXY", "theta", "pathArc", "innerR", "spacingOffset", "alpha", "noSpacingInnerRadius", "noSpacingOuterRadius", "avNogSpacingRadius", "adjustedAngle", "beta", "angleOffset", "outerStartAdjustedRadius", "outerEndAdjustedRadius", "outerStartAdjustedAngle", "outerEndAdjustedAngle", "innerStartAdjustedRadius", "innerEndAdjustedRadius", "innerStartAdjustedAngle", "innerEndAdjustedAngle", "outerMidAdjustedAngle", "pCenter", "p4", "innerMidAdjustedAngle", "p8", "outerStartX", "outerStartY", "outerEndX", "outerEndY", "drawArc", "fullCircles", "inner", "lineJoin", "selfJoin", "ArcElement", "chartX", "chartY", "rAdjust", "nonZeroBetween", "betweenAngles", "withinRadius", "_isBetween", "halfAngle", "halfRadius", "translate", "fix", "radiusOffset", "setStyle", "lineCap", "borderCapStyle", "previous", "getLineMethod", "stepped", "_steppedLineTo", "tension", "cubicInterpolationMode", "_bezierCurveTo", "pathVars", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "pathSegment", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "useFastPath", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "_path", "Path2D", "strokePathDirect", "segments", "segmentMethod", "usePath2D", "LineElement", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "capBezierPoints", "hitRadius", "PointElement", "mouseX", "mouseY", "inXRange", "inYRange", "hoverRadius", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "outer", "skipX", "skipY", "skipBoth", "hasRadius", "addNormalRectPath", "inflateRect", "amount", "refRect", "BarElement", "addRectPath", "addRoundedRectPath", "BORDER_COLORS", "BACKGROUND_COLORS", "replace", "getBorderColor", "getBackgroundColor", "colorizeDefaultDataset", "colorizeDoughnutDataset", "colorizePolarAreaDataset", "getColorizer", "containsColorsDefinitions", "k", "containsColorsDefinition", "containsDefaultColorsDefenitions", "forceOverride", "_args", "chartOptions", "containsColorDefenition", "colorizer", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "xMax", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "cleanDecimatedDataset", "defineProperty", "configurable", "enumerable", "writable", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "algorithm", "beforeElementsUpdate", "xAxis", "threshold", "tpoints", "_findSegmentEnd", "_getBounds", "targetSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_pointsFromSegments", "boundary", "linePoints", "_createBoundaryLine", "_shouldApplyFill", "_resolveTarget", "sources", "propagate", "visited", "_decodeFill", "parseFillOption", "parseFloat", "decodeTargetIndex", "firstCh", "_getTargetPixel", "_getTargetValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "unshift", "sourcePoint", "postponed", "findPoint", "pointValue", "firstValue", "lastValue", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "lineOpts", "above", "doFill", "fillColor", "clipVertical", "clipHorizontal", "clipY", "lineLoop", "clipX", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "usePointStyle", "pointStyleWidth", "itemHeight", "itemsEqual", "Legend", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "labelFont", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "itemWidth", "measureText", "_itemHeight", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "calculateItemSize", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "lineDash", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "fontLineHeight", "calculateLegendItemHeight", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "isListened", "hoveredItem", "sameItem", "onLeave", "calculateItemWidth", "calculateItemHeight", "legendItemText", "_element", "afterEvent", "ci", "useBorderRadius", "Title", "_padding", "textSize", "_drawArgs", "fontOpts", "createTitle", "titleBlock", "WeakMap", "positioners", "average", "xSet", "xAverage", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "apply", "splitNewlines", "str", "String", "createTooltipItem", "formattedValue", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "defaultCallbacks", "beforeTitle", "noop", "labelCount", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "invokeCallbackWithFallback", "Tooltip", "opacity", "_eventPosition", "_size", "_cachedAnimations", "_tooltipItems", "dataPoints", "caretX", "caretY", "labelColors", "labelPointStyles", "labelTextColors", "getTitle", "getBeforeBody", "getBody", "bodyItems", "scoped", "getAfterBody", "getFooter", "_createItems", "itemSort", "positionAndSize", "backgroundPoint", "external", "drawCaret", "tooltipPoint", "caretPosition", "getCaretPosition", "x3", "y3", "ptX", "ptY", "pt", "titleColor", "_drawColorBox", "colorX", "rtlColorX", "yOffSet", "colorY", "multiKeyBackground", "outerX", "innerX", "strokeRect", "drawBody", "bodyAlign", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "drawFooter", "footerAlign", "footerColor", "tooltipSize", "quadraticCurveTo", "_updateAnimationTarget", "animX", "animY", "_willRender", "hasTooltipContent", "globalAlpha", "positionChanged", "_positionChanged", "_ignoreReplayEvents", "afterInit", "afterDraw", "_fallback", "addIfString", "addedLabels", "findOrAddLabel", "lastIndexOf", "_getLabelForValue", "CategoryScale", "_startValue", "_valueRange", "_addedLabels", "added", "generateTicks", "generationOptions", "dataRange", "MIN_SPACING", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "rad", "LinearScaleBase", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "stepSize", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "Ticks", "formatters", "numeric", "log10Floor", "log10", "changeExponent", "m", "isMajor", "tickVal", "steps", "rangeExp", "rangeStep", "startExp", "minExp", "exp", "significand", "lastTick", "LogarithmicScale", "_zero", "logarithmic", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "_pointLabels", "pointLabelOpts", "additionalAngle", "centerPointLabels", "getPointLabelContext", "getPointPosition", "drawingArea", "plFont", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "apexesInArea", "drawPointLabelBox", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "animate", "INTERVALS", "millisecond", "common", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "UNITS", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "MAX_SAFE_INTEGER", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "TimeScale", "_unit", "_majorUnit", "_offsets", "_normalized", "adapters", "displayFormats", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "registerables"] -} diff --git a/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js b/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js deleted file mode 100644 index 8407a17807d36d36714b031217b00714eaf3d4db..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js +++ /dev/null @@ -1,98797 +0,0 @@ -import { - ArrowLeftOutlined_default, - ArrowRightOutlined_default, - BarsOutlined_default, - CalendarOutlined_default, - CaretDownFilled_default, - CaretDownOutlined_default, - CaretUpOutlined_default, - CheckCircleFilled_default, - CheckCircleOutlined_default, - CheckOutlined_default, - ClockCircleOutlined_default, - CloseCircleFilled_default, - CloseCircleOutlined_default, - CloseOutlined_default, - CopyOutlined_default, - DeleteOutlined_default, - DoubleLeftOutlined_default, - DoubleRightOutlined_default, - DownOutlined_default, - DownloadOutlined_default, - EditOutlined_default, - EllipsisOutlined_default, - EnterOutlined_default, - ExclamationCircleFilled_default, - ExclamationCircleOutlined_default, - EyeInvisibleOutlined_default, - EyeOutlined_default, - FileOutlined_default, - FileTextOutlined_default, - FileTwoTone_default, - FilterFilled_default, - FolderOpenOutlined_default, - FolderOutlined_default, - InfoCircleFilled_default, - InfoCircleOutlined_default, - LeftOutlined_default, - LoadingOutlined_default, - MinusSquareOutlined_default, - PaperClipOutlined_default, - PictureTwoTone_default, - PlusOutlined_default, - PlusSquareOutlined_default, - QuestionCircleOutlined_default, - ReloadOutlined_default, - RightOutlined_default, - RotateLeftOutlined_default, - RotateRightOutlined_default, - SearchOutlined_default, - StarFilled_default, - SwapOutlined_default, - SwapRightOutlined_default, - TinyColor, - UpOutlined_default, - VerticalAlignTopOutlined_default, - WarningFilled_default, - ZoomInOutlined_default, - ZoomOutOutlined_default, - generate, - gold, - presetPrimaryColors -} from "./chunk-NFZ5NDKV.js"; -import { - _extends, - zh_CN_default -} from "./chunk-ZBUPDRX3.js"; -import { - require_dayjs_min -} from "./chunk-CM2AK5IQ.js"; -import { - Comment, - Fragment, - Teleport, - Text, - Transition, - TransitionGroup, - cloneVNode, - computed, - createApp, - createTextVNode, - createVNode, - defineComponent, - getCurrentInstance, - getCurrentScope, - h, - inject, - isRef, - isVNode, - nextTick, - onActivated, - onBeforeMount, - onBeforeUnmount, - onBeforeUpdate, - onDeactivated, - onMounted, - onScopeDispose, - onUnmounted, - onUpdated, - provide, - reactive, - ref, - render, - resolveDirective, - shallowRef, - toRaw, - toRef, - toRefs, - triggerRef, - unref, - useAttrs, - vShow, - watch, - watchEffect, - withDirectives, - withModifiers -} from "./chunk-ZY5X6FX7.js"; -import { - __commonJS, - __export, - __toESM -} from "./chunk-DC5AMYBS.js"; - -// node_modules/dayjs/plugin/weekday.js -var require_weekday = __commonJS({ - "node_modules/dayjs/plugin/weekday.js"(exports2, module2) { - !function(e3, t3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t3() : "function" == typeof define && define.amd ? define(t3) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_weekday = t3(); - }(exports2, function() { - "use strict"; - return function(e3, t3) { - t3.prototype.weekday = function(e4) { - var t4 = this.$locale().weekStart || 0, i3 = this.$W, n3 = (i3 < t4 ? i3 + 7 : i3) - t4; - return this.$utils().u(e4) ? n3 : this.subtract(n3, "day").add(e4, "day"); - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/localeData.js -var require_localeData = __commonJS({ - "node_modules/dayjs/plugin/localeData.js"(exports2, module2) { - !function(n3, e3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = e3() : "function" == typeof define && define.amd ? define(e3) : (n3 = "undefined" != typeof globalThis ? globalThis : n3 || self).dayjs_plugin_localeData = e3(); - }(exports2, function() { - "use strict"; - return function(n3, e3, t3) { - var r3 = e3.prototype, o2 = function(n4) { - return n4 && (n4.indexOf ? n4 : n4.s); - }, u2 = function(n4, e4, t4, r4, u3) { - var i4 = n4.name ? n4 : n4.$locale(), a3 = o2(i4[e4]), s3 = o2(i4[t4]), f2 = a3 || s3.map(function(n5) { - return n5.slice(0, r4); - }); - if (!u3) return f2; - var d2 = i4.weekStart; - return f2.map(function(n5, e5) { - return f2[(e5 + (d2 || 0)) % 7]; - }); - }, i3 = function() { - return t3.Ls[t3.locale()]; - }, a2 = function(n4, e4) { - return n4.formats[e4] || function(n5) { - return n5.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(n6, e5, t4) { - return e5 || t4.slice(1); - }); - }(n4.formats[e4.toUpperCase()]); - }, s2 = function() { - var n4 = this; - return { months: function(e4) { - return e4 ? e4.format("MMMM") : u2(n4, "months"); - }, monthsShort: function(e4) { - return e4 ? e4.format("MMM") : u2(n4, "monthsShort", "months", 3); - }, firstDayOfWeek: function() { - return n4.$locale().weekStart || 0; - }, weekdays: function(e4) { - return e4 ? e4.format("dddd") : u2(n4, "weekdays"); - }, weekdaysMin: function(e4) { - return e4 ? e4.format("dd") : u2(n4, "weekdaysMin", "weekdays", 2); - }, weekdaysShort: function(e4) { - return e4 ? e4.format("ddd") : u2(n4, "weekdaysShort", "weekdays", 3); - }, longDateFormat: function(e4) { - return a2(n4.$locale(), e4); - }, meridiem: this.$locale().meridiem, ordinal: this.$locale().ordinal }; - }; - r3.localeData = function() { - return s2.bind(this)(); - }, t3.localeData = function() { - var n4 = i3(); - return { firstDayOfWeek: function() { - return n4.weekStart || 0; - }, weekdays: function() { - return t3.weekdays(); - }, weekdaysShort: function() { - return t3.weekdaysShort(); - }, weekdaysMin: function() { - return t3.weekdaysMin(); - }, months: function() { - return t3.months(); - }, monthsShort: function() { - return t3.monthsShort(); - }, longDateFormat: function(e4) { - return a2(n4, e4); - }, meridiem: n4.meridiem, ordinal: n4.ordinal }; - }, t3.months = function() { - return u2(i3(), "months"); - }, t3.monthsShort = function() { - return u2(i3(), "monthsShort", "months", 3); - }, t3.weekdays = function(n4) { - return u2(i3(), "weekdays", null, null, n4); - }, t3.weekdaysShort = function(n4) { - return u2(i3(), "weekdaysShort", "weekdays", 3, n4); - }, t3.weekdaysMin = function(n4) { - return u2(i3(), "weekdaysMin", "weekdays", 2, n4); - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/weekOfYear.js -var require_weekOfYear = __commonJS({ - "node_modules/dayjs/plugin/weekOfYear.js"(exports2, module2) { - !function(e3, t3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t3() : "function" == typeof define && define.amd ? define(t3) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_weekOfYear = t3(); - }(exports2, function() { - "use strict"; - var e3 = "week", t3 = "year"; - return function(i3, n3, r3) { - var f2 = n3.prototype; - f2.week = function(i4) { - if (void 0 === i4 && (i4 = null), null !== i4) return this.add(7 * (i4 - this.week()), "day"); - var n4 = this.$locale().yearStart || 1; - if (11 === this.month() && this.date() > 25) { - var f3 = r3(this).startOf(t3).add(1, t3).date(n4), s2 = r3(this).endOf(e3); - if (f3.isBefore(s2)) return 1; - } - var a2 = r3(this).startOf(t3).date(n4).startOf(e3).subtract(1, "millisecond"), o2 = this.diff(a2, e3, true); - return o2 < 0 ? r3(this).startOf("week").week() : Math.ceil(o2); - }, f2.weeks = function(e4) { - return void 0 === e4 && (e4 = null), this.week(e4); - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/weekYear.js -var require_weekYear = __commonJS({ - "node_modules/dayjs/plugin/weekYear.js"(exports2, module2) { - !function(e3, t3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t3() : "function" == typeof define && define.amd ? define(t3) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_weekYear = t3(); - }(exports2, function() { - "use strict"; - return function(e3, t3) { - t3.prototype.weekYear = function() { - var e4 = this.month(), t4 = this.week(), n3 = this.year(); - return 1 === t4 && 11 === e4 ? n3 + 1 : 0 === e4 && t4 >= 52 ? n3 - 1 : n3; - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/quarterOfYear.js -var require_quarterOfYear = __commonJS({ - "node_modules/dayjs/plugin/quarterOfYear.js"(exports2, module2) { - !function(t3, n3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = n3() : "function" == typeof define && define.amd ? define(n3) : (t3 = "undefined" != typeof globalThis ? globalThis : t3 || self).dayjs_plugin_quarterOfYear = n3(); - }(exports2, function() { - "use strict"; - var t3 = "month", n3 = "quarter"; - return function(e3, i3) { - var r3 = i3.prototype; - r3.quarter = function(t4) { - return this.$utils().u(t4) ? Math.ceil((this.month() + 1) / 3) : this.month(this.month() % 3 + 3 * (t4 - 1)); - }; - var s2 = r3.add; - r3.add = function(e4, i4) { - return e4 = Number(e4), this.$utils().p(i4) === n3 ? this.add(3 * e4, t3) : s2.bind(this)(e4, i4); - }; - var u2 = r3.startOf; - r3.startOf = function(e4, i4) { - var r4 = this.$utils(), s3 = !!r4.u(i4) || i4; - if (r4.p(e4) === n3) { - var o2 = this.quarter() - 1; - return s3 ? this.month(3 * o2).startOf(t3).startOf("day") : this.month(3 * o2 + 2).endOf(t3).endOf("day"); - } - return u2.bind(this)(e4, i4); - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/advancedFormat.js -var require_advancedFormat = __commonJS({ - "node_modules/dayjs/plugin/advancedFormat.js"(exports2, module2) { - !function(e3, t3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t3() : "function" == typeof define && define.amd ? define(t3) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_advancedFormat = t3(); - }(exports2, function() { - "use strict"; - return function(e3, t3) { - var r3 = t3.prototype, n3 = r3.format; - r3.format = function(e4) { - var t4 = this, r4 = this.$locale(); - if (!this.isValid()) return n3.bind(this)(e4); - var s2 = this.$utils(), a2 = (e4 || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function(e5) { - switch (e5) { - case "Q": - return Math.ceil((t4.$M + 1) / 3); - case "Do": - return r4.ordinal(t4.$D); - case "gggg": - return t4.weekYear(); - case "GGGG": - return t4.isoWeekYear(); - case "wo": - return r4.ordinal(t4.week(), "W"); - case "w": - case "ww": - return s2.s(t4.week(), "w" === e5 ? 1 : 2, "0"); - case "W": - case "WW": - return s2.s(t4.isoWeek(), "W" === e5 ? 1 : 2, "0"); - case "k": - case "kk": - return s2.s(String(0 === t4.$H ? 24 : t4.$H), "k" === e5 ? 1 : 2, "0"); - case "X": - return Math.floor(t4.$d.getTime() / 1e3); - case "x": - return t4.$d.getTime(); - case "z": - return "[" + t4.offsetName() + "]"; - case "zzz": - return "[" + t4.offsetName("long") + "]"; - default: - return e5; - } - }); - return n3.bind(this)(a2); - }; - }; - }); - } -}); - -// node_modules/dayjs/plugin/customParseFormat.js -var require_customParseFormat = __commonJS({ - "node_modules/dayjs/plugin/customParseFormat.js"(exports2, module2) { - !function(e3, t3) { - "object" == typeof exports2 && "undefined" != typeof module2 ? module2.exports = t3() : "function" == typeof define && define.amd ? define(t3) : (e3 = "undefined" != typeof globalThis ? globalThis : e3 || self).dayjs_plugin_customParseFormat = t3(); - }(exports2, function() { - "use strict"; - var e3 = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, t3 = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n3 = /\d/, r3 = /\d\d/, i3 = /\d\d?/, o2 = /\d*[^-_:/,()\s\d]+/, s2 = {}, a2 = function(e4) { - return (e4 = +e4) + (e4 > 68 ? 1900 : 2e3); - }; - var f2 = function(e4) { - return function(t4) { - this[e4] = +t4; - }; - }, h3 = [/[+-]\d\d:?(\d\d)?|Z/, function(e4) { - (this.zone || (this.zone = {})).offset = function(e5) { - if (!e5) return 0; - if ("Z" === e5) return 0; - var t4 = e5.match(/([+-]|\d\d)/g), n4 = 60 * t4[1] + (+t4[2] || 0); - return 0 === n4 ? 0 : "+" === t4[0] ? -n4 : n4; - }(e4); - }], u2 = function(e4) { - var t4 = s2[e4]; - return t4 && (t4.indexOf ? t4 : t4.s.concat(t4.f)); - }, d2 = function(e4, t4) { - var n4, r4 = s2.meridiem; - if (r4) { - for (var i4 = 1; i4 <= 24; i4 += 1) if (e4.indexOf(r4(i4, 0, t4)) > -1) { - n4 = i4 > 12; - break; - } - } else n4 = e4 === (t4 ? "pm" : "PM"); - return n4; - }, c2 = { A: [o2, function(e4) { - this.afternoon = d2(e4, false); - }], a: [o2, function(e4) { - this.afternoon = d2(e4, true); - }], Q: [n3, function(e4) { - this.month = 3 * (e4 - 1) + 1; - }], S: [n3, function(e4) { - this.milliseconds = 100 * +e4; - }], SS: [r3, function(e4) { - this.milliseconds = 10 * +e4; - }], SSS: [/\d{3}/, function(e4) { - this.milliseconds = +e4; - }], s: [i3, f2("seconds")], ss: [i3, f2("seconds")], m: [i3, f2("minutes")], mm: [i3, f2("minutes")], H: [i3, f2("hours")], h: [i3, f2("hours")], HH: [i3, f2("hours")], hh: [i3, f2("hours")], D: [i3, f2("day")], DD: [r3, f2("day")], Do: [o2, function(e4) { - var t4 = s2.ordinal, n4 = e4.match(/\d+/); - if (this.day = n4[0], t4) for (var r4 = 1; r4 <= 31; r4 += 1) t4(r4).replace(/\[|\]/g, "") === e4 && (this.day = r4); - }], w: [i3, f2("week")], ww: [r3, f2("week")], M: [i3, f2("month")], MM: [r3, f2("month")], MMM: [o2, function(e4) { - var t4 = u2("months"), n4 = (u2("monthsShort") || t4.map(function(e5) { - return e5.slice(0, 3); - })).indexOf(e4) + 1; - if (n4 < 1) throw new Error(); - this.month = n4 % 12 || n4; - }], MMMM: [o2, function(e4) { - var t4 = u2("months").indexOf(e4) + 1; - if (t4 < 1) throw new Error(); - this.month = t4 % 12 || t4; - }], Y: [/[+-]?\d+/, f2("year")], YY: [r3, function(e4) { - this.year = a2(e4); - }], YYYY: [/\d{4}/, f2("year")], Z: h3, ZZ: h3 }; - function l2(n4) { - var r4, i4; - r4 = n4, i4 = s2 && s2.formats; - for (var o3 = (n4 = r4.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(t4, n5, r5) { - var o4 = r5 && r5.toUpperCase(); - return n5 || i4[r5] || e3[r5] || i4[o4].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(e4, t5, n6) { - return t5 || n6.slice(1); - }); - })).match(t3), a3 = o3.length, f3 = 0; f3 < a3; f3 += 1) { - var h4 = o3[f3], u3 = c2[h4], d3 = u3 && u3[0], l3 = u3 && u3[1]; - o3[f3] = l3 ? { regex: d3, parser: l3 } : h4.replace(/^\[|\]$/g, ""); - } - return function(e4) { - for (var t4 = {}, n5 = 0, r5 = 0; n5 < a3; n5 += 1) { - var i5 = o3[n5]; - if ("string" == typeof i5) r5 += i5.length; - else { - var s3 = i5.regex, f4 = i5.parser, h5 = e4.slice(r5), u4 = s3.exec(h5)[0]; - f4.call(t4, u4), e4 = e4.replace(u4, ""); - } - } - return function(e5) { - var t5 = e5.afternoon; - if (void 0 !== t5) { - var n6 = e5.hours; - t5 ? n6 < 12 && (e5.hours += 12) : 12 === n6 && (e5.hours = 0), delete e5.afternoon; - } - }(t4), t4; - }; - } - return function(e4, t4, n4) { - n4.p.customParseFormat = true, e4 && e4.parseTwoDigitYear && (a2 = e4.parseTwoDigitYear); - var r4 = t4.prototype, i4 = r4.parse; - r4.parse = function(e5) { - var t5 = e5.date, r5 = e5.utc, o3 = e5.args; - this.$u = r5; - var a3 = o3[1]; - if ("string" == typeof a3) { - var f3 = true === o3[2], h4 = true === o3[3], u3 = f3 || h4, d3 = o3[2]; - h4 && (d3 = o3[2]), s2 = this.$locale(), !f3 && d3 && (s2 = n4.Ls[d3]), this.$d = function(e6, t6, n5, r6) { - try { - if (["x", "X"].indexOf(t6) > -1) return new Date(("X" === t6 ? 1e3 : 1) * e6); - var i5 = l2(t6)(e6), o4 = i5.year, s3 = i5.month, a4 = i5.day, f4 = i5.hours, h5 = i5.minutes, u4 = i5.seconds, d4 = i5.milliseconds, c4 = i5.zone, m3 = i5.week, M3 = /* @__PURE__ */ new Date(), Y2 = a4 || (o4 || s3 ? 1 : M3.getDate()), p = o4 || M3.getFullYear(), v2 = 0; - o4 && !s3 || (v2 = s3 > 0 ? s3 - 1 : M3.getMonth()); - var D2, w2 = f4 || 0, g2 = h5 || 0, y2 = u4 || 0, L2 = d4 || 0; - return c4 ? new Date(Date.UTC(p, v2, Y2, w2, g2, y2, L2 + 60 * c4.offset * 1e3)) : n5 ? new Date(Date.UTC(p, v2, Y2, w2, g2, y2, L2)) : (D2 = new Date(p, v2, Y2, w2, g2, y2, L2), m3 && (D2 = r6(D2).week(m3).toDate()), D2); - } catch (e7) { - return /* @__PURE__ */ new Date(""); - } - }(t5, a3, r5, n4), this.init(), d3 && true !== d3 && (this.$L = this.locale(d3).$L), u3 && t5 != this.format(a3) && (this.$d = /* @__PURE__ */ new Date("")), s2 = {}; - } else if (a3 instanceof Array) for (var c3 = a3.length, m2 = 1; m2 <= c3; m2 += 1) { - o3[1] = a3[m2 - 1]; - var M2 = n4.apply(this, o3); - if (M2.isValid()) { - this.$d = M2.$d, this.$L = M2.$L, this.init(); - break; - } - m2 === c3 && (this.$d = /* @__PURE__ */ new Date("")); - } - else i4.call(this, e5); - }; - }; - }); - } -}); - -// node_modules/ant-design-vue/es/components.js -var components_exports = {}; -__export(components_exports, { - Affix: () => affix_default, - Alert: () => alert_default, - Anchor: () => anchor_default, - AnchorLink: () => AnchorLink_default, - App: () => app_default, - AutoComplete: () => auto_complete_default, - AutoCompleteOptGroup: () => AutoCompleteOptGroup, - AutoCompleteOption: () => AutoCompleteOption, - Avatar: () => avatar_default, - AvatarGroup: () => Group_default, - BackTop: () => BackTop_default, - Badge: () => badge_default, - BadgeRibbon: () => Ribbon_default, - Breadcrumb: () => breadcrumb_default, - BreadcrumbItem: () => BreadcrumbItem_default, - BreadcrumbSeparator: () => BreadcrumbSeparator_default, - Button: () => button_default2, - ButtonGroup: () => button_group_default, - Calendar: () => calendar_default, - Card: () => card_default, - CardGrid: () => Grid_default, - CardMeta: () => Meta_default, - Carousel: () => carousel_default, - Cascader: () => cascader_default, - CheckableTag: () => CheckableTag_default, - Checkbox: () => checkbox_default, - CheckboxGroup: () => Group_default3, - Col: () => col_default, - Collapse: () => collapse_default2, - CollapsePanel: () => CollapsePanel_default, - Comment: () => comment_default, - Compact: () => Compact_default, - ConfigProvider: () => config_provider_default, - DatePicker: () => date_picker_default, - Descriptions: () => descriptions_default, - DescriptionsItem: () => DescriptionsItem, - DirectoryTree: () => DirectoryTree_default, - Divider: () => divider_default, - Drawer: () => drawer_default, - Dropdown: () => dropdown_default3, - DropdownButton: () => dropdown_button_default, - Empty: () => empty_default2, - Flex: () => flex_default, - FloatButton: () => float_button_default, - FloatButtonGroup: () => FloatButtonGroup_default, - Form: () => form_default, - FormItem: () => FormItem_default, - FormItemRest: () => FormItemContext_default, - Grid: () => grid_default, - Image: () => image_default, - ImagePreviewGroup: () => PreviewGroup_default2, - Input: () => input_default, - InputGroup: () => Group_default4, - InputNumber: () => input_number_default, - InputPassword: () => Password_default, - InputSearch: () => Search_default, - Layout: () => layout_default2, - LayoutContent: () => LayoutContent, - LayoutFooter: () => LayoutFooter, - LayoutHeader: () => LayoutHeader, - LayoutSider: () => LayoutSider, - List: () => list_default, - ListItem: () => Item_default3, - ListItemMeta: () => ItemMeta_default, - LocaleProvider: () => locale_provider_default, - Mentions: () => mentions_default, - MentionsOption: () => MentionsOption, - Menu: () => menu_default, - MenuDivider: () => Divider_default, - MenuItem: () => MenuItem_default, - MenuItemGroup: () => ItemGroup_default, - Modal: () => modal_default, - MonthPicker: () => MonthPicker, - PageHeader: () => page_header_default, - Pagination: () => pagination_default, - Popconfirm: () => popconfirm_default, - Popover: () => popover_default, - Progress: () => progress_default2, - QRCode: () => qrcode_default, - QuarterPicker: () => QuarterPicker, - Radio: () => radio_default, - RadioButton: () => RadioButton_default, - RadioGroup: () => Group_default2, - RangePicker: () => RangePicker, - Rate: () => rate_default, - Result: () => result_default2, - Row: () => row_default, - Segmented: () => segmented_default2, - Select: () => select_default, - SelectOptGroup: () => SelectOptGroup, - SelectOption: () => SelectOption, - Skeleton: () => skeleton_default, - SkeletonAvatar: () => Avatar_default2, - SkeletonButton: () => Button_default, - SkeletonImage: () => Image_default, - SkeletonInput: () => Input_default2, - SkeletonTitle: () => Title_default, - Slider: () => slider_default2, - Space: () => space_default, - Spin: () => spin_default, - Statistic: () => statistic_default, - StatisticCountdown: () => StatisticCountdown, - Step: () => Step, - Steps: () => steps_default, - SubMenu: () => SubMenu_default, - Switch: () => switch_default, - TabPane: () => TabPane_default, - Table: () => table_default, - TableColumn: () => Column_default2, - TableColumnGroup: () => ColumnGroup_default2, - TableSummary: () => TableSummary, - TableSummaryCell: () => TableSummaryCell, - TableSummaryRow: () => TableSummaryRow, - Tabs: () => tabs_default, - Tag: () => tag_default, - Textarea: () => TextArea_default, - TimePicker: () => time_picker_default2, - TimeRangePicker: () => TimeRangePicker, - Timeline: () => timeline_default, - TimelineItem: () => TimelineItem_default, - Tooltip: () => tooltip_default, - Tour: () => tour_default, - Transfer: () => transfer_default, - Tree: () => tree_default, - TreeNode: () => TreeNode, - TreeSelect: () => tree_select_default, - TreeSelectNode: () => TreeSelectNode, - Typography: () => typography_default, - TypographyLink: () => Link_default, - TypographyParagraph: () => Paragraph_default2, - TypographyText: () => Text_default, - TypographyTitle: () => Title_default2, - Upload: () => upload_default, - UploadDragger: () => UploadDragger, - Watermark: () => watermark_default, - WeekPicker: () => WeekPicker, - message: () => message_default, - notification: () => notification_default -}); - -// node_modules/@babel/runtime/helpers/esm/typeof.js -function _typeof(o2) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o3) { - return typeof o3; - } : function(o3) { - return o3 && "function" == typeof Symbol && o3.constructor === Symbol && o3 !== Symbol.prototype ? "symbol" : typeof o3; - }, _typeof(o2); -} - -// node_modules/@babel/runtime/helpers/esm/toPrimitive.js -function toPrimitive(t3, r3) { - if ("object" != _typeof(t3) || !t3) return t3; - var e3 = t3[Symbol.toPrimitive]; - if (void 0 !== e3) { - var i3 = e3.call(t3, r3 || "default"); - if ("object" != _typeof(i3)) return i3; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return ("string" === r3 ? String : Number)(t3); -} - -// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js -function toPropertyKey(t3) { - var i3 = toPrimitive(t3, "string"); - return "symbol" == _typeof(i3) ? i3 : String(i3); -} - -// node_modules/@babel/runtime/helpers/esm/defineProperty.js -function _defineProperty(obj, key2, value) { - key2 = toPropertyKey(key2); - if (key2 in obj) { - Object.defineProperty(obj, key2, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key2] = value; - } - return obj; -} - -// node_modules/@babel/runtime/helpers/esm/objectSpread2.js -function ownKeys(e3, r3) { - var t3 = Object.keys(e3); - if (Object.getOwnPropertySymbols) { - var o2 = Object.getOwnPropertySymbols(e3); - r3 && (o2 = o2.filter(function(r4) { - return Object.getOwnPropertyDescriptor(e3, r4).enumerable; - })), t3.push.apply(t3, o2); - } - return t3; -} -function _objectSpread2(e3) { - for (var r3 = 1; r3 < arguments.length; r3++) { - var t3 = null != arguments[r3] ? arguments[r3] : {}; - r3 % 2 ? ownKeys(Object(t3), true).forEach(function(r4) { - _defineProperty(e3, r4, t3[r4]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(t3)) : ownKeys(Object(t3)).forEach(function(r4) { - Object.defineProperty(e3, r4, Object.getOwnPropertyDescriptor(t3, r4)); - }); - } - return e3; -} - -// node_modules/ant-design-vue/es/_util/util.js -var isFunction = (val) => typeof val === "function"; -var controlDefaultValue = Symbol("controlDefaultValue"); -var isArray = Array.isArray; -var isString = (val) => typeof val === "string"; -var isObject = (val) => val !== null && typeof val === "object"; -var onRE = /^on[^a-z]/; -var isOn = (key2) => onRE.test(key2); -var cacheStringFunction = (fn) => { - const cache = /* @__PURE__ */ Object.create(null); - return (str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -var camelizeRE = /-(\w)/g; -var camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : ""); -}); -var hyphenateRE = /\B([A-Z])/g; -var hyphenate = cacheStringFunction((str) => { - return str.replace(hyphenateRE, "-$1").toLowerCase(); -}); -var capitalize = cacheStringFunction((str) => { - return str.charAt(0).toUpperCase() + str.slice(1); -}); -var hasOwnProperty = Object.prototype.hasOwnProperty; -var hasOwn = (val, key2) => hasOwnProperty.call(val, key2); -function resolvePropValue(options, props4, key2, value) { - const opt = options[key2]; - if (opt != null) { - const hasDefault = hasOwn(opt, "default"); - if (hasDefault && value === void 0) { - const defaultValue = opt.default; - value = opt.type !== Function && isFunction(defaultValue) ? defaultValue() : defaultValue; - } - if (opt.type === Boolean) { - if (!hasOwn(props4, key2) && !hasDefault) { - value = false; - } else if (value === "") { - value = true; - } - } - } - return value; -} -function getDataAndAriaProps(props4) { - return Object.keys(props4).reduce((memo, key2) => { - if (key2.startsWith("data-") || key2.startsWith("aria-")) { - memo[key2] = props4[key2]; - } - return memo; - }, {}); -} -function toPx(val) { - if (typeof val === "number") return `${val}px`; - return val; -} -function renderHelper(v2) { - let props4 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let defaultV = arguments.length > 2 ? arguments[2] : void 0; - if (typeof v2 === "function") { - return v2(props4); - } - return v2 !== null && v2 !== void 0 ? v2 : defaultV; -} -function wrapPromiseFn(openFn) { - let closeFn; - const closePromise = new Promise((resolve) => { - closeFn = openFn(() => { - resolve(true); - }); - }); - const result2 = () => { - closeFn === null || closeFn === void 0 ? void 0 : closeFn(); - }; - result2.then = (filled, rejected) => closePromise.then(filled, rejected); - result2.promise = closePromise; - return result2; -} - -// node_modules/ant-design-vue/es/_util/classNames.js -function classNames() { - const classes = []; - for (let i3 = 0; i3 < arguments.length; i3++) { - const value = i3 < 0 || arguments.length <= i3 ? void 0 : arguments[i3]; - if (!value) continue; - if (isString(value)) { - classes.push(value); - } else if (isArray(value)) { - for (let i4 = 0; i4 < value.length; i4++) { - const inner = classNames(value[i4]); - if (inner) { - classes.push(inner); - } - } - } else if (isObject(value)) { - for (const name in value) { - if (value[name]) { - classes.push(name); - } - } - } - } - return classes.join(" "); -} -var classNames_default = classNames; - -// node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js -var MapShim = function() { - if (typeof Map !== "undefined") { - return Map; - } - function getIndex(arr, key2) { - var result2 = -1; - arr.some(function(entry, index3) { - if (entry[0] === key2) { - result2 = index3; - return true; - } - return false; - }); - return result2; - } - return ( - /** @class */ - function() { - function class_1() { - this.__entries__ = []; - } - Object.defineProperty(class_1.prototype, "size", { - /** - * @returns {boolean} - */ - get: function() { - return this.__entries__.length; - }, - enumerable: true, - configurable: true - }); - class_1.prototype.get = function(key2) { - var index3 = getIndex(this.__entries__, key2); - var entry = this.__entries__[index3]; - return entry && entry[1]; - }; - class_1.prototype.set = function(key2, value) { - var index3 = getIndex(this.__entries__, key2); - if (~index3) { - this.__entries__[index3][1] = value; - } else { - this.__entries__.push([key2, value]); - } - }; - class_1.prototype.delete = function(key2) { - var entries = this.__entries__; - var index3 = getIndex(entries, key2); - if (~index3) { - entries.splice(index3, 1); - } - }; - class_1.prototype.has = function(key2) { - return !!~getIndex(this.__entries__, key2); - }; - class_1.prototype.clear = function() { - this.__entries__.splice(0); - }; - class_1.prototype.forEach = function(callback, ctx) { - if (ctx === void 0) { - ctx = null; - } - for (var _i = 0, _a2 = this.__entries__; _i < _a2.length; _i++) { - var entry = _a2[_i]; - callback.call(ctx, entry[1], entry[0]); - } - }; - return class_1; - }() - ); -}(); -var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && window.document === document; -var global$1 = function() { - if (typeof global !== "undefined" && global.Math === Math) { - return global; - } - if (typeof self !== "undefined" && self.Math === Math) { - return self; - } - if (typeof window !== "undefined" && window.Math === Math) { - return window; - } - return Function("return this")(); -}(); -var requestAnimationFrame$1 = function() { - if (typeof requestAnimationFrame === "function") { - return requestAnimationFrame.bind(global$1); - } - return function(callback) { - return setTimeout(function() { - return callback(Date.now()); - }, 1e3 / 60); - }; -}(); -var trailingTimeout = 2; -function throttle(callback, delay2) { - var leadingCall = false, trailingCall = false, lastCallTime = 0; - function resolvePending() { - if (leadingCall) { - leadingCall = false; - callback(); - } - if (trailingCall) { - proxy(); - } - } - function timeoutCallback() { - requestAnimationFrame$1(resolvePending); - } - function proxy() { - var timeStamp = Date.now(); - if (leadingCall) { - if (timeStamp - lastCallTime < trailingTimeout) { - return; - } - trailingCall = true; - } else { - leadingCall = true; - trailingCall = false; - setTimeout(timeoutCallback, delay2); - } - lastCallTime = timeStamp; - } - return proxy; -} -var REFRESH_DELAY = 20; -var transitionKeys = ["top", "right", "bottom", "left", "width", "height", "size", "weight"]; -var mutationObserverSupported = typeof MutationObserver !== "undefined"; -var ResizeObserverController = ( - /** @class */ - function() { - function ResizeObserverController2() { - this.connected_ = false; - this.mutationEventsAdded_ = false; - this.mutationsObserver_ = null; - this.observers_ = []; - this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); - this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); - } - ResizeObserverController2.prototype.addObserver = function(observer) { - if (!~this.observers_.indexOf(observer)) { - this.observers_.push(observer); - } - if (!this.connected_) { - this.connect_(); - } - }; - ResizeObserverController2.prototype.removeObserver = function(observer) { - var observers2 = this.observers_; - var index3 = observers2.indexOf(observer); - if (~index3) { - observers2.splice(index3, 1); - } - if (!observers2.length && this.connected_) { - this.disconnect_(); - } - }; - ResizeObserverController2.prototype.refresh = function() { - var changesDetected = this.updateObservers_(); - if (changesDetected) { - this.refresh(); - } - }; - ResizeObserverController2.prototype.updateObservers_ = function() { - var activeObservers = this.observers_.filter(function(observer) { - return observer.gatherActive(), observer.hasActive(); - }); - activeObservers.forEach(function(observer) { - return observer.broadcastActive(); - }); - return activeObservers.length > 0; - }; - ResizeObserverController2.prototype.connect_ = function() { - if (!isBrowser || this.connected_) { - return; - } - document.addEventListener("transitionend", this.onTransitionEnd_); - window.addEventListener("resize", this.refresh); - if (mutationObserverSupported) { - this.mutationsObserver_ = new MutationObserver(this.refresh); - this.mutationsObserver_.observe(document, { - attributes: true, - childList: true, - characterData: true, - subtree: true - }); - } else { - document.addEventListener("DOMSubtreeModified", this.refresh); - this.mutationEventsAdded_ = true; - } - this.connected_ = true; - }; - ResizeObserverController2.prototype.disconnect_ = function() { - if (!isBrowser || !this.connected_) { - return; - } - document.removeEventListener("transitionend", this.onTransitionEnd_); - window.removeEventListener("resize", this.refresh); - if (this.mutationsObserver_) { - this.mutationsObserver_.disconnect(); - } - if (this.mutationEventsAdded_) { - document.removeEventListener("DOMSubtreeModified", this.refresh); - } - this.mutationsObserver_ = null; - this.mutationEventsAdded_ = false; - this.connected_ = false; - }; - ResizeObserverController2.prototype.onTransitionEnd_ = function(_a2) { - var _b = _a2.propertyName, propertyName = _b === void 0 ? "" : _b; - var isReflowProperty = transitionKeys.some(function(key2) { - return !!~propertyName.indexOf(key2); - }); - if (isReflowProperty) { - this.refresh(); - } - }; - ResizeObserverController2.getInstance = function() { - if (!this.instance_) { - this.instance_ = new ResizeObserverController2(); - } - return this.instance_; - }; - ResizeObserverController2.instance_ = null; - return ResizeObserverController2; - }() -); -var defineConfigurable = function(target, props4) { - for (var _i = 0, _a2 = Object.keys(props4); _i < _a2.length; _i++) { - var key2 = _a2[_i]; - Object.defineProperty(target, key2, { - value: props4[key2], - enumerable: false, - writable: false, - configurable: true - }); - } - return target; -}; -var getWindowOf = function(target) { - var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; - return ownerGlobal || global$1; -}; -var emptyRect = createRectInit(0, 0, 0, 0); -function toFloat(value) { - return parseFloat(value) || 0; -} -function getBordersSize(styles) { - var positions = []; - for (var _i = 1; _i < arguments.length; _i++) { - positions[_i - 1] = arguments[_i]; - } - return positions.reduce(function(size2, position2) { - var value = styles["border-" + position2 + "-width"]; - return size2 + toFloat(value); - }, 0); -} -function getPaddings(styles) { - var positions = ["top", "right", "bottom", "left"]; - var paddings = {}; - for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { - var position2 = positions_1[_i]; - var value = styles["padding-" + position2]; - paddings[position2] = toFloat(value); - } - return paddings; -} -function getSVGContentRect(target) { - var bbox = target.getBBox(); - return createRectInit(0, 0, bbox.width, bbox.height); -} -function getHTMLElementContentRect(target) { - var clientWidth = target.clientWidth, clientHeight = target.clientHeight; - if (!clientWidth && !clientHeight) { - return emptyRect; - } - var styles = getWindowOf(target).getComputedStyle(target); - var paddings = getPaddings(styles); - var horizPad = paddings.left + paddings.right; - var vertPad = paddings.top + paddings.bottom; - var width = toFloat(styles.width), height = toFloat(styles.height); - if (styles.boxSizing === "border-box") { - if (Math.round(width + horizPad) !== clientWidth) { - width -= getBordersSize(styles, "left", "right") + horizPad; - } - if (Math.round(height + vertPad) !== clientHeight) { - height -= getBordersSize(styles, "top", "bottom") + vertPad; - } - } - if (!isDocumentElement(target)) { - var vertScrollbar = Math.round(width + horizPad) - clientWidth; - var horizScrollbar = Math.round(height + vertPad) - clientHeight; - if (Math.abs(vertScrollbar) !== 1) { - width -= vertScrollbar; - } - if (Math.abs(horizScrollbar) !== 1) { - height -= horizScrollbar; - } - } - return createRectInit(paddings.left, paddings.top, width, height); -} -var isSVGGraphicsElement = function() { - if (typeof SVGGraphicsElement !== "undefined") { - return function(target) { - return target instanceof getWindowOf(target).SVGGraphicsElement; - }; - } - return function(target) { - return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === "function"; - }; -}(); -function isDocumentElement(target) { - return target === getWindowOf(target).document.documentElement; -} -function getContentRect(target) { - if (!isBrowser) { - return emptyRect; - } - if (isSVGGraphicsElement(target)) { - return getSVGContentRect(target); - } - return getHTMLElementContentRect(target); -} -function createReadOnlyRect(_a2) { - var x2 = _a2.x, y2 = _a2.y, width = _a2.width, height = _a2.height; - var Constr = typeof DOMRectReadOnly !== "undefined" ? DOMRectReadOnly : Object; - var rect = Object.create(Constr.prototype); - defineConfigurable(rect, { - x: x2, - y: y2, - width, - height, - top: y2, - right: x2 + width, - bottom: height + y2, - left: x2 - }); - return rect; -} -function createRectInit(x2, y2, width, height) { - return { x: x2, y: y2, width, height }; -} -var ResizeObservation = ( - /** @class */ - function() { - function ResizeObservation2(target) { - this.broadcastWidth = 0; - this.broadcastHeight = 0; - this.contentRect_ = createRectInit(0, 0, 0, 0); - this.target = target; - } - ResizeObservation2.prototype.isActive = function() { - var rect = getContentRect(this.target); - this.contentRect_ = rect; - return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight; - }; - ResizeObservation2.prototype.broadcastRect = function() { - var rect = this.contentRect_; - this.broadcastWidth = rect.width; - this.broadcastHeight = rect.height; - return rect; - }; - return ResizeObservation2; - }() -); -var ResizeObserverEntry = ( - /** @class */ - /* @__PURE__ */ function() { - function ResizeObserverEntry2(target, rectInit) { - var contentRect = createReadOnlyRect(rectInit); - defineConfigurable(this, { target, contentRect }); - } - return ResizeObserverEntry2; - }() -); -var ResizeObserverSPI = ( - /** @class */ - function() { - function ResizeObserverSPI2(callback, controller, callbackCtx) { - this.activeObservations_ = []; - this.observations_ = new MapShim(); - if (typeof callback !== "function") { - throw new TypeError("The callback provided as parameter 1 is not a function."); - } - this.callback_ = callback; - this.controller_ = controller; - this.callbackCtx_ = callbackCtx; - } - ResizeObserverSPI2.prototype.observe = function(target) { - if (!arguments.length) { - throw new TypeError("1 argument required, but only 0 present."); - } - if (typeof Element === "undefined" || !(Element instanceof Object)) { - return; - } - if (!(target instanceof getWindowOf(target).Element)) { - throw new TypeError('parameter 1 is not of type "Element".'); - } - var observations = this.observations_; - if (observations.has(target)) { - return; - } - observations.set(target, new ResizeObservation(target)); - this.controller_.addObserver(this); - this.controller_.refresh(); - }; - ResizeObserverSPI2.prototype.unobserve = function(target) { - if (!arguments.length) { - throw new TypeError("1 argument required, but only 0 present."); - } - if (typeof Element === "undefined" || !(Element instanceof Object)) { - return; - } - if (!(target instanceof getWindowOf(target).Element)) { - throw new TypeError('parameter 1 is not of type "Element".'); - } - var observations = this.observations_; - if (!observations.has(target)) { - return; - } - observations.delete(target); - if (!observations.size) { - this.controller_.removeObserver(this); - } - }; - ResizeObserverSPI2.prototype.disconnect = function() { - this.clearActive(); - this.observations_.clear(); - this.controller_.removeObserver(this); - }; - ResizeObserverSPI2.prototype.gatherActive = function() { - var _this = this; - this.clearActive(); - this.observations_.forEach(function(observation) { - if (observation.isActive()) { - _this.activeObservations_.push(observation); - } - }); - }; - ResizeObserverSPI2.prototype.broadcastActive = function() { - if (!this.hasActive()) { - return; - } - var ctx = this.callbackCtx_; - var entries = this.activeObservations_.map(function(observation) { - return new ResizeObserverEntry(observation.target, observation.broadcastRect()); - }); - this.callback_.call(ctx, entries, ctx); - this.clearActive(); - }; - ResizeObserverSPI2.prototype.clearActive = function() { - this.activeObservations_.splice(0); - }; - ResizeObserverSPI2.prototype.hasActive = function() { - return this.activeObservations_.length > 0; - }; - return ResizeObserverSPI2; - }() -); -var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim(); -var ResizeObserver2 = ( - /** @class */ - /* @__PURE__ */ function() { - function ResizeObserver3(callback) { - if (!(this instanceof ResizeObserver3)) { - throw new TypeError("Cannot call a class as a function."); - } - if (!arguments.length) { - throw new TypeError("1 argument required, but only 0 present."); - } - var controller = ResizeObserverController.getInstance(); - var observer = new ResizeObserverSPI(callback, controller, this); - observers.set(this, observer); - } - return ResizeObserver3; - }() -); -[ - "observe", - "unobserve", - "disconnect" -].forEach(function(method5) { - ResizeObserver2.prototype[method5] = function() { - var _a2; - return (_a2 = observers.get(this))[method5].apply(_a2, arguments); - }; -}); -var index = function() { - if (typeof global$1.ResizeObserver !== "undefined") { - return global$1.ResizeObserver; - } - return ResizeObserver2; -}(); -var ResizeObserver_es_default = index; - -// node_modules/ant-design-vue/es/_util/isValid.js -var isValid = (value) => { - return value !== void 0 && value !== null && value !== ""; -}; -var isValid_default = isValid; - -// node_modules/ant-design-vue/es/_util/props-util/initDefaultProps.js -var initDefaultProps = (types2, defaultProps4) => { - const propTypes2 = _extends({}, types2); - Object.keys(defaultProps4).forEach((k2) => { - const prop = propTypes2[k2]; - if (prop) { - if (prop.type || prop.default) { - prop.default = defaultProps4[k2]; - } else if (prop.def) { - prop.def(defaultProps4[k2]); - } else { - propTypes2[k2] = { - type: prop, - default: defaultProps4[k2] - }; - } - } else { - throw new Error(`not have ${k2} prop`); - } - }); - return propTypes2; -}; -var initDefaultProps_default = initDefaultProps; - -// node_modules/ant-design-vue/es/_util/props-util/index.js -var splitAttrs = (attrs) => { - const allAttrs = Object.keys(attrs); - const eventAttrs = {}; - const onEvents = {}; - const extraAttrs = {}; - for (let i3 = 0, l2 = allAttrs.length; i3 < l2; i3++) { - const key2 = allAttrs[i3]; - if (isOn(key2)) { - eventAttrs[key2[2].toLowerCase() + key2.slice(3)] = attrs[key2]; - onEvents[key2] = attrs[key2]; - } else { - extraAttrs[key2] = attrs[key2]; - } - } - return { - onEvents, - events: eventAttrs, - extraAttrs - }; -}; -var parseStyleText = function() { - let cssText = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - let camel = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const res = {}; - const listDelimiter = /;(?![^(]*\))/g; - const propertyDelimiter = /:(.+)/; - if (typeof cssText === "object") return cssText; - cssText.split(listDelimiter).forEach(function(item) { - if (item) { - const tmp = item.split(propertyDelimiter); - if (tmp.length > 1) { - const k2 = camel ? camelize(tmp[0].trim()) : tmp[0].trim(); - res[k2] = tmp[1].trim(); - } - } - }); - return res; -}; -var hasProp = (instance, prop) => { - return instance[prop] !== void 0; -}; -var skipFlattenKey = Symbol("skipFlatten"); -var flattenChildren = function() { - let children = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - let filterEmpty2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - const temp = Array.isArray(children) ? children : [children]; - const res = []; - temp.forEach((child) => { - if (Array.isArray(child)) { - res.push(...flattenChildren(child, filterEmpty2)); - } else if (child && child.type === Fragment) { - if (child.key === skipFlattenKey) { - res.push(child); - } else { - res.push(...flattenChildren(child.children, filterEmpty2)); - } - } else if (child && isVNode(child)) { - if (filterEmpty2 && !isEmptyElement(child)) { - res.push(child); - } else if (!filterEmpty2) { - res.push(child); - } - } else if (isValid_default(child)) { - res.push(child); - } - }); - return res; -}; -var getSlot = function(self2) { - let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "default"; - let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - if (isVNode(self2)) { - if (self2.type === Fragment) { - return name === "default" ? flattenChildren(self2.children) : []; - } else if (self2.children && self2.children[name]) { - return flattenChildren(self2.children[name](options)); - } else { - return []; - } - } else { - const res = self2.$slots[name] && self2.$slots[name](options); - return flattenChildren(res); - } -}; -var findDOMNode = (instance) => { - var _a2; - let node2 = ((_a2 = instance === null || instance === void 0 ? void 0 : instance.vnode) === null || _a2 === void 0 ? void 0 : _a2.el) || instance && (instance.$el || instance); - while (node2 && !node2.tagName) { - node2 = node2.nextSibling; - } - return node2; -}; -var getOptionProps = (instance) => { - const res = {}; - if (instance.$ && instance.$.vnode) { - const props4 = instance.$.vnode.props || {}; - Object.keys(instance.$props).forEach((k2) => { - const v2 = instance.$props[k2]; - const hyphenateKey = hyphenate(k2); - if (v2 !== void 0 || hyphenateKey in props4) { - res[k2] = v2; - } - }); - } else if (isVNode(instance) && typeof instance.type === "object") { - const originProps = instance.props || {}; - const props4 = {}; - Object.keys(originProps).forEach((key2) => { - props4[camelize(key2)] = originProps[key2]; - }); - const options = instance.type.props || {}; - Object.keys(options).forEach((k2) => { - const v2 = resolvePropValue(options, props4, k2, props4[k2]); - if (v2 !== void 0 || k2 in props4) { - res[k2] = v2; - } - }); - } - return res; -}; -var getComponent = function(instance) { - let prop = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "default"; - let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : instance; - let execute = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; - let com = void 0; - if (instance.$) { - const temp = instance[prop]; - if (temp !== void 0) { - return typeof temp === "function" && execute ? temp(options) : temp; - } else { - com = instance.$slots[prop]; - com = execute && com ? com(options) : com; - } - } else if (isVNode(instance)) { - const temp = instance.props && instance.props[prop]; - if (temp !== void 0 && instance.props !== null) { - return typeof temp === "function" && execute ? temp(options) : temp; - } else if (instance.type === Fragment) { - com = instance.children; - } else if (instance.children && instance.children[prop]) { - com = instance.children[prop]; - com = execute && com ? com(options) : com; - } - } - if (Array.isArray(com)) { - com = flattenChildren(com); - com = com.length === 1 ? com[0] : com; - com = com.length === 0 ? void 0 : com; - } - return com; -}; -function getEvents() { - let ele = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - let on = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - let props4 = {}; - if (ele.$) { - props4 = _extends(_extends({}, props4), ele.$attrs); - } else { - props4 = _extends(_extends({}, props4), ele.props); - } - return splitAttrs(props4)[on ? "onEvents" : "events"]; -} -function getClass(ele) { - const props4 = (isVNode(ele) ? ele.props : ele.$attrs) || {}; - const tempCls = props4.class || {}; - let cls = {}; - if (typeof tempCls === "string") { - tempCls.split(" ").forEach((c2) => { - cls[c2.trim()] = true; - }); - } else if (Array.isArray(tempCls)) { - classNames_default(tempCls).split(" ").forEach((c2) => { - cls[c2.trim()] = true; - }); - } else { - cls = _extends(_extends({}, cls), tempCls); - } - return cls; -} -function getStyle(ele, camel) { - const props4 = (isVNode(ele) ? ele.props : ele.$attrs) || {}; - let style = props4.style || {}; - if (typeof style === "string") { - style = parseStyleText(style, camel); - } else if (camel && style) { - const res = {}; - Object.keys(style).forEach((k2) => res[camelize(k2)] = style[k2]); - return res; - } - return style; -} -function isFragment(c2) { - return c2.length === 1 && c2[0].type === Fragment; -} -function isEmptyContent(c2) { - return c2 === void 0 || c2 === null || c2 === "" || Array.isArray(c2) && c2.length === 0; -} -function isEmptyElement(c2) { - return c2 && (c2.type === Comment || c2.type === Fragment && c2.children.length === 0 || c2.type === Text && c2.children.trim() === ""); -} -function isStringElement(c2) { - return c2 && c2.type === Text; -} -function filterEmpty() { - let children = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - const res = []; - children.forEach((child) => { - if (Array.isArray(child)) { - res.push(...child); - } else if ((child === null || child === void 0 ? void 0 : child.type) === Fragment) { - res.push(...filterEmpty(child.children)); - } else { - res.push(child); - } - }); - return res.filter((c2) => !isEmptyElement(c2)); -} -function filterEmptyWithUndefined(children) { - if (children) { - const coms = filterEmpty(children); - return coms.length ? coms : void 0; - } else { - return children; - } -} -function isValidElement(element) { - if (Array.isArray(element) && element.length === 1) { - element = element[0]; - } - return element && element.__v_isVNode && typeof element.type !== "symbol"; -} -function getPropsSlot(slots, props4) { - let prop = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "default"; - var _a2, _b; - return (_a2 = props4[prop]) !== null && _a2 !== void 0 ? _a2 : (_b = slots[prop]) === null || _b === void 0 ? void 0 : _b.call(slots); -} - -// node_modules/ant-design-vue/es/vc-resize-observer/index.js -var vc_resize_observer_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ResizeObserver", - props: { - disabled: Boolean, - onResize: Function - }, - emits: ["resize"], - setup(props4, _ref) { - let { - slots - } = _ref; - const state = reactive({ - width: 0, - height: 0, - offsetHeight: 0, - offsetWidth: 0 - }); - let currentElement = null; - let resizeObserver = null; - const destroyObserver = () => { - if (resizeObserver) { - resizeObserver.disconnect(); - resizeObserver = null; - } - }; - const onResize = (entries) => { - const { - onResize: onResize2 - } = props4; - const target = entries[0].target; - const { - width, - height - } = target.getBoundingClientRect(); - const { - offsetWidth, - offsetHeight - } = target; - const fixedWidth = Math.floor(width); - const fixedHeight = Math.floor(height); - if (state.width !== fixedWidth || state.height !== fixedHeight || state.offsetWidth !== offsetWidth || state.offsetHeight !== offsetHeight) { - const size2 = { - width: fixedWidth, - height: fixedHeight, - offsetWidth, - offsetHeight - }; - _extends(state, size2); - if (onResize2) { - Promise.resolve().then(() => { - onResize2(_extends(_extends({}, size2), { - offsetWidth, - offsetHeight - }), target); - }); - } - } - }; - const instance = getCurrentInstance(); - const registerObserver = () => { - const { - disabled - } = props4; - if (disabled) { - destroyObserver(); - return; - } - const element = findDOMNode(instance); - const elementChanged = element !== currentElement; - if (elementChanged) { - destroyObserver(); - currentElement = element; - } - if (!resizeObserver && element) { - resizeObserver = new ResizeObserver_es_default(onResize); - resizeObserver.observe(element); - } - }; - onMounted(() => { - registerObserver(); - }); - onUpdated(() => { - registerObserver(); - }); - onUnmounted(() => { - destroyObserver(); - }); - watch(() => props4.disabled, () => { - registerObserver(); - }, { - flush: "post" - }); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)[0]; - }; - } -}); - -// node_modules/ant-design-vue/es/_util/raf.js -var raf = (callback) => setTimeout(callback, 16); -var caf = (num) => clearTimeout(num); -if (typeof window !== "undefined" && "requestAnimationFrame" in window) { - raf = (callback) => window.requestAnimationFrame(callback); - caf = (handle) => window.cancelAnimationFrame(handle); -} -var rafUUID = 0; -var rafIds = /* @__PURE__ */ new Map(); -function cleanup(id) { - rafIds.delete(id); -} -function wrapperRaf(callback) { - let times2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; - rafUUID += 1; - const id = rafUUID; - function callRef(leftTimes) { - if (leftTimes === 0) { - cleanup(id); - callback(); - } else { - const realId = raf(() => { - callRef(leftTimes - 1); - }); - rafIds.set(id, realId); - } - } - callRef(times2); - return id; -} -wrapperRaf.cancel = (id) => { - const realId = rafIds.get(id); - cleanup(realId); - return caf(realId); -}; - -// node_modules/ant-design-vue/es/_util/throttleByAnimationFrame.js -function throttleByAnimationFrame(fn) { - let requestId; - const later = (args) => () => { - requestId = null; - fn(...args); - }; - const throttled = function() { - if (requestId == null) { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - requestId = wrapperRaf(later(args)); - } - }; - throttled.cancel = () => { - wrapperRaf.cancel(requestId); - requestId = null; - }; - return throttled; -} -var throttleByAnimationFrame_default = throttleByAnimationFrame; - -// node_modules/ant-design-vue/es/_util/type.js -var tuple = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return args; -}; -var tupleNum = function() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - return args; -}; -var withInstall = (comp) => { - const c2 = comp; - c2.install = function(app) { - app.component(c2.displayName || c2.name, comp); - }; - return comp; -}; -function eventType() { - return { - type: [Function, Array] - }; -} -function objectType(defaultVal) { - return { - type: Object, - default: defaultVal - }; -} -function booleanType(defaultVal) { - return { - type: Boolean, - default: defaultVal - }; -} -function functionType(defaultVal) { - return { - type: Function, - default: defaultVal - }; -} -function anyType(defaultVal, required4) { - const type4 = { - validator: () => true, - default: defaultVal - }; - return required4 ? type4 : type4; -} -function vNodeType() { - return { - validator: () => true - }; -} -function arrayType(defaultVal) { - return { - type: Array, - default: defaultVal - }; -} -function stringType(defaultVal) { - return { - type: String, - default: defaultVal - }; -} -function someType(types2, defaultVal) { - return types2 ? { - type: types2, - default: defaultVal - } : anyType(defaultVal); -} - -// node_modules/ant-design-vue/es/_util/supportsPassive.js -var supportsPassive = false; -try { - const opts = Object.defineProperty({}, "passive", { - get() { - supportsPassive = true; - } - }); - window.addEventListener("testPassive", null, opts); - window.removeEventListener("testPassive", null, opts); -} catch (e3) { -} -var supportsPassive_default = supportsPassive; - -// node_modules/ant-design-vue/es/vc-util/Dom/addEventListener.js -function addEventListenerWrap(target, eventType2, cb, option) { - if (target && target.addEventListener) { - let opt = option; - if (opt === void 0 && supportsPassive_default && (eventType2 === "touchstart" || eventType2 === "touchmove" || eventType2 === "wheel")) { - opt = { - passive: false - }; - } - target.addEventListener(eventType2, cb, opt); - } - return { - remove: () => { - if (target && target.removeEventListener) { - target.removeEventListener(eventType2, cb); - } - } - }; -} - -// node_modules/ant-design-vue/es/affix/utils.js -function getTargetRect(target) { - return target !== window ? target.getBoundingClientRect() : { - top: 0, - bottom: window.innerHeight - }; -} -function getFixedTop(placeholderRect, targetRect, offsetTop) { - if (offsetTop !== void 0 && targetRect.top > placeholderRect.top - offsetTop) { - return `${offsetTop + targetRect.top}px`; - } - return void 0; -} -function getFixedBottom(placeholderRect, targetRect, offsetBottom) { - if (offsetBottom !== void 0 && targetRect.bottom < placeholderRect.bottom + offsetBottom) { - const targetBottomOffset = window.innerHeight - targetRect.bottom; - return `${offsetBottom + targetBottomOffset}px`; - } - return void 0; -} -var TRIGGER_EVENTS = ["resize", "scroll", "touchstart", "touchmove", "touchend", "pageshow", "load"]; -var observerEntities = []; -function addObserveTarget(target, affix) { - if (!target) return; - let entity = observerEntities.find((item) => item.target === target); - if (entity) { - entity.affixList.push(affix); - } else { - entity = { - target, - affixList: [affix], - eventHandlers: {} - }; - observerEntities.push(entity); - TRIGGER_EVENTS.forEach((eventName) => { - entity.eventHandlers[eventName] = addEventListenerWrap(target, eventName, () => { - entity.affixList.forEach((targetAffix) => { - const { - lazyUpdatePosition - } = targetAffix.exposed; - lazyUpdatePosition(); - }, (eventName === "touchstart" || eventName === "touchmove") && supportsPassive_default ? { - passive: true - } : false); - }); - }); - } -} -function removeObserveTarget(affix) { - const observerEntity = observerEntities.find((oriObserverEntity) => { - const hasAffix = oriObserverEntity.affixList.some((item) => item === affix); - if (hasAffix) { - oriObserverEntity.affixList = oriObserverEntity.affixList.filter((item) => item !== affix); - } - return hasAffix; - }); - if (observerEntity && observerEntity.affixList.length === 0) { - observerEntities = observerEntities.filter((item) => item !== observerEntity); - TRIGGER_EVENTS.forEach((eventName) => { - const handler2 = observerEntity.eventHandlers[eventName]; - if (handler2 && handler2.remove) { - handler2.remove(); - } - }); - } -} - -// node_modules/ant-design-vue/es/config-provider/context.js -var defaultIconPrefixCls = "anticon"; -var GlobalFormContextKey = Symbol("GlobalFormContextKey"); -var useProvideGlobalForm = (state) => { - provide(GlobalFormContextKey, state); -}; -var useInjectGlobalForm = () => { - return inject(GlobalFormContextKey, { - validateMessages: computed(() => void 0) - }); -}; -var GlobalConfigContextKey = Symbol("GlobalConfigContextKey"); -var configProviderProps = () => ({ - iconPrefixCls: String, - getTargetContainer: { - type: Function - }, - getPopupContainer: { - type: Function - }, - prefixCls: String, - getPrefixCls: { - type: Function - }, - renderEmpty: { - type: Function - }, - transformCellText: { - type: Function - }, - csp: objectType(), - input: objectType(), - autoInsertSpaceInButton: { - type: Boolean, - default: void 0 - }, - locale: objectType(), - pageHeader: objectType(), - componentSize: { - type: String - }, - componentDisabled: { - type: Boolean, - default: void 0 - }, - direction: { - type: String, - default: "ltr" - }, - space: objectType(), - virtual: { - type: Boolean, - default: void 0 - }, - dropdownMatchSelectWidth: { - type: [Number, Boolean], - default: true - }, - form: objectType(), - pagination: objectType(), - theme: objectType(), - select: objectType(), - wave: objectType() -}); -var configProviderKey = Symbol("configProvider"); -var defaultConfigProvider = { - getPrefixCls: (suffixCls, customizePrefixCls) => { - if (customizePrefixCls) return customizePrefixCls; - return suffixCls ? `ant-${suffixCls}` : "ant"; - }, - iconPrefixCls: computed(() => defaultIconPrefixCls), - getPopupContainer: computed(() => () => document.body), - direction: computed(() => "ltr") -}; -var useConfigContextInject = () => { - return inject(configProviderKey, defaultConfigProvider); -}; -var useConfigContextProvider = (props4) => { - return provide(configProviderKey, props4); -}; - -// node_modules/ant-design-vue/es/config-provider/DisabledContext.js -var DisabledContextKey = Symbol("DisabledContextKey"); -var useInjectDisabled = () => { - return inject(DisabledContextKey, ref(void 0)); -}; -var useProviderDisabled = (disabled) => { - const parentDisabled = useInjectDisabled(); - provide(DisabledContextKey, computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : parentDisabled.value; - })); - return disabled; -}; - -// node_modules/ant-design-vue/es/vc-pagination/locale/en_US.js -var en_US_default = { - // Options.jsx - items_per_page: "/ page", - jump_to: "Go to", - jump_to_confirm: "confirm", - page: "", - // Pagination.jsx - prev_page: "Previous Page", - next_page: "Next Page", - prev_5: "Previous 5 Pages", - next_5: "Next 5 Pages", - prev_3: "Previous 3 Pages", - next_3: "Next 3 Pages" -}; - -// node_modules/ant-design-vue/es/vc-picker/locale/en_US.js -var locale = { - locale: "en_US", - today: "Today", - now: "Now", - backToToday: "Back to today", - ok: "Ok", - clear: "Clear", - month: "Month", - year: "Year", - timeSelect: "select time", - dateSelect: "select date", - weekSelect: "Choose a week", - monthSelect: "Choose a month", - yearSelect: "Choose a year", - decadeSelect: "Choose a decade", - yearFormat: "YYYY", - dateFormat: "M/D/YYYY", - dayFormat: "D", - dateTimeFormat: "M/D/YYYY HH:mm:ss", - monthBeforeYear: true, - previousMonth: "Previous month (PageUp)", - nextMonth: "Next month (PageDown)", - previousYear: "Last year (Control + left)", - nextYear: "Next year (Control + right)", - previousDecade: "Last decade", - nextDecade: "Next decade", - previousCentury: "Last century", - nextCentury: "Next century" -}; -var en_US_default2 = locale; - -// node_modules/ant-design-vue/es/time-picker/locale/en_US.js -var locale2 = { - placeholder: "Select time", - rangePlaceholder: ["Start time", "End time"] -}; -var en_US_default3 = locale2; - -// node_modules/ant-design-vue/es/date-picker/locale/en_US.js -var locale3 = { - lang: _extends({ - placeholder: "Select date", - yearPlaceholder: "Select year", - quarterPlaceholder: "Select quarter", - monthPlaceholder: "Select month", - weekPlaceholder: "Select week", - rangePlaceholder: ["Start date", "End date"], - rangeYearPlaceholder: ["Start year", "End year"], - rangeQuarterPlaceholder: ["Start quarter", "End quarter"], - rangeMonthPlaceholder: ["Start month", "End month"], - rangeWeekPlaceholder: ["Start week", "End week"] - }, en_US_default2), - timePickerLocale: _extends({}, en_US_default3) -}; -var en_US_default4 = locale3; - -// node_modules/ant-design-vue/es/calendar/locale/en_US.js -var en_US_default5 = en_US_default4; - -// node_modules/ant-design-vue/es/locale/en_US.js -var typeTemplate = "${label} is not a valid ${type}"; -var localeValues = { - locale: "en", - Pagination: en_US_default, - DatePicker: en_US_default4, - TimePicker: en_US_default3, - Calendar: en_US_default5, - global: { - placeholder: "Please select" - }, - Table: { - filterTitle: "Filter menu", - filterConfirm: "OK", - filterReset: "Reset", - filterEmptyText: "No filters", - filterCheckall: "Select all items", - filterSearchPlaceholder: "Search in filters", - emptyText: "No data", - selectAll: "Select current page", - selectInvert: "Invert current page", - selectNone: "Clear all data", - selectionAll: "Select all data", - sortTitle: "Sort", - expand: "Expand row", - collapse: "Collapse row", - triggerDesc: "Click to sort descending", - triggerAsc: "Click to sort ascending", - cancelSort: "Click to cancel sorting" - }, - Tour: { - Next: "Next", - Previous: "Previous", - Finish: "Finish" - }, - Modal: { - okText: "OK", - cancelText: "Cancel", - justOkText: "OK" - }, - Popconfirm: { - okText: "OK", - cancelText: "Cancel" - }, - Transfer: { - titles: ["", ""], - searchPlaceholder: "Search here", - itemUnit: "item", - itemsUnit: "items", - remove: "Remove", - selectCurrent: "Select current page", - removeCurrent: "Remove current page", - selectAll: "Select all data", - removeAll: "Remove all data", - selectInvert: "Invert current page" - }, - Upload: { - uploading: "Uploading...", - removeFile: "Remove file", - uploadError: "Upload error", - previewFile: "Preview file", - downloadFile: "Download file" - }, - Empty: { - description: "No data" - }, - Icon: { - icon: "icon" - }, - Text: { - edit: "Edit", - copy: "Copy", - copied: "Copied", - expand: "Expand" - }, - PageHeader: { - back: "Back" - }, - Form: { - optional: "(optional)", - defaultValidateMessages: { - default: "Field validation error for ${label}", - required: "Please enter ${label}", - enum: "${label} must be one of [${enum}]", - whitespace: "${label} cannot be a blank character", - date: { - format: "${label} date format is invalid", - parse: "${label} cannot be converted to a date", - invalid: "${label} is an invalid date" - }, - types: { - string: typeTemplate, - method: typeTemplate, - array: typeTemplate, - object: typeTemplate, - number: typeTemplate, - date: typeTemplate, - boolean: typeTemplate, - integer: typeTemplate, - float: typeTemplate, - regexp: typeTemplate, - email: typeTemplate, - url: typeTemplate, - hex: typeTemplate - }, - string: { - len: "${label} must be ${len} characters", - min: "${label} must be at least ${min} characters", - max: "${label} must be up to ${max} characters", - range: "${label} must be between ${min}-${max} characters" - }, - number: { - len: "${label} must be equal to ${len}", - min: "${label} must be minimum ${min}", - max: "${label} must be maximum ${max}", - range: "${label} must be between ${min}-${max}" - }, - array: { - len: "Must be ${len} ${label}", - min: "At least ${min} ${label}", - max: "At most ${max} ${label}", - range: "The amount of ${label} must be between ${min}-${max}" - }, - pattern: { - mismatch: "${label} does not match the pattern ${pattern}" - } - } - }, - Image: { - preview: "Preview" - }, - QRCode: { - expired: "QR code expired", - refresh: "Refresh", - scanned: "Scanned" - } -}; -var en_US_default6 = localeValues; - -// node_modules/ant-design-vue/es/locale/LocaleReceiver.js -var LocaleReceiver_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "LocaleReceiver", - props: { - componentName: String, - defaultLocale: { - type: [Object, Function] - }, - children: { - type: Function - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const localeData2 = inject("localeData", {}); - const locale4 = computed(() => { - const { - componentName = "global", - defaultLocale - } = props4; - const locale5 = defaultLocale || en_US_default6[componentName || "global"]; - const { - antLocale - } = localeData2; - const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}; - return _extends(_extends({}, typeof locale5 === "function" ? locale5() : locale5), localeFromContext || {}); - }); - const localeCode = computed(() => { - const { - antLocale - } = localeData2; - const localeCode2 = antLocale && antLocale.locale; - if (antLocale && antLocale.exist && !localeCode2) { - return en_US_default6.locale; - } - return localeCode2; - }); - return () => { - const children = props4.children || slots.default; - const { - antLocale - } = localeData2; - return children === null || children === void 0 ? void 0 : children(locale4.value, localeCode.value, antLocale); - }; - } -}); -function useLocaleReceiver(componentName, defaultLocale, propsLocale) { - const localeData2 = inject("localeData", {}); - const componentLocale = computed(() => { - const { - antLocale - } = localeData2; - const locale4 = unref(defaultLocale) || en_US_default6[componentName || "global"]; - const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}; - return _extends(_extends(_extends({}, typeof locale4 === "function" ? locale4() : locale4), localeFromContext || {}), unref(propsLocale) || {}); - }); - return [componentLocale]; -} - -// node_modules/ant-design-vue/es/locale-provider/LocaleReceiver.js -var LocaleReceiver_default2 = LocaleReceiver_default; - -// node_modules/@emotion/hash/dist/emotion-hash.esm.js -function murmur2(str) { - var h3 = 0; - var k2, i3 = 0, len = str.length; - for (; len >= 4; ++i3, len -= 4) { - k2 = str.charCodeAt(i3) & 255 | (str.charCodeAt(++i3) & 255) << 8 | (str.charCodeAt(++i3) & 255) << 16 | (str.charCodeAt(++i3) & 255) << 24; - k2 = /* Math.imul(k, m): */ - (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16); - k2 ^= /* k >>> r: */ - k2 >>> 24; - h3 = /* Math.imul(k, m): */ - (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */ - (h3 & 65535) * 1540483477 + ((h3 >>> 16) * 59797 << 16); - } - switch (len) { - case 3: - h3 ^= (str.charCodeAt(i3 + 2) & 255) << 16; - case 2: - h3 ^= (str.charCodeAt(i3 + 1) & 255) << 8; - case 1: - h3 ^= str.charCodeAt(i3) & 255; - h3 = /* Math.imul(h, m): */ - (h3 & 65535) * 1540483477 + ((h3 >>> 16) * 59797 << 16); - } - h3 ^= h3 >>> 13; - h3 = /* Math.imul(h, m): */ - (h3 & 65535) * 1540483477 + ((h3 >>> 16) * 59797 << 16); - return ((h3 ^ h3 >>> 15) >>> 0).toString(36); -} - -// node_modules/ant-design-vue/es/_util/cssinjs/Cache.js -var SPLIT = "%"; -var Entity = class { - constructor(instanceId) { - this.cache = /* @__PURE__ */ new Map(); - this.instanceId = instanceId; - } - get(keys2) { - return this.cache.get(Array.isArray(keys2) ? keys2.join(SPLIT) : keys2) || null; - } - update(keys2, valueFn) { - const path2 = Array.isArray(keys2) ? keys2.join(SPLIT) : keys2; - const prevValue = this.cache.get(path2); - const nextValue = valueFn(prevValue); - if (nextValue === null) { - this.cache.delete(path2); - } else { - this.cache.set(path2, nextValue); - } - } -}; -var Cache_default = Entity; - -// node_modules/ant-design-vue/es/_util/cssinjs/StyleContext.js -var ATTR_TOKEN = "data-token-hash"; -var ATTR_MARK = "data-css-hash"; -var ATTR_CACHE_PATH = "data-cache-path"; -var CSS_IN_JS_INSTANCE = "__cssinjs_instance__"; -function createCache() { - const cssinjsInstanceId = Math.random().toString(12).slice(2); - if (typeof document !== "undefined" && document.head && document.body) { - const styles = document.body.querySelectorAll(`style[${ATTR_MARK}]`) || []; - const { - firstChild - } = document.head; - Array.from(styles).forEach((style) => { - style[CSS_IN_JS_INSTANCE] = style[CSS_IN_JS_INSTANCE] || cssinjsInstanceId; - if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { - document.head.insertBefore(style, firstChild); - } - }); - const styleHash = {}; - Array.from(document.querySelectorAll(`style[${ATTR_MARK}]`)).forEach((style) => { - var _a2; - const hash2 = style.getAttribute(ATTR_MARK); - if (styleHash[hash2]) { - if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { - (_a2 = style.parentNode) === null || _a2 === void 0 ? void 0 : _a2.removeChild(style); - } - } else { - styleHash[hash2] = true; - } - }); - } - return new Cache_default(cssinjsInstanceId); -} -var StyleContextKey = Symbol("StyleContextKey"); -var getCache = () => { - var _a2, _b, _c; - const instance = getCurrentInstance(); - let cache; - if (instance && instance.appContext) { - const globalCache = (_c = (_b = (_a2 = instance.appContext) === null || _a2 === void 0 ? void 0 : _a2.config) === null || _b === void 0 ? void 0 : _b.globalProperties) === null || _c === void 0 ? void 0 : _c.__ANTDV_CSSINJS_CACHE__; - if (globalCache) { - cache = globalCache; - } else { - cache = createCache(); - if (instance.appContext.config.globalProperties) { - instance.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__ = cache; - } - } - } else { - cache = createCache(); - } - return cache; -}; -var defaultStyleContext = { - cache: createCache(), - defaultCache: true, - hashPriority: "low" -}; -var useStyleInject = () => { - const cache = getCache(); - return inject(StyleContextKey, shallowRef(_extends(_extends({}, defaultStyleContext), { - cache - }))); -}; -var useStyleProvider = (props4) => { - const parentContext = useStyleInject(); - const context2 = shallowRef(_extends(_extends({}, defaultStyleContext), { - cache: createCache() - })); - watch([() => unref(props4), parentContext], () => { - const mergedContext = _extends({}, parentContext.value); - const propsValue = unref(props4); - Object.keys(propsValue).forEach((key2) => { - const value = propsValue[key2]; - if (propsValue[key2] !== void 0) { - mergedContext[key2] = value; - } - }); - const { - cache - } = propsValue; - mergedContext.cache = mergedContext.cache || createCache(); - mergedContext.defaultCache = !cache && parentContext.value.defaultCache; - context2.value = mergedContext; - }, { - immediate: true - }); - provide(StyleContextKey, context2); - return context2; -}; -var styleProviderProps = () => ({ - autoClear: booleanType(), - /** @private Test only. Not work in production. */ - mock: stringType(), - /** - * Only set when you need ssr to extract style on you own. - * If not provided, it will auto create `; - } - const orderStyles = styleKeys.map((key2) => { - const cachePath = key2.slice(matchPrefix.length).replace(/%/g, "|"); - const [styleStr, tokenKey, styleId, effectStyle, clientOnly, order] = cache.cache.get(key2)[1]; - if (clientOnly) { - return null; - } - const sharedAttrs = { - "data-vc-order": "prependQueue", - "data-vc-priority": `${order}` - }; - let keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs); - cachePathMap2[cachePath] = styleId; - if (effectStyle) { - Object.keys(effectStyle).forEach((effectKey) => { - if (!effectStyles[effectKey]) { - effectStyles[effectKey] = true; - keyStyleText += toStyleStr(normalizeStyle(effectStyle[effectKey]), tokenKey, `_effect-${effectKey}`, sharedAttrs); - } - }); - } - const ret = [order, keyStyleText]; - return ret; - }).filter((o2) => o2); - orderStyles.sort((o1, o2) => o1[0] - o2[0]).forEach((_ref2) => { - let [, style] = _ref2; - styleText += style; - }); - styleText += toStyleStr(`.${ATTR_CACHE_MAP}{content:"${serialize2(cachePathMap2)}";}`, void 0, void 0, { - [ATTR_CACHE_MAP]: ATTR_CACHE_MAP - }); - return styleText; -} - -// node_modules/ant-design-vue/es/_util/cssinjs/Keyframes.js -var Keyframe = class { - constructor(name, style) { - this._keyframe = true; - this.name = name; - this.style = style; - } - getName() { - let hashId = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - return hashId ? `${hashId}-${this.name}` : this.name; - } -}; -var Keyframes_default = Keyframe; - -// node_modules/ant-design-vue/es/_util/cssinjs/transformers/legacyLogicalProperties.js -function splitValues(value) { - if (typeof value === "number") { - return [value]; - } - const splitStyle = String(value).split(/\s+/); - let temp = ""; - let brackets = 0; - return splitStyle.reduce((list, item) => { - if (item.includes("(")) { - temp += item; - brackets += item.split("(").length - 1; - } else if (item.includes(")")) { - temp += ` ${item}`; - brackets -= item.split(")").length - 1; - if (brackets === 0) { - list.push(temp); - temp = ""; - } - } else if (brackets > 0) { - temp += ` ${item}`; - } else { - list.push(item); - } - return list; - }, []); -} -function noSplit(list) { - list.notSplit = true; - return list; -} -var keyMap = { - // Inset - inset: ["top", "right", "bottom", "left"], - insetBlock: ["top", "bottom"], - insetBlockStart: ["top"], - insetBlockEnd: ["bottom"], - insetInline: ["left", "right"], - insetInlineStart: ["left"], - insetInlineEnd: ["right"], - // Margin - marginBlock: ["marginTop", "marginBottom"], - marginBlockStart: ["marginTop"], - marginBlockEnd: ["marginBottom"], - marginInline: ["marginLeft", "marginRight"], - marginInlineStart: ["marginLeft"], - marginInlineEnd: ["marginRight"], - // Padding - paddingBlock: ["paddingTop", "paddingBottom"], - paddingBlockStart: ["paddingTop"], - paddingBlockEnd: ["paddingBottom"], - paddingInline: ["paddingLeft", "paddingRight"], - paddingInlineStart: ["paddingLeft"], - paddingInlineEnd: ["paddingRight"], - // Border - borderBlock: noSplit(["borderTop", "borderBottom"]), - borderBlockStart: noSplit(["borderTop"]), - borderBlockEnd: noSplit(["borderBottom"]), - borderInline: noSplit(["borderLeft", "borderRight"]), - borderInlineStart: noSplit(["borderLeft"]), - borderInlineEnd: noSplit(["borderRight"]), - // Border width - borderBlockWidth: ["borderTopWidth", "borderBottomWidth"], - borderBlockStartWidth: ["borderTopWidth"], - borderBlockEndWidth: ["borderBottomWidth"], - borderInlineWidth: ["borderLeftWidth", "borderRightWidth"], - borderInlineStartWidth: ["borderLeftWidth"], - borderInlineEndWidth: ["borderRightWidth"], - // Border style - borderBlockStyle: ["borderTopStyle", "borderBottomStyle"], - borderBlockStartStyle: ["borderTopStyle"], - borderBlockEndStyle: ["borderBottomStyle"], - borderInlineStyle: ["borderLeftStyle", "borderRightStyle"], - borderInlineStartStyle: ["borderLeftStyle"], - borderInlineEndStyle: ["borderRightStyle"], - // Border color - borderBlockColor: ["borderTopColor", "borderBottomColor"], - borderBlockStartColor: ["borderTopColor"], - borderBlockEndColor: ["borderBottomColor"], - borderInlineColor: ["borderLeftColor", "borderRightColor"], - borderInlineStartColor: ["borderLeftColor"], - borderInlineEndColor: ["borderRightColor"], - // Border radius - borderStartStartRadius: ["borderTopLeftRadius"], - borderStartEndRadius: ["borderTopRightRadius"], - borderEndStartRadius: ["borderBottomLeftRadius"], - borderEndEndRadius: ["borderBottomRightRadius"] -}; -function skipCheck(value) { - return { - _skip_check_: true, - value - }; -} -var transform = { - visit: (cssObj) => { - const clone3 = {}; - Object.keys(cssObj).forEach((key2) => { - const value = cssObj[key2]; - const matchValue = keyMap[key2]; - if (matchValue && (typeof value === "number" || typeof value === "string")) { - const values2 = splitValues(value); - if (matchValue.length && matchValue.notSplit) { - matchValue.forEach((matchKey) => { - clone3[matchKey] = skipCheck(value); - }); - } else if (matchValue.length === 1) { - clone3[matchValue[0]] = skipCheck(value); - } else if (matchValue.length === 2) { - matchValue.forEach((matchKey, index3) => { - var _a2; - clone3[matchKey] = skipCheck((_a2 = values2[index3]) !== null && _a2 !== void 0 ? _a2 : values2[0]); - }); - } else if (matchValue.length === 4) { - matchValue.forEach((matchKey, index3) => { - var _a2, _b; - clone3[matchKey] = skipCheck((_b = (_a2 = values2[index3]) !== null && _a2 !== void 0 ? _a2 : values2[index3 - 2]) !== null && _b !== void 0 ? _b : values2[0]); - }); - } else { - clone3[key2] = value; - } - } else { - clone3[key2] = value; - } - }); - return clone3; - } -}; -var legacyLogicalProperties_default = transform; - -// node_modules/ant-design-vue/es/_util/cssinjs/transformers/px2rem.js -var pxRegex = /url\([^)]+\)|var\([^)]+\)|(\d*\.?\d+)px/g; -function toFixed(number4, precision) { - const multiplier = Math.pow(10, precision + 1), wholeNumber = Math.floor(number4 * multiplier); - return Math.round(wholeNumber / 10) * 10 / multiplier; -} -var transform2 = function() { - let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - const { - rootValue = 16, - precision = 5, - mediaQuery = false - } = options; - const pxReplace = (m2, $1) => { - if (!$1) return m2; - const pixels = parseFloat($1); - if (pixels <= 1) return m2; - const fixedVal = toFixed(pixels / rootValue, precision); - return `${fixedVal}rem`; - }; - const visit = (cssObj) => { - const clone3 = _extends({}, cssObj); - Object.entries(cssObj).forEach((_ref) => { - let [key2, value] = _ref; - if (typeof value === "string" && value.includes("px")) { - const newValue = value.replace(pxRegex, pxReplace); - clone3[key2] = newValue; - } - if (!unitlessKeys[key2] && typeof value === "number" && value !== 0) { - clone3[key2] = `${value}px`.replace(pxRegex, pxReplace); - } - const mergedKey = key2.trim(); - if (mergedKey.startsWith("@") && mergedKey.includes("px") && mediaQuery) { - const newKey = key2.replace(pxRegex, pxReplace); - clone3[newKey] = clone3[key2]; - delete clone3[key2]; - } - }); - return clone3; - }; - return { - visit - }; -}; -var px2rem_default = transform2; - -// node_modules/ant-design-vue/es/_util/cssinjs/index.js -var cssinjs = { - Theme, - createTheme, - useStyleRegister, - useCacheToken, - createCache, - useStyleInject, - useStyleProvider, - Keyframes: Keyframes_default, - extractStyle, - // Transformer - legacyLogicalPropertiesTransformer: legacyLogicalProperties_default, - px2remTransformer: px2rem_default, - // Linters - logicalPropertiesLinter: logicalPropertiesLinter_default, - legacyNotSelectorLinter: legacyNotSelectorLinter_default, - parentSelectorLinter: parentSelectorLinter_default, - // cssinjs - StyleProvider -}; -var _experimental = { - supportModernCSS: () => supportWhere() && supportLogicProps() -}; -var cssinjs_default = cssinjs; - -// node_modules/ant-design-vue/es/version/version.js -var version_default = "4.1.2"; - -// node_modules/ant-design-vue/es/version/index.js -var version_default2 = version_default; - -// node_modules/ant-design-vue/es/theme/interface/presetColors.js -var PresetColors = ["blue", "purple", "cyan", "green", "magenta", "pink", "red", "orange", "yellow", "volcano", "geekblue", "lime", "gold"]; - -// node_modules/ant-design-vue/es/theme/themes/shared/genControlHeight.js -var genControlHeight = (token2) => { - const { - controlHeight - } = token2; - return { - controlHeightSM: controlHeight * 0.75, - controlHeightXS: controlHeight * 0.5, - controlHeightLG: controlHeight * 1.25 - }; -}; -var genControlHeight_default = genControlHeight; - -// node_modules/ant-design-vue/es/theme/themes/shared/genSizeMapToken.js -function genSizeMapToken(token2) { - const { - sizeUnit, - sizeStep - } = token2; - return { - sizeXXL: sizeUnit * (sizeStep + 8), - sizeXL: sizeUnit * (sizeStep + 4), - sizeLG: sizeUnit * (sizeStep + 2), - sizeMD: sizeUnit * (sizeStep + 1), - sizeMS: sizeUnit * sizeStep, - size: sizeUnit * sizeStep, - sizeSM: sizeUnit * (sizeStep - 1), - sizeXS: sizeUnit * (sizeStep - 2), - sizeXXS: sizeUnit * (sizeStep - 3) - // 4 - }; -} - -// node_modules/ant-design-vue/es/theme/themes/seed.js -var defaultPresetColors = { - blue: "#1677ff", - purple: "#722ED1", - cyan: "#13C2C2", - green: "#52C41A", - magenta: "#EB2F96", - pink: "#eb2f96", - red: "#F5222D", - orange: "#FA8C16", - yellow: "#FADB14", - volcano: "#FA541C", - geekblue: "#2F54EB", - gold: "#FAAD14", - lime: "#A0D911" -}; -var seedToken = _extends(_extends({}, defaultPresetColors), { - // Color - colorPrimary: "#1677ff", - colorSuccess: "#52c41a", - colorWarning: "#faad14", - colorError: "#ff4d4f", - colorInfo: "#1677ff", - colorTextBase: "", - colorBgBase: "", - // Font - fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, -'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', -'Noto Color Emoji'`, - fontSize: 14, - // Line - lineWidth: 1, - lineType: "solid", - // Motion - motionUnit: 0.1, - motionBase: 0, - motionEaseOutCirc: "cubic-bezier(0.08, 0.82, 0.17, 1)", - motionEaseInOutCirc: "cubic-bezier(0.78, 0.14, 0.15, 0.86)", - motionEaseOut: "cubic-bezier(0.215, 0.61, 0.355, 1)", - motionEaseInOut: "cubic-bezier(0.645, 0.045, 0.355, 1)", - motionEaseOutBack: "cubic-bezier(0.12, 0.4, 0.29, 1.46)", - motionEaseInBack: "cubic-bezier(0.71, -0.46, 0.88, 0.6)", - motionEaseInQuint: "cubic-bezier(0.755, 0.05, 0.855, 0.06)", - motionEaseOutQuint: "cubic-bezier(0.23, 1, 0.32, 1)", - // Radius - borderRadius: 6, - // Size - sizeUnit: 4, - sizeStep: 4, - sizePopupArrow: 16, - // Control Base - controlHeight: 32, - // zIndex - zIndexBase: 0, - zIndexPopupBase: 1e3, - // Image - opacityImage: 1, - // Wireframe - wireframe: false -}); -var seed_default = seedToken; - -// node_modules/ant-design-vue/es/theme/themes/shared/genColorMapToken.js -function genColorMapToken(seed3, _ref) { - let { - generateColorPalettes: generateColorPalettes3, - generateNeutralColorPalettes: generateNeutralColorPalettes3 - } = _ref; - const { - colorSuccess: colorSuccessBase, - colorWarning: colorWarningBase, - colorError: colorErrorBase, - colorInfo: colorInfoBase, - colorPrimary: colorPrimaryBase, - colorBgBase, - colorTextBase - } = seed3; - const primaryColors = generateColorPalettes3(colorPrimaryBase); - const successColors = generateColorPalettes3(colorSuccessBase); - const warningColors = generateColorPalettes3(colorWarningBase); - const errorColors = generateColorPalettes3(colorErrorBase); - const infoColors = generateColorPalettes3(colorInfoBase); - const neutralColors = generateNeutralColorPalettes3(colorBgBase, colorTextBase); - return _extends(_extends({}, neutralColors), { - colorPrimaryBg: primaryColors[1], - colorPrimaryBgHover: primaryColors[2], - colorPrimaryBorder: primaryColors[3], - colorPrimaryBorderHover: primaryColors[4], - colorPrimaryHover: primaryColors[5], - colorPrimary: primaryColors[6], - colorPrimaryActive: primaryColors[7], - colorPrimaryTextHover: primaryColors[8], - colorPrimaryText: primaryColors[9], - colorPrimaryTextActive: primaryColors[10], - colorSuccessBg: successColors[1], - colorSuccessBgHover: successColors[2], - colorSuccessBorder: successColors[3], - colorSuccessBorderHover: successColors[4], - colorSuccessHover: successColors[4], - colorSuccess: successColors[6], - colorSuccessActive: successColors[7], - colorSuccessTextHover: successColors[8], - colorSuccessText: successColors[9], - colorSuccessTextActive: successColors[10], - colorErrorBg: errorColors[1], - colorErrorBgHover: errorColors[2], - colorErrorBorder: errorColors[3], - colorErrorBorderHover: errorColors[4], - colorErrorHover: errorColors[5], - colorError: errorColors[6], - colorErrorActive: errorColors[7], - colorErrorTextHover: errorColors[8], - colorErrorText: errorColors[9], - colorErrorTextActive: errorColors[10], - colorWarningBg: warningColors[1], - colorWarningBgHover: warningColors[2], - colorWarningBorder: warningColors[3], - colorWarningBorderHover: warningColors[4], - colorWarningHover: warningColors[4], - colorWarning: warningColors[6], - colorWarningActive: warningColors[7], - colorWarningTextHover: warningColors[8], - colorWarningText: warningColors[9], - colorWarningTextActive: warningColors[10], - colorInfoBg: infoColors[1], - colorInfoBgHover: infoColors[2], - colorInfoBorder: infoColors[3], - colorInfoBorderHover: infoColors[4], - colorInfoHover: infoColors[4], - colorInfo: infoColors[6], - colorInfoActive: infoColors[7], - colorInfoTextHover: infoColors[8], - colorInfoText: infoColors[9], - colorInfoTextActive: infoColors[10], - colorBgMask: new TinyColor("#000").setAlpha(0.45).toRgbString(), - colorWhite: "#fff" - }); -} - -// node_modules/ant-design-vue/es/theme/themes/shared/genRadius.js -var genRadius = (radiusBase) => { - let radiusLG = radiusBase; - let radiusSM = radiusBase; - let radiusXS = radiusBase; - let radiusOuter = radiusBase; - if (radiusBase < 6 && radiusBase >= 5) { - radiusLG = radiusBase + 1; - } else if (radiusBase < 16 && radiusBase >= 6) { - radiusLG = radiusBase + 2; - } else if (radiusBase >= 16) { - radiusLG = 16; - } - if (radiusBase < 7 && radiusBase >= 5) { - radiusSM = 4; - } else if (radiusBase < 8 && radiusBase >= 7) { - radiusSM = 5; - } else if (radiusBase < 14 && radiusBase >= 8) { - radiusSM = 6; - } else if (radiusBase < 16 && radiusBase >= 14) { - radiusSM = 7; - } else if (radiusBase >= 16) { - radiusSM = 8; - } - if (radiusBase < 6 && radiusBase >= 2) { - radiusXS = 1; - } else if (radiusBase >= 6) { - radiusXS = 2; - } - if (radiusBase > 4 && radiusBase < 8) { - radiusOuter = 4; - } else if (radiusBase >= 8) { - radiusOuter = 6; - } - return { - borderRadius: radiusBase > 16 ? 16 : radiusBase, - borderRadiusXS: radiusXS, - borderRadiusSM: radiusSM, - borderRadiusLG: radiusLG, - borderRadiusOuter: radiusOuter - }; -}; -var genRadius_default = genRadius; - -// node_modules/ant-design-vue/es/theme/themes/shared/genCommonMapToken.js -function genCommonMapToken(token2) { - const { - motionUnit, - motionBase, - borderRadius, - lineWidth - } = token2; - return _extends({ - // motion - motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`, - motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`, - motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`, - // line - lineWidthBold: lineWidth + 1 - }, genRadius_default(borderRadius)); -} - -// node_modules/ant-design-vue/es/theme/themes/default/colorAlgorithm.js -var getAlphaColor = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString(); -var getSolidColor = (baseColor, brightness) => { - const instance = new TinyColor(baseColor); - return instance.darken(brightness).toHexString(); -}; - -// node_modules/ant-design-vue/es/theme/themes/default/colors.js -var generateColorPalettes = (baseColor) => { - const colors = generate(baseColor); - return { - 1: colors[0], - 2: colors[1], - 3: colors[2], - 4: colors[3], - 5: colors[4], - 6: colors[5], - 7: colors[6], - 8: colors[4], - 9: colors[5], - 10: colors[6] - // 8: colors[7], - // 9: colors[8], - // 10: colors[9], - }; -}; -var generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => { - const colorBgBase = bgBaseColor || "#fff"; - const colorTextBase = textBaseColor || "#000"; - return { - colorBgBase, - colorTextBase, - colorText: getAlphaColor(colorTextBase, 0.88), - colorTextSecondary: getAlphaColor(colorTextBase, 0.65), - colorTextTertiary: getAlphaColor(colorTextBase, 0.45), - colorTextQuaternary: getAlphaColor(colorTextBase, 0.25), - colorFill: getAlphaColor(colorTextBase, 0.15), - colorFillSecondary: getAlphaColor(colorTextBase, 0.06), - colorFillTertiary: getAlphaColor(colorTextBase, 0.04), - colorFillQuaternary: getAlphaColor(colorTextBase, 0.02), - colorBgLayout: getSolidColor(colorBgBase, 4), - colorBgContainer: getSolidColor(colorBgBase, 0), - colorBgElevated: getSolidColor(colorBgBase, 0), - colorBgSpotlight: getAlphaColor(colorTextBase, 0.85), - colorBorder: getSolidColor(colorBgBase, 15), - colorBorderSecondary: getSolidColor(colorBgBase, 6) - }; -}; - -// node_modules/ant-design-vue/es/theme/themes/shared/genFontSizes.js -function getFontSizes(base) { - const fontSizes = new Array(10).fill(null).map((_2, index3) => { - const i3 = index3 - 1; - const baseSize = base * Math.pow(2.71828, i3 / 5); - const intSize = index3 > 1 ? Math.floor(baseSize) : Math.ceil(baseSize); - return Math.floor(intSize / 2) * 2; - }); - fontSizes[1] = base; - return fontSizes.map((size2) => { - const height = size2 + 8; - return { - size: size2, - lineHeight: height / size2 - }; - }); -} - -// node_modules/ant-design-vue/es/theme/themes/shared/genFontMapToken.js -var genFontMapToken = (fontSize) => { - const fontSizePairs = getFontSizes(fontSize); - const fontSizes = fontSizePairs.map((pair) => pair.size); - const lineHeights = fontSizePairs.map((pair) => pair.lineHeight); - return { - fontSizeSM: fontSizes[0], - fontSize: fontSizes[1], - fontSizeLG: fontSizes[2], - fontSizeXL: fontSizes[3], - fontSizeHeading1: fontSizes[6], - fontSizeHeading2: fontSizes[5], - fontSizeHeading3: fontSizes[4], - fontSizeHeading4: fontSizes[3], - fontSizeHeading5: fontSizes[2], - lineHeight: lineHeights[1], - lineHeightLG: lineHeights[2], - lineHeightSM: lineHeights[0], - lineHeightHeading1: lineHeights[6], - lineHeightHeading2: lineHeights[5], - lineHeightHeading3: lineHeights[4], - lineHeightHeading4: lineHeights[3], - lineHeightHeading5: lineHeights[2] - }; -}; -var genFontMapToken_default = genFontMapToken; - -// node_modules/ant-design-vue/es/theme/themes/default/index.js -function derivative(token2) { - const colorPalettes = Object.keys(defaultPresetColors).map((colorKey) => { - const colors = generate(token2[colorKey]); - return new Array(10).fill(1).reduce((prev2, _2, i3) => { - prev2[`${colorKey}-${i3 + 1}`] = colors[i3]; - return prev2; - }, {}); - }).reduce((prev2, cur) => { - prev2 = _extends(_extends({}, prev2), cur); - return prev2; - }, {}); - return _extends(_extends(_extends(_extends(_extends(_extends(_extends({}, token2), colorPalettes), genColorMapToken(token2, { - generateColorPalettes, - generateNeutralColorPalettes - })), genFontMapToken_default(token2.fontSize)), genSizeMapToken(token2)), genControlHeight_default(token2)), genCommonMapToken(token2)); -} - -// node_modules/ant-design-vue/es/theme/util/getAlphaColor.js -function isStableColor(color) { - return color >= 0 && color <= 255; -} -function getAlphaColor2(frontColor, backgroundColor) { - const { - r: fR, - g: fG, - b: fB, - a: originAlpha - } = new TinyColor(frontColor).toRgb(); - if (originAlpha < 1) { - return frontColor; - } - const { - r: bR, - g: bG, - b: bB - } = new TinyColor(backgroundColor).toRgb(); - for (let fA = 0.01; fA <= 1; fA += 0.01) { - const r3 = Math.round((fR - bR * (1 - fA)) / fA); - const g2 = Math.round((fG - bG * (1 - fA)) / fA); - const b2 = Math.round((fB - bB * (1 - fA)) / fA); - if (isStableColor(r3) && isStableColor(g2) && isStableColor(b2)) { - return new TinyColor({ - r: r3, - g: g2, - b: b2, - a: Math.round(fA * 100) / 100 - }).toRgbString(); - } - } - return new TinyColor({ - r: fR, - g: fG, - b: fB, - a: 1 - }).toRgbString(); -} -var getAlphaColor_default = getAlphaColor2; - -// node_modules/ant-design-vue/es/theme/util/alias.js -var __rest = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function formatToken(derivativeToken) { - const { - override - } = derivativeToken, restToken = __rest(derivativeToken, ["override"]); - const overrideTokens = _extends({}, override); - Object.keys(seed_default).forEach((token2) => { - delete overrideTokens[token2]; - }); - const mergedToken = _extends(_extends({}, restToken), overrideTokens); - const screenXS = 480; - const screenSM = 576; - const screenMD = 768; - const screenLG = 992; - const screenXL = 1200; - const screenXXL = 1600; - const screenXXXL = 2e3; - const aliasToken = _extends(_extends(_extends({}, mergedToken), { - colorLink: mergedToken.colorInfoText, - colorLinkHover: mergedToken.colorInfoHover, - colorLinkActive: mergedToken.colorInfoActive, - // ============== Background ============== // - colorFillContent: mergedToken.colorFillSecondary, - colorFillContentHover: mergedToken.colorFill, - colorFillAlter: mergedToken.colorFillQuaternary, - colorBgContainerDisabled: mergedToken.colorFillTertiary, - // ============== Split ============== // - colorBorderBg: mergedToken.colorBgContainer, - colorSplit: getAlphaColor_default(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer), - // ============== Text ============== // - colorTextPlaceholder: mergedToken.colorTextQuaternary, - colorTextDisabled: mergedToken.colorTextQuaternary, - colorTextHeading: mergedToken.colorText, - colorTextLabel: mergedToken.colorTextSecondary, - colorTextDescription: mergedToken.colorTextTertiary, - colorTextLightSolid: mergedToken.colorWhite, - colorHighlight: mergedToken.colorError, - colorBgTextHover: mergedToken.colorFillSecondary, - colorBgTextActive: mergedToken.colorFill, - colorIcon: mergedToken.colorTextTertiary, - colorIconHover: mergedToken.colorText, - colorErrorOutline: getAlphaColor_default(mergedToken.colorErrorBg, mergedToken.colorBgContainer), - colorWarningOutline: getAlphaColor_default(mergedToken.colorWarningBg, mergedToken.colorBgContainer), - // Font - fontSizeIcon: mergedToken.fontSizeSM, - // Control - lineWidth: mergedToken.lineWidth, - controlOutlineWidth: mergedToken.lineWidth * 2, - // Checkbox size and expand icon size - controlInteractiveSize: mergedToken.controlHeight / 2, - controlItemBgHover: mergedToken.colorFillTertiary, - controlItemBgActive: mergedToken.colorPrimaryBg, - controlItemBgActiveHover: mergedToken.colorPrimaryBgHover, - controlItemBgActiveDisabled: mergedToken.colorFill, - controlTmpOutline: mergedToken.colorFillQuaternary, - controlOutline: getAlphaColor_default(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer), - lineType: mergedToken.lineType, - borderRadius: mergedToken.borderRadius, - borderRadiusXS: mergedToken.borderRadiusXS, - borderRadiusSM: mergedToken.borderRadiusSM, - borderRadiusLG: mergedToken.borderRadiusLG, - fontWeightStrong: 600, - opacityLoading: 0.65, - linkDecoration: "none", - linkHoverDecoration: "none", - linkFocusDecoration: "none", - controlPaddingHorizontal: 12, - controlPaddingHorizontalSM: 8, - paddingXXS: mergedToken.sizeXXS, - paddingXS: mergedToken.sizeXS, - paddingSM: mergedToken.sizeSM, - padding: mergedToken.size, - paddingMD: mergedToken.sizeMD, - paddingLG: mergedToken.sizeLG, - paddingXL: mergedToken.sizeXL, - paddingContentHorizontalLG: mergedToken.sizeLG, - paddingContentVerticalLG: mergedToken.sizeMS, - paddingContentHorizontal: mergedToken.sizeMS, - paddingContentVertical: mergedToken.sizeSM, - paddingContentHorizontalSM: mergedToken.size, - paddingContentVerticalSM: mergedToken.sizeXS, - marginXXS: mergedToken.sizeXXS, - marginXS: mergedToken.sizeXS, - marginSM: mergedToken.sizeSM, - margin: mergedToken.size, - marginMD: mergedToken.sizeMD, - marginLG: mergedToken.sizeLG, - marginXL: mergedToken.sizeXL, - marginXXL: mergedToken.sizeXXL, - boxShadow: ` - 0 1px 2px 0 rgba(0, 0, 0, 0.03), - 0 1px 6px -1px rgba(0, 0, 0, 0.02), - 0 2px 4px 0 rgba(0, 0, 0, 0.02) - `, - boxShadowSecondary: ` - 0 6px 16px 0 rgba(0, 0, 0, 0.08), - 0 3px 6px -4px rgba(0, 0, 0, 0.12), - 0 9px 28px 8px rgba(0, 0, 0, 0.05) - `, - boxShadowTertiary: ` - 0 1px 2px 0 rgba(0, 0, 0, 0.03), - 0 1px 6px -1px rgba(0, 0, 0, 0.02), - 0 2px 4px 0 rgba(0, 0, 0, 0.02) - `, - screenXS, - screenXSMin: screenXS, - screenXSMax: screenSM - 1, - screenSM, - screenSMMin: screenSM, - screenSMMax: screenMD - 1, - screenMD, - screenMDMin: screenMD, - screenMDMax: screenLG - 1, - screenLG, - screenLGMin: screenLG, - screenLGMax: screenXL - 1, - screenXL, - screenXLMin: screenXL, - screenXLMax: screenXXL - 1, - screenXXL, - screenXXLMin: screenXXL, - screenXXLMax: screenXXXL - 1, - screenXXXL, - screenXXXLMin: screenXXXL, - // FIXME: component box-shadow, should be removed - boxShadowPopoverArrow: "3px 3px 7px rgba(0, 0, 0, 0.1)", - boxShadowCard: ` - 0 1px 2px -2px ${new TinyColor("rgba(0, 0, 0, 0.16)").toRgbString()}, - 0 3px 6px 0 ${new TinyColor("rgba(0, 0, 0, 0.12)").toRgbString()}, - 0 5px 12px 4px ${new TinyColor("rgba(0, 0, 0, 0.09)").toRgbString()} - `, - boxShadowDrawerRight: ` - -6px 0 16px 0 rgba(0, 0, 0, 0.08), - -3px 0 6px -4px rgba(0, 0, 0, 0.12), - -9px 0 28px 8px rgba(0, 0, 0, 0.05) - `, - boxShadowDrawerLeft: ` - 6px 0 16px 0 rgba(0, 0, 0, 0.08), - 3px 0 6px -4px rgba(0, 0, 0, 0.12), - 9px 0 28px 8px rgba(0, 0, 0, 0.05) - `, - boxShadowDrawerUp: ` - 0 6px 16px 0 rgba(0, 0, 0, 0.08), - 0 3px 6px -4px rgba(0, 0, 0, 0.12), - 0 9px 28px 8px rgba(0, 0, 0, 0.05) - `, - boxShadowDrawerDown: ` - 0 -6px 16px 0 rgba(0, 0, 0, 0.08), - 0 -3px 6px -4px rgba(0, 0, 0, 0.12), - 0 -9px 28px 8px rgba(0, 0, 0, 0.05) - `, - boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)", - boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)", - boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)", - boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)" - }), overrideTokens); - return aliasToken; -} - -// node_modules/ant-design-vue/es/style/operationUnit.js -var operationUnit = (token2) => ({ - // FIXME: This use link but is a operation unit. Seems should be a colorPrimary. - // And Typography use this to generate link style which should not do this. - color: token2.colorLink, - textDecoration: "none", - outline: "none", - cursor: "pointer", - transition: `color ${token2.motionDurationSlow}`, - "&:focus, &:hover": { - color: token2.colorLinkHover - }, - "&:active": { - color: token2.colorLinkActive - } -}); - -// node_modules/ant-design-vue/es/style/roundedArrow.js -var roundedArrow = (width, innerRadius, outerRadius, bgColor, boxShadow) => { - const unitWidth = width / 2; - const ax = 0; - const ay = unitWidth; - const bx = outerRadius * 1 / Math.sqrt(2); - const by = unitWidth - outerRadius * (1 - 1 / Math.sqrt(2)); - const cx = unitWidth - innerRadius * (1 / Math.sqrt(2)); - const cy = outerRadius * (Math.sqrt(2) - 1) + innerRadius * (1 / Math.sqrt(2)); - const dx = 2 * unitWidth - cx; - const dy = cy; - const ex = 2 * unitWidth - bx; - const ey = by; - const fx = 2 * unitWidth - ax; - const fy = ay; - const shadowWidth = unitWidth * Math.sqrt(2) + outerRadius * (Math.sqrt(2) - 2); - const polygonOffset = outerRadius * (Math.sqrt(2) - 1); - return { - pointerEvents: "none", - width, - height: width, - overflow: "hidden", - "&::after": { - content: '""', - position: "absolute", - width: shadowWidth, - height: shadowWidth, - bottom: 0, - insetInline: 0, - margin: "auto", - borderRadius: { - _skip_check_: true, - value: `0 0 ${innerRadius}px 0` - }, - transform: "translateY(50%) rotate(-135deg)", - boxShadow, - zIndex: 0, - background: "transparent" - }, - "&::before": { - position: "absolute", - bottom: 0, - insetInlineStart: 0, - width, - height: width / 2, - background: bgColor, - clipPath: { - _multi_value_: true, - value: [`polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${2 * unitWidth - polygonOffset}px 100%, ${polygonOffset}px 100%)`, `path('M ${ax} ${ay} A ${outerRadius} ${outerRadius} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${innerRadius} ${innerRadius} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${outerRadius} ${outerRadius} 0 0 0 ${fx} ${fy} Z')`] - }, - content: '""' - } - }; -}; - -// node_modules/ant-design-vue/es/style/presetColor.js -function genPresetColor(token2, genCss) { - return PresetColors.reduce((prev2, colorKey) => { - const lightColor = token2[`${colorKey}-1`]; - const lightBorderColor = token2[`${colorKey}-3`]; - const darkColor = token2[`${colorKey}-6`]; - const textColor = token2[`${colorKey}-7`]; - return _extends(_extends({}, prev2), genCss(colorKey, { - lightColor, - lightBorderColor, - darkColor, - textColor - })); - }, {}); -} - -// node_modules/ant-design-vue/es/style/index.js -var textEllipsis = { - overflow: "hidden", - whiteSpace: "nowrap", - textOverflow: "ellipsis" -}; -var resetComponent = (token2) => ({ - boxSizing: "border-box", - margin: 0, - padding: 0, - color: token2.colorText, - fontSize: token2.fontSize, - // font-variant: @font-variant-base; - lineHeight: token2.lineHeight, - listStyle: "none", - // font-feature-settings: @font-feature-settings-base; - fontFamily: token2.fontFamily -}); -var resetIcon = () => ({ - display: "inline-flex", - alignItems: "center", - color: "inherit", - fontStyle: "normal", - lineHeight: 0, - textAlign: "center", - textTransform: "none", - // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 - verticalAlign: "-0.125em", - textRendering: "optimizeLegibility", - "-webkit-font-smoothing": "antialiased", - "-moz-osx-font-smoothing": "grayscale", - "> *": { - lineHeight: 1 - }, - svg: { - display: "inline-block" - } -}); -var clearFix = () => ({ - // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229 - "&::before": { - display: "table", - content: '""' - }, - "&::after": { - // https://github.com/ant-design/ant-design/issues/21864 - display: "table", - clear: "both", - content: '""' - } -}); -var genLinkStyle = (token2) => ({ - a: { - color: token2.colorLink, - textDecoration: token2.linkDecoration, - backgroundColor: "transparent", - outline: "none", - cursor: "pointer", - transition: `color ${token2.motionDurationSlow}`, - "-webkit-text-decoration-skip": "objects", - "&:hover": { - color: token2.colorLinkHover - }, - "&:active": { - color: token2.colorLinkActive - }, - [`&:active, - &:hover`]: { - textDecoration: token2.linkHoverDecoration, - outline: 0 - }, - // https://github.com/ant-design/ant-design/issues/22503 - "&:focus": { - textDecoration: token2.linkFocusDecoration, - outline: 0 - }, - "&[disabled]": { - color: token2.colorTextDisabled, - cursor: "not-allowed" - } - } -}); -var genCommonStyle = (token2, componentPrefixCls) => { - const { - fontFamily, - fontSize - } = token2; - const rootPrefixSelector = `[class^="${componentPrefixCls}"], [class*=" ${componentPrefixCls}"]`; - return { - [rootPrefixSelector]: { - fontFamily, - fontSize, - boxSizing: "border-box", - "&::before, &::after": { - boxSizing: "border-box" - }, - [rootPrefixSelector]: { - boxSizing: "border-box", - "&::before, &::after": { - boxSizing: "border-box" - } - } - } - }; -}; -var genFocusOutline = (token2) => ({ - outline: `${token2.lineWidthBold}px solid ${token2.colorPrimaryBorder}`, - outlineOffset: 1, - transition: "outline-offset 0s, outline 0s" -}); -var genFocusStyle = (token2) => ({ - "&:focus-visible": _extends({}, genFocusOutline(token2)) -}); - -// node_modules/ant-design-vue/es/theme/util/genComponentStyleHook.js -function genComponentStyleHook(component, styleFn, getDefaultToken) { - return (_prefixCls) => { - const prefixCls = computed(() => _prefixCls === null || _prefixCls === void 0 ? void 0 : _prefixCls.value); - const [theme, token2, hashId] = useToken(); - const { - getPrefixCls, - iconPrefixCls - } = useConfigContextInject(); - const rootPrefixCls = computed(() => getPrefixCls()); - const sharedInfo = computed(() => { - return { - theme: theme.value, - token: token2.value, - hashId: hashId.value, - path: ["Shared", rootPrefixCls.value] - }; - }); - useStyleRegister(sharedInfo, () => [{ - // Link - "&": genLinkStyle(token2.value) - }]); - const componentInfo = computed(() => { - return { - theme: theme.value, - token: token2.value, - hashId: hashId.value, - path: [component, prefixCls.value, iconPrefixCls.value] - }; - }); - return [useStyleRegister(componentInfo, () => { - const { - token: proxyToken, - flush - } = statisticToken(token2.value); - const defaultComponentToken = typeof getDefaultToken === "function" ? getDefaultToken(proxyToken) : getDefaultToken; - const mergedComponentToken = _extends(_extends({}, defaultComponentToken), token2.value[component]); - const componentCls = `.${prefixCls.value}`; - const mergedToken = merge(proxyToken, { - componentCls, - prefixCls: prefixCls.value, - iconCls: `.${iconPrefixCls.value}`, - antCls: `.${rootPrefixCls.value}` - }, mergedComponentToken); - const styleInterpolation = styleFn(mergedToken, { - hashId: hashId.value, - prefixCls: prefixCls.value, - rootPrefixCls: rootPrefixCls.value, - iconPrefixCls: iconPrefixCls.value, - overrideComponentToken: token2.value[component] - }); - flush(component, mergedComponentToken); - return [genCommonStyle(token2.value, prefixCls.value), styleInterpolation]; - }), hashId]; - }; -} - -// node_modules/ant-design-vue/es/theme/util/statistic.js -var enableStatistic = true; -var recording = true; -function merge() { - for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) { - objs[_key] = arguments[_key]; - } - if (!enableStatistic) { - return _extends({}, ...objs); - } - recording = false; - const ret = {}; - objs.forEach((obj) => { - const keys2 = Object.keys(obj); - keys2.forEach((key2) => { - Object.defineProperty(ret, key2, { - configurable: true, - enumerable: true, - get: () => obj[key2] - }); - }); - }); - recording = true; - return ret; -} -var statistic = {}; -function noop2() { -} -function statisticToken(token2) { - let tokenKeys2; - let proxy = token2; - let flush = noop2; - if (enableStatistic) { - tokenKeys2 = /* @__PURE__ */ new Set(); - proxy = new Proxy(token2, { - get(obj, prop) { - if (recording) { - tokenKeys2.add(prop); - } - return obj[prop]; - } - }); - flush = (componentName, componentToken) => { - statistic[componentName] = { - global: Array.from(tokenKeys2), - component: componentToken - }; - }; - } - return { - token: proxy, - keys: tokenKeys2, - flush - }; -} - -// node_modules/ant-design-vue/es/theme/internal.js -var defaultTheme = createTheme(derivative); -var defaultConfig = { - token: seed_default, - hashed: true -}; -var DesignTokenContextKey = Symbol("DesignTokenContext"); -var globalDesignTokenApi = shallowRef(); -var useDesignTokenProvider = (value) => { - provide(DesignTokenContextKey, value); - watch(value, () => { - globalDesignTokenApi.value = unref(value); - triggerRef(globalDesignTokenApi); - }, { - immediate: true, - deep: true - }); -}; -var DesignTokenProvider = defineComponent({ - props: { - value: objectType() - }, - setup(props4, _ref) { - let { - slots - } = _ref; - useDesignTokenProvider(computed(() => props4.value)); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -function useToken() { - const designTokenContext = inject(DesignTokenContextKey, computed(() => globalDesignTokenApi.value || defaultConfig)); - const salt = computed(() => `${version_default2}-${designTokenContext.value.hashed || ""}`); - const mergedTheme = computed(() => designTokenContext.value.theme || defaultTheme); - const cacheToken = useCacheToken(mergedTheme, computed(() => [seed_default, designTokenContext.value.token]), computed(() => ({ - salt: salt.value, - override: _extends({ - override: designTokenContext.value.token - }, designTokenContext.value.components), - formatToken - }))); - return [mergedTheme, computed(() => cacheToken.value[0]), computed(() => designTokenContext.value.hashed ? cacheToken.value[1] : "")]; -} - -// node_modules/ant-design-vue/es/empty/empty.js -var Empty = defineComponent({ - compatConfig: { - MODE: 3 - }, - setup() { - const [, token2] = useToken(); - const themeStyle = computed(() => { - const bgColor = new TinyColor(token2.value.colorBgBase); - if (bgColor.toHsl().l < 0.5) { - return { - opacity: 0.65 - }; - } - return {}; - }); - return () => createVNode("svg", { - "style": themeStyle.value, - "width": "184", - "height": "152", - "viewBox": "0 0 184 152", - "xmlns": "http://www.w3.org/2000/svg" - }, [createVNode("g", { - "fill": "none", - "fill-rule": "evenodd" - }, [createVNode("g", { - "transform": "translate(24 31.67)" - }, [createVNode("ellipse", { - "fill-opacity": ".8", - "fill": "#F5F5F7", - "cx": "67.797", - "cy": "106.89", - "rx": "67.797", - "ry": "12.668" - }, null), createVNode("path", { - "d": "M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z", - "fill": "#AEB8C2" - }, null), createVNode("path", { - "d": "M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z", - "fill": "url(#linearGradient-1)", - "transform": "translate(13.56)" - }, null), createVNode("path", { - "d": "M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z", - "fill": "#F5F5F7" - }, null), createVNode("path", { - "d": "M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z", - "fill": "#DCE0E6" - }, null)]), createVNode("path", { - "d": "M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z", - "fill": "#DCE0E6" - }, null), createVNode("g", { - "transform": "translate(149.65 15.383)", - "fill": "#FFF" - }, [createVNode("ellipse", { - "cx": "20.654", - "cy": "3.167", - "rx": "2.849", - "ry": "2.815" - }, null), createVNode("path", { - "d": "M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z" - }, null)])])]); - } -}); -Empty.PRESENTED_IMAGE_DEFAULT = true; -var empty_default = Empty; - -// node_modules/ant-design-vue/es/empty/simple.js -var Simple = defineComponent({ - compatConfig: { - MODE: 3 - }, - setup() { - const [, token2] = useToken(); - const color = computed(() => { - const { - colorFill, - colorFillTertiary, - colorFillQuaternary, - colorBgContainer - } = token2.value; - return { - borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexString(), - shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(), - contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexString() - }; - }); - return () => createVNode("svg", { - "width": "64", - "height": "41", - "viewBox": "0 0 64 41", - "xmlns": "http://www.w3.org/2000/svg" - }, [createVNode("g", { - "transform": "translate(0 1)", - "fill": "none", - "fill-rule": "evenodd" - }, [createVNode("ellipse", { - "fill": color.value.shadowColor, - "cx": "32", - "cy": "33", - "rx": "32", - "ry": "7" - }, null), createVNode("g", { - "fill-rule": "nonzero", - "stroke": color.value.borderColor - }, [createVNode("path", { - "d": "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" - }, null), createVNode("path", { - "d": "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z", - "fill": color.value.contentColor - }, null)])])]); - } -}); -Simple.PRESENTED_IMAGE_SIMPLE = true; -var simple_default = Simple; - -// node_modules/ant-design-vue/es/empty/style/index.js -var genSharedEmptyStyle = (token2) => { - const { - componentCls, - margin, - marginXS, - marginXL, - fontSize, - lineHeight - } = token2; - return { - [componentCls]: { - marginInline: marginXS, - fontSize, - lineHeight, - textAlign: "center", - // 原来 &-image 没有父子结构,现在为了外层承担我们的hashId,改成父子结果 - [`${componentCls}-image`]: { - height: token2.emptyImgHeight, - marginBottom: marginXS, - opacity: token2.opacityImage, - img: { - height: "100%" - }, - svg: { - height: "100%", - margin: "auto" - } - }, - // 原来 &-footer 没有父子结构,现在为了外层承担我们的hashId,改成父子结果 - [`${componentCls}-footer`]: { - marginTop: margin - }, - "&-normal": { - marginBlock: marginXL, - color: token2.colorTextDisabled, - [`${componentCls}-image`]: { - height: token2.emptyImgHeightMD - } - }, - "&-small": { - marginBlock: marginXS, - color: token2.colorTextDisabled, - [`${componentCls}-image`]: { - height: token2.emptyImgHeightSM - } - } - } - }; -}; -var style_default = genComponentStyleHook("Empty", (token2) => { - const { - componentCls, - controlHeightLG - } = token2; - const emptyToken = merge(token2, { - emptyImgCls: `${componentCls}-img`, - emptyImgHeight: controlHeightLG * 2.5, - emptyImgHeightMD: controlHeightLG, - emptyImgHeightSM: controlHeightLG * 0.875 - }); - return [genSharedEmptyStyle(emptyToken)]; -}); - -// node_modules/ant-design-vue/es/empty/index.js -var __rest2 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var defaultEmptyImg = createVNode(empty_default, null, null); -var simpleEmptyImg = createVNode(simple_default, null, null); -var emptyProps = () => ({ - prefixCls: String, - imageStyle: objectType(), - image: anyType(), - description: anyType() -}); -var Empty2 = defineComponent({ - name: "AEmpty", - compatConfig: { - MODE: 3 - }, - inheritAttrs: false, - props: emptyProps(), - setup(props4, _ref) { - let { - slots = {}, - attrs - } = _ref; - const { - direction, - prefixCls: prefixClsRef - } = useConfigInject_default("empty", props4); - const [wrapSSR, hashId] = style_default(prefixClsRef); - return () => { - var _a2, _b; - const prefixCls = prefixClsRef.value; - const _c = _extends(_extends({}, props4), attrs), { - image = ((_a2 = slots.image) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || defaultEmptyImg, - description = ((_b = slots.description) === null || _b === void 0 ? void 0 : _b.call(slots)) || void 0, - imageStyle, - class: className = "" - } = _c, restProps = __rest2(_c, ["image", "description", "imageStyle", "class"]); - return wrapSSR(createVNode(LocaleReceiver_default2, { - "componentName": "Empty", - "children": (locale4) => { - const des = typeof description !== "undefined" ? description : locale4.description; - const alt = typeof des === "string" ? des : "empty"; - let imageNode = null; - if (typeof image === "string") { - imageNode = createVNode("img", { - "alt": alt, - "src": image - }, null); - } else { - imageNode = image; - } - return createVNode("div", _objectSpread2({ - "class": classNames_default(prefixCls, className, hashId.value, { - [`${prefixCls}-normal`]: image === simpleEmptyImg, - [`${prefixCls}-rtl`]: direction.value === "rtl" - }) - }, restProps), [createVNode("div", { - "class": `${prefixCls}-image`, - "style": imageStyle - }, [imageNode]), des && createVNode("p", { - "class": `${prefixCls}-description` - }, [des]), slots.default && createVNode("div", { - "class": `${prefixCls}-footer` - }, [filterEmpty(slots.default())])]); - } - }, null)); - }; - } -}); -Empty2.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg; -Empty2.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg; -var empty_default2 = withInstall(Empty2); - -// node_modules/ant-design-vue/es/config-provider/renderEmpty.js -var DefaultRenderEmpty = (props4) => { - const { - prefixCls - } = useConfigInject_default("empty", props4); - const renderHtml = (componentName) => { - switch (componentName) { - case "Table": - case "List": - return createVNode(empty_default2, { - "image": empty_default2.PRESENTED_IMAGE_SIMPLE - }, null); - case "Select": - case "TreeSelect": - case "Cascader": - case "Transfer": - case "Mentions": - return createVNode(empty_default2, { - "image": empty_default2.PRESENTED_IMAGE_SIMPLE, - "class": `${prefixCls.value}-small` - }, null); - default: - return createVNode(empty_default2, null, null); - } - }; - return renderHtml(props4.componentName); -}; -function renderEmpty(componentName) { - return createVNode(DefaultRenderEmpty, { - "componentName": componentName - }, null); -} -var renderEmpty_default = renderEmpty; - -// node_modules/ant-design-vue/es/config-provider/SizeContext.js -var SizeContextKey = Symbol("SizeContextKey"); -var useInjectSize = () => { - return inject(SizeContextKey, ref(void 0)); -}; -var useProviderSize = (size2) => { - const parentSize = useInjectSize(); - provide(SizeContextKey, computed(() => size2.value || parentSize.value)); - return size2; -}; - -// node_modules/ant-design-vue/es/config-provider/hooks/useConfigInject.js -var useConfigInject_default = (name, props4) => { - const sizeContext = useInjectSize(); - const disabledContext = useInjectDisabled(); - const configProvider = inject(configProviderKey, _extends(_extends({}, defaultConfigProvider), { - renderEmpty: (name2) => h(DefaultRenderEmpty, { - componentName: name2 - }) - })); - const prefixCls = computed(() => configProvider.getPrefixCls(name, props4.prefixCls)); - const direction = computed(() => { - var _a2, _b; - return (_a2 = props4.direction) !== null && _a2 !== void 0 ? _a2 : (_b = configProvider.direction) === null || _b === void 0 ? void 0 : _b.value; - }); - const iconPrefixCls = computed(() => { - var _a2; - return (_a2 = props4.iconPrefixCls) !== null && _a2 !== void 0 ? _a2 : configProvider.iconPrefixCls.value; - }); - const rootPrefixCls = computed(() => configProvider.getPrefixCls()); - const autoInsertSpaceInButton = computed(() => { - var _a2; - return (_a2 = configProvider.autoInsertSpaceInButton) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const renderEmpty2 = configProvider.renderEmpty; - const space = configProvider.space; - const pageHeader = configProvider.pageHeader; - const form = configProvider.form; - const getTargetContainer = computed(() => { - var _a2, _b; - return (_a2 = props4.getTargetContainer) !== null && _a2 !== void 0 ? _a2 : (_b = configProvider.getTargetContainer) === null || _b === void 0 ? void 0 : _b.value; - }); - const getPopupContainer = computed(() => { - var _a2, _b, _c; - return (_b = (_a2 = props4.getContainer) !== null && _a2 !== void 0 ? _a2 : props4.getPopupContainer) !== null && _b !== void 0 ? _b : (_c = configProvider.getPopupContainer) === null || _c === void 0 ? void 0 : _c.value; - }); - const dropdownMatchSelectWidth = computed(() => { - var _a2, _b; - return (_a2 = props4.dropdownMatchSelectWidth) !== null && _a2 !== void 0 ? _a2 : (_b = configProvider.dropdownMatchSelectWidth) === null || _b === void 0 ? void 0 : _b.value; - }); - const virtual = computed(() => { - var _a2; - return (props4.virtual === void 0 ? ((_a2 = configProvider.virtual) === null || _a2 === void 0 ? void 0 : _a2.value) !== false : props4.virtual !== false) && dropdownMatchSelectWidth.value !== false; - }); - const size2 = computed(() => props4.size || sizeContext.value); - const autocomplete = computed(() => { - var _a2, _b, _c; - return (_a2 = props4.autocomplete) !== null && _a2 !== void 0 ? _a2 : (_c = (_b = configProvider.input) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.autocomplete; - }); - const disabled = computed(() => { - var _a2; - return (_a2 = props4.disabled) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - const csp = computed(() => { - var _a2; - return (_a2 = props4.csp) !== null && _a2 !== void 0 ? _a2 : configProvider.csp; - }); - const wave = computed(() => { - var _a2, _b; - return (_a2 = props4.wave) !== null && _a2 !== void 0 ? _a2 : (_b = configProvider.wave) === null || _b === void 0 ? void 0 : _b.value; - }); - return { - configProvider, - prefixCls, - direction, - size: size2, - getTargetContainer, - getPopupContainer, - space, - pageHeader, - form, - autoInsertSpaceInButton, - renderEmpty: renderEmpty2, - virtual, - dropdownMatchSelectWidth, - rootPrefixCls, - getPrefixCls: configProvider.getPrefixCls, - autocomplete, - csp, - iconPrefixCls, - disabled, - select: configProvider.select, - wave - }; -}; - -// node_modules/ant-design-vue/es/_util/omit.js -function omit(obj, fields) { - const shallowCopy = _extends({}, obj); - for (let i3 = 0; i3 < fields.length; i3 += 1) { - const key2 = fields[i3]; - delete shallowCopy[key2]; - } - return shallowCopy; -} -var omit_default = omit; - -// node_modules/ant-design-vue/es/affix/style/index.js -var genSharedAffixStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - position: "fixed", - zIndex: token2.zIndexPopup - } - }; -}; -var style_default2 = genComponentStyleHook("Affix", (token2) => { - const affixToken = merge(token2, { - zIndexPopup: token2.zIndexBase + 10 - }); - return [genSharedAffixStyle(affixToken)]; -}); - -// node_modules/ant-design-vue/es/affix/index.js -function getDefaultTarget() { - return typeof window !== "undefined" ? window : null; -} -var AffixStatus; -(function(AffixStatus2) { - AffixStatus2[AffixStatus2["None"] = 0] = "None"; - AffixStatus2[AffixStatus2["Prepare"] = 1] = "Prepare"; -})(AffixStatus || (AffixStatus = {})); -var affixProps = () => ({ - /** - * 距离窗口顶部达到指定偏移量后触发 - */ - offsetTop: Number, - /** 距离窗口底部达到指定偏移量后触发 */ - offsetBottom: Number, - /** 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */ - target: { - type: Function, - default: getDefaultTarget - }, - prefixCls: String, - /** 固定状态改变时触发的回调函数 */ - onChange: Function, - onTestUpdatePosition: Function -}); -var Affix = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAffix", - inheritAttrs: false, - props: affixProps(), - setup(props4, _ref) { - let { - slots, - emit, - expose, - attrs - } = _ref; - const placeholderNode = shallowRef(); - const fixedNode = shallowRef(); - const state = reactive({ - affixStyle: void 0, - placeholderStyle: void 0, - status: AffixStatus.None, - lastAffix: false, - prevTarget: null, - timeout: null - }); - const currentInstance = getCurrentInstance(); - const offsetTop = computed(() => { - return props4.offsetBottom === void 0 && props4.offsetTop === void 0 ? 0 : props4.offsetTop; - }); - const offsetBottom = computed(() => props4.offsetBottom); - const measure2 = () => { - const { - status, - lastAffix - } = state; - const { - target - } = props4; - if (status !== AffixStatus.Prepare || !fixedNode.value || !placeholderNode.value || !target) { - return; - } - const targetNode = target(); - if (!targetNode) { - return; - } - const newState = { - status: AffixStatus.None - }; - const placeholderRect = getTargetRect(placeholderNode.value); - if (placeholderRect.top === 0 && placeholderRect.left === 0 && placeholderRect.width === 0 && placeholderRect.height === 0) { - return; - } - const targetRect = getTargetRect(targetNode); - const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value); - const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value); - if (placeholderRect.top === 0 && placeholderRect.left === 0 && placeholderRect.width === 0 && placeholderRect.height === 0) { - return; - } - if (fixedTop !== void 0) { - const width = `${placeholderRect.width}px`; - const height = `${placeholderRect.height}px`; - newState.affixStyle = { - position: "fixed", - top: fixedTop, - width, - height - }; - newState.placeholderStyle = { - width, - height - }; - } else if (fixedBottom !== void 0) { - const width = `${placeholderRect.width}px`; - const height = `${placeholderRect.height}px`; - newState.affixStyle = { - position: "fixed", - bottom: fixedBottom, - width, - height - }; - newState.placeholderStyle = { - width, - height - }; - } - newState.lastAffix = !!newState.affixStyle; - if (lastAffix !== newState.lastAffix) { - emit("change", newState.lastAffix); - } - _extends(state, newState); - }; - const prepareMeasure = () => { - _extends(state, { - status: AffixStatus.Prepare, - affixStyle: void 0, - placeholderStyle: void 0 - }); - if (false) { - emit("testUpdatePosition"); - } - }; - const updatePosition = throttleByAnimationFrame_default(() => { - prepareMeasure(); - }); - const lazyUpdatePosition = throttleByAnimationFrame_default(() => { - const { - target - } = props4; - const { - affixStyle - } = state; - if (target && affixStyle) { - const targetNode = target(); - if (targetNode && placeholderNode.value) { - const targetRect = getTargetRect(targetNode); - const placeholderRect = getTargetRect(placeholderNode.value); - const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value); - const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value); - if (fixedTop !== void 0 && affixStyle.top === fixedTop || fixedBottom !== void 0 && affixStyle.bottom === fixedBottom) { - return; - } - } - } - prepareMeasure(); - }); - expose({ - updatePosition, - lazyUpdatePosition - }); - watch(() => props4.target, (val) => { - const newTarget = (val === null || val === void 0 ? void 0 : val()) || null; - if (state.prevTarget !== newTarget) { - removeObserveTarget(currentInstance); - if (newTarget) { - addObserveTarget(newTarget, currentInstance); - updatePosition(); - } - state.prevTarget = newTarget; - } - }); - watch(() => [props4.offsetTop, props4.offsetBottom], updatePosition); - onMounted(() => { - const { - target - } = props4; - if (target) { - state.timeout = setTimeout(() => { - addObserveTarget(target(), currentInstance); - updatePosition(); - }); - } - }); - onUpdated(() => { - measure2(); - }); - onUnmounted(() => { - clearTimeout(state.timeout); - removeObserveTarget(currentInstance); - updatePosition.cancel(); - lazyUpdatePosition.cancel(); - }); - const { - prefixCls - } = useConfigInject_default("affix", props4); - const [wrapSSR, hashId] = style_default2(prefixCls); - return () => { - var _a2; - const { - affixStyle, - placeholderStyle, - status - } = state; - const className = classNames_default({ - [prefixCls.value]: affixStyle, - [hashId.value]: true - }); - const restProps = omit_default(props4, ["prefixCls", "offsetTop", "offsetBottom", "target", "onChange", "onTestUpdatePosition"]); - return wrapSSR(createVNode(vc_resize_observer_default, { - "onResize": updatePosition - }, { - default: () => [createVNode("div", _objectSpread2(_objectSpread2(_objectSpread2({}, restProps), attrs), {}, { - "ref": placeholderNode, - "data-measure-status": status - }), [affixStyle && createVNode("div", { - "style": placeholderStyle, - "aria-hidden": "true" - }, null), createVNode("div", { - "class": className, - "ref": fixedNode, - "style": affixStyle - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])])] - })); - }; - } -}); -var affix_default = withInstall(Affix); - -// node_modules/compute-scroll-into-view/dist/index.mjs -function t(t3) { - return "object" == typeof t3 && null != t3 && 1 === t3.nodeType; -} -function e(t3, e3) { - return (!e3 || "hidden" !== t3) && "visible" !== t3 && "clip" !== t3; -} -function n(t3, n3) { - if (t3.clientHeight < t3.scrollHeight || t3.clientWidth < t3.scrollWidth) { - var r3 = getComputedStyle(t3, null); - return e(r3.overflowY, n3) || e(r3.overflowX, n3) || function(t4) { - var e3 = function(t5) { - if (!t5.ownerDocument || !t5.ownerDocument.defaultView) return null; - try { - return t5.ownerDocument.defaultView.frameElement; - } catch (t6) { - return null; - } - }(t4); - return !!e3 && (e3.clientHeight < t4.scrollHeight || e3.clientWidth < t4.scrollWidth); - }(t3); - } - return false; -} -function r(t3, e3, n3, r3, i3, o2, l2, d2) { - return o2 < t3 && l2 > e3 || o2 > t3 && l2 < e3 ? 0 : o2 <= t3 && d2 <= n3 || l2 >= e3 && d2 >= n3 ? o2 - t3 - r3 : l2 > e3 && d2 < n3 || o2 < t3 && d2 > n3 ? l2 - e3 + i3 : 0; -} -var i = function(e3, i3) { - var o2 = window, l2 = i3.scrollMode, d2 = i3.block, f2 = i3.inline, h3 = i3.boundary, u2 = i3.skipOverflowHiddenElements, s2 = "function" == typeof h3 ? h3 : function(t3) { - return t3 !== h3; - }; - if (!t(e3)) throw new TypeError("Invalid target"); - for (var a2, c2, g2 = document.scrollingElement || document.documentElement, p = [], m2 = e3; t(m2) && s2(m2); ) { - if ((m2 = null == (c2 = (a2 = m2).parentElement) ? a2.getRootNode().host || null : c2) === g2) { - p.push(m2); - break; - } - null != m2 && m2 === document.body && n(m2) && !n(document.documentElement) || null != m2 && n(m2, u2) && p.push(m2); - } - for (var w2 = o2.visualViewport ? o2.visualViewport.width : innerWidth, v2 = o2.visualViewport ? o2.visualViewport.height : innerHeight, W = window.scrollX || pageXOffset, H = window.scrollY || pageYOffset, b2 = e3.getBoundingClientRect(), y2 = b2.height, E2 = b2.width, M2 = b2.top, V2 = b2.right, x2 = b2.bottom, I2 = b2.left, C2 = "start" === d2 || "nearest" === d2 ? M2 : "end" === d2 ? x2 : M2 + y2 / 2, R2 = "center" === f2 ? I2 + E2 / 2 : "end" === f2 ? V2 : I2, T2 = [], k2 = 0; k2 < p.length; k2++) { - var B2 = p[k2], D2 = B2.getBoundingClientRect(), O2 = D2.height, X = D2.width, Y2 = D2.top, L2 = D2.right, S2 = D2.bottom, j2 = D2.left; - if ("if-needed" === l2 && M2 >= 0 && I2 >= 0 && x2 <= v2 && V2 <= w2 && M2 >= Y2 && x2 <= S2 && I2 >= j2 && V2 <= L2) return T2; - var N2 = getComputedStyle(B2), q2 = parseInt(N2.borderLeftWidth, 10), z2 = parseInt(N2.borderTopWidth, 10), A2 = parseInt(N2.borderRightWidth, 10), F2 = parseInt(N2.borderBottomWidth, 10), G = 0, J2 = 0, K = "offsetWidth" in B2 ? B2.offsetWidth - B2.clientWidth - q2 - A2 : 0, P2 = "offsetHeight" in B2 ? B2.offsetHeight - B2.clientHeight - z2 - F2 : 0, Q = "offsetWidth" in B2 ? 0 === B2.offsetWidth ? 0 : X / B2.offsetWidth : 0, U = "offsetHeight" in B2 ? 0 === B2.offsetHeight ? 0 : O2 / B2.offsetHeight : 0; - if (g2 === B2) G = "start" === d2 ? C2 : "end" === d2 ? C2 - v2 : "nearest" === d2 ? r(H, H + v2, v2, z2, F2, H + C2, H + C2 + y2, y2) : C2 - v2 / 2, J2 = "start" === f2 ? R2 : "center" === f2 ? R2 - w2 / 2 : "end" === f2 ? R2 - w2 : r(W, W + w2, w2, q2, A2, W + R2, W + R2 + E2, E2), G = Math.max(0, G + H), J2 = Math.max(0, J2 + W); - else { - G = "start" === d2 ? C2 - Y2 - z2 : "end" === d2 ? C2 - S2 + F2 + P2 : "nearest" === d2 ? r(Y2, S2, O2, z2, F2 + P2, C2, C2 + y2, y2) : C2 - (Y2 + O2 / 2) + P2 / 2, J2 = "start" === f2 ? R2 - j2 - q2 : "center" === f2 ? R2 - (j2 + X / 2) + K / 2 : "end" === f2 ? R2 - L2 + A2 + K : r(j2, L2, X, q2, A2 + K, R2, R2 + E2, E2); - var Z = B2.scrollLeft, $2 = B2.scrollTop; - C2 += $2 - (G = Math.max(0, Math.min($2 + G / U, B2.scrollHeight - O2 / U + P2))), R2 += Z - (J2 = Math.max(0, Math.min(Z + J2 / Q, B2.scrollWidth - X / Q + K))); - } - T2.push({ el: B2, top: G, left: J2 }); - } - return T2; -}; - -// node_modules/scroll-into-view-if-needed/es/index.js -function isOptionsObject(options) { - return options === Object(options) && Object.keys(options).length !== 0; -} -function defaultBehavior(actions, behavior) { - if (behavior === void 0) { - behavior = "auto"; - } - var canSmoothScroll = "scrollBehavior" in document.body.style; - actions.forEach(function(_ref) { - var el = _ref.el, top = _ref.top, left = _ref.left; - if (el.scroll && canSmoothScroll) { - el.scroll({ - top, - left, - behavior - }); - } else { - el.scrollTop = top; - el.scrollLeft = left; - } - }); -} -function getOptions(options) { - if (options === false) { - return { - block: "end", - inline: "nearest" - }; - } - if (isOptionsObject(options)) { - return options; - } - return { - block: "start", - inline: "nearest" - }; -} -function scrollIntoView(target, options) { - var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target); - if (isOptionsObject(options) && typeof options.behavior === "function") { - return options.behavior(isTargetAttached ? i(target, options) : []); - } - if (!isTargetAttached) { - return; - } - var computeOptions = getOptions(options); - return defaultBehavior(i(target, computeOptions), computeOptions.behavior); -} -var es_default = scrollIntoView; - -// node_modules/ant-design-vue/es/_util/easings.js -function easeInOutCubic(t3, b2, c2, d2) { - const cc = c2 - b2; - t3 /= d2 / 2; - if (t3 < 1) { - return cc / 2 * t3 * t3 * t3 + b2; - } - return cc / 2 * ((t3 -= 2) * t3 * t3 + 2) + b2; -} - -// node_modules/ant-design-vue/es/_util/getScroll.js -function isWindow(obj) { - return obj !== null && obj !== void 0 && obj === obj.window; -} -function getScroll(target, top) { - var _a2, _b; - if (typeof window === "undefined") { - return 0; - } - const method5 = top ? "scrollTop" : "scrollLeft"; - let result2 = 0; - if (isWindow(target)) { - result2 = target[top ? "pageYOffset" : "pageXOffset"]; - } else if (target instanceof Document) { - result2 = target.documentElement[method5]; - } else if (target instanceof HTMLElement) { - result2 = target[method5]; - } else if (target) { - result2 = target[method5]; - } - if (target && !isWindow(target) && typeof result2 !== "number") { - result2 = (_b = ((_a2 = target.ownerDocument) !== null && _a2 !== void 0 ? _a2 : target).documentElement) === null || _b === void 0 ? void 0 : _b[method5]; - } - return result2; -} - -// node_modules/ant-design-vue/es/_util/scrollTo.js -function scrollTo(y2) { - let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const { - getContainer: getContainer3 = () => window, - callback, - duration = 450 - } = options; - const container = getContainer3(); - const scrollTop = getScroll(container, true); - const startTime = Date.now(); - const frameFunc = () => { - const timestamp = Date.now(); - const time = timestamp - startTime; - const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y2, duration); - if (isWindow(container)) { - container.scrollTo(window.pageXOffset, nextScrollTop); - } else if (container instanceof Document || container.constructor.name === "HTMLDocument") { - container.documentElement.scrollTop = nextScrollTop; - } else { - container.scrollTop = nextScrollTop; - } - if (time < duration) { - wrapperRaf(frameFunc); - } else if (typeof callback === "function") { - callback(); - } - }; - wrapperRaf(frameFunc); -} - -// node_modules/ant-design-vue/es/anchor/context.js -function noop3() { -} -var AnchorContextKey = Symbol("anchorContextKey"); -var useProvideAnchor = (state) => { - provide(AnchorContextKey, state); -}; -var useInjectAnchor = () => { - return inject(AnchorContextKey, { - registerLink: noop3, - unregisterLink: noop3, - scrollTo: noop3, - activeLink: computed(() => ""), - handleClick: noop3, - direction: computed(() => "vertical") - }); -}; -var context_default = useProvideAnchor; - -// node_modules/ant-design-vue/es/anchor/style/index.js -var genSharedAnchorStyle = (token2) => { - const { - componentCls, - holderOffsetBlock, - motionDurationSlow, - lineWidthBold, - colorPrimary, - lineType, - colorSplit - } = token2; - return { - [`${componentCls}-wrapper`]: { - marginBlockStart: -holderOffsetBlock, - paddingBlockStart: holderOffsetBlock, - // delete overflow: auto - // overflow: 'auto', - backgroundColor: "transparent", - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - paddingInlineStart: lineWidthBold, - [`${componentCls}-link`]: { - paddingBlock: token2.anchorPaddingBlock, - paddingInline: `${token2.anchorPaddingInline}px 0`, - "&-title": _extends(_extends({}, textEllipsis), { - position: "relative", - display: "block", - marginBlockEnd: token2.anchorTitleBlock, - color: token2.colorText, - transition: `all ${token2.motionDurationSlow}`, - "&:only-child": { - marginBlockEnd: 0 - } - }), - [`&-active > ${componentCls}-link-title`]: { - color: token2.colorPrimary - }, - // link link - [`${componentCls}-link`]: { - paddingBlock: token2.anchorPaddingBlockSecondary - } - } - }), - [`&:not(${componentCls}-wrapper-horizontal)`]: { - [componentCls]: { - "&::before": { - position: "absolute", - left: { - _skip_check_: true, - value: 0 - }, - top: 0, - height: "100%", - borderInlineStart: `${lineWidthBold}px ${lineType} ${colorSplit}`, - content: '" "' - }, - [`${componentCls}-ink`]: { - position: "absolute", - left: { - _skip_check_: true, - value: 0 - }, - display: "none", - transform: "translateY(-50%)", - transition: `top ${motionDurationSlow} ease-in-out`, - width: lineWidthBold, - backgroundColor: colorPrimary, - [`&${componentCls}-ink-visible`]: { - display: "inline-block" - } - } - } - }, - [`${componentCls}-fixed ${componentCls}-ink ${componentCls}-ink`]: { - display: "none" - } - } - }; -}; -var genSharedAnchorHorizontalStyle = (token2) => { - const { - componentCls, - motionDurationSlow, - lineWidthBold, - colorPrimary - } = token2; - return { - [`${componentCls}-wrapper-horizontal`]: { - position: "relative", - "&::before": { - position: "absolute", - left: { - _skip_check_: true, - value: 0 - }, - right: { - _skip_check_: true, - value: 0 - }, - bottom: 0, - borderBottom: `1px ${token2.lineType} ${token2.colorSplit}`, - content: '" "' - }, - [componentCls]: { - overflowX: "scroll", - position: "relative", - display: "flex", - scrollbarWidth: "none", - "&::-webkit-scrollbar": { - display: "none" - /* Safari and Chrome */ - }, - [`${componentCls}-link:first-of-type`]: { - paddingInline: 0 - }, - [`${componentCls}-ink`]: { - position: "absolute", - bottom: 0, - transition: `left ${motionDurationSlow} ease-in-out, width ${motionDurationSlow} ease-in-out`, - height: lineWidthBold, - backgroundColor: colorPrimary - } - } - } - }; -}; -var style_default3 = genComponentStyleHook("Anchor", (token2) => { - const { - fontSize, - fontSizeLG, - padding, - paddingXXS - } = token2; - const anchorToken = merge(token2, { - holderOffsetBlock: paddingXXS, - anchorPaddingBlock: paddingXXS, - anchorPaddingBlockSecondary: paddingXXS / 2, - anchorPaddingInline: padding, - anchorTitleBlock: fontSize / 14 * 3, - anchorBallSize: fontSizeLG / 2 - }); - return [genSharedAnchorStyle(anchorToken), genSharedAnchorHorizontalStyle(anchorToken)]; -}); - -// node_modules/ant-design-vue/es/anchor/AnchorLink.js -var anchorLinkProps = () => ({ - prefixCls: String, - href: String, - title: anyType(), - target: String, - /* private use */ - customTitleProps: objectType() -}); -var AnchorLink_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAnchorLink", - inheritAttrs: false, - props: initDefaultProps_default(anchorLinkProps(), { - href: "#" - }), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - let mergedTitle = null; - const { - handleClick: contextHandleClick, - scrollTo: scrollTo3, - unregisterLink, - registerLink, - activeLink - } = useInjectAnchor(); - const { - prefixCls - } = useConfigInject_default("anchor", props4); - const handleClick = (e3) => { - const { - href - } = props4; - contextHandleClick(e3, { - title: mergedTitle, - href - }); - scrollTo3(href); - }; - watch(() => props4.href, (val, oldVal) => { - nextTick(() => { - unregisterLink(oldVal); - registerLink(val); - }); - }); - onMounted(() => { - registerLink(props4.href); - }); - onBeforeUnmount(() => { - unregisterLink(props4.href); - }); - return () => { - var _a2; - const { - href, - target, - title = slots.title, - customTitleProps = {} - } = props4; - const pre = prefixCls.value; - mergedTitle = typeof title === "function" ? title(customTitleProps) : title; - const active = activeLink.value === href; - const wrapperClassName = classNames_default(`${pre}-link`, { - [`${pre}-link-active`]: active - }, attrs.class); - const titleClassName = classNames_default(`${pre}-link-title`, { - [`${pre}-link-title-active`]: active - }); - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": wrapperClassName - }), [createVNode("a", { - "class": titleClassName, - "href": href, - "title": typeof mergedTitle === "string" ? mergedTitle : "", - "target": target, - "onClick": handleClick - }, [slots.customTitle ? slots.customTitle(customTitleProps) : mergedTitle]), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/vue-types/dist/vue-types.m.js -function e2(e3, t3) { - for (var n3 = 0; n3 < t3.length; n3++) { - var r3 = t3[n3]; - r3.enumerable = r3.enumerable || false, r3.configurable = true, "value" in r3 && (r3.writable = true), Object.defineProperty(e3, r3.key, r3); - } -} -function t2(t3, n3, r3) { - return n3 && e2(t3.prototype, n3), r3 && e2(t3, r3), t3; -} -function n2() { - return (n2 = Object.assign || function(e3) { - for (var t3 = 1; t3 < arguments.length; t3++) { - var n3 = arguments[t3]; - for (var r3 in n3) Object.prototype.hasOwnProperty.call(n3, r3) && (e3[r3] = n3[r3]); - } - return e3; - }).apply(this, arguments); -} -function r2(e3, t3) { - e3.prototype = Object.create(t3.prototype), e3.prototype.constructor = e3, e3.__proto__ = t3; -} -function i2(e3, t3) { - if (null == e3) return {}; - var n3, r3, i3 = {}, o2 = Object.keys(e3); - for (r3 = 0; r3 < o2.length; r3++) t3.indexOf(n3 = o2[r3]) >= 0 || (i3[n3] = e3[n3]); - return i3; -} -function o(e3) { - return 1 == (null != (t3 = e3) && "object" == typeof t3 && false === Array.isArray(t3)) && "[object Object]" === Object.prototype.toString.call(e3); - var t3; -} -var u = Object.prototype; -var a = u.toString; -var f = u.hasOwnProperty; -var c = /^\s*function (\w+)/; -function l(e3) { - var t3, n3 = null !== (t3 = null == e3 ? void 0 : e3.type) && void 0 !== t3 ? t3 : e3; - if (n3) { - var r3 = n3.toString().match(c); - return r3 ? r3[1] : ""; - } - return ""; -} -var s = function(e3) { - var t3, n3; - return false !== o(e3) && "function" == typeof (t3 = e3.constructor) && false !== o(n3 = t3.prototype) && false !== n3.hasOwnProperty("isPrototypeOf"); -}; -var v = function(e3) { - return e3; -}; -var y = v; -if (true) { - p = "undefined" != typeof console; - y = p ? function(e3) { - console.warn("[VueTypes warn]: " + e3); - } : v; -} -var p; -var d = function(e3, t3) { - return f.call(e3, t3); -}; -var h2 = Number.isInteger || function(e3) { - return "number" == typeof e3 && isFinite(e3) && Math.floor(e3) === e3; -}; -var b = Array.isArray || function(e3) { - return "[object Array]" === a.call(e3); -}; -var O = function(e3) { - return "[object Function]" === a.call(e3); -}; -var g = function(e3) { - return s(e3) && d(e3, "_vueTypes_name"); -}; -var m = function(e3) { - return s(e3) && (d(e3, "type") || ["_vueTypes_name", "validator", "default", "required"].some(function(t3) { - return d(e3, t3); - })); -}; -function j(e3, t3) { - return Object.defineProperty(e3.bind(t3), "__original", { value: e3 }); -} -function _(e3, t3, n3) { - var r3; - void 0 === n3 && (n3 = false); - var i3 = true, o2 = ""; - r3 = s(e3) ? e3 : { type: e3 }; - var u2 = g(r3) ? r3._vueTypes_name + " - " : ""; - if (m(r3) && null !== r3.type) { - if (void 0 === r3.type || true === r3.type) return i3; - if (!r3.required && void 0 === t3) return i3; - b(r3.type) ? (i3 = r3.type.some(function(e4) { - return true === _(e4, t3, true); - }), o2 = r3.type.map(function(e4) { - return l(e4); - }).join(" or ")) : i3 = "Array" === (o2 = l(r3)) ? b(t3) : "Object" === o2 ? s(t3) : "String" === o2 || "Number" === o2 || "Boolean" === o2 || "Function" === o2 ? function(e4) { - if (null == e4) return ""; - var t4 = e4.constructor.toString().match(c); - return t4 ? t4[1] : ""; - }(t3) === o2 : t3 instanceof r3.type; - } - if (!i3) { - var a2 = u2 + 'value "' + t3 + '" should be of type "' + o2 + '"'; - return false === n3 ? (y(a2), false) : a2; - } - if (d(r3, "validator") && O(r3.validator)) { - var f2 = y, v2 = []; - if (y = function(e4) { - v2.push(e4); - }, i3 = r3.validator(t3), y = f2, !i3) { - var p = (v2.length > 1 ? "* " : "") + v2.join("\n* "); - return v2.length = 0, false === n3 ? (y(p), i3) : p; - } - } - return i3; -} -function T(e3, t3) { - var n3 = Object.defineProperties(t3, { _vueTypes_name: { value: e3, writable: true }, isRequired: { get: function() { - return this.required = true, this; - } }, def: { value: function(e4) { - return void 0 !== e4 || this.default ? O(e4) || true === _(this, e4, true) ? (this.default = b(e4) ? function() { - return [].concat(e4); - } : s(e4) ? function() { - return Object.assign({}, e4); - } : e4, this) : (y(this._vueTypes_name + ' - invalid default value: "' + e4 + '"'), this) : this; - } } }), r3 = n3.validator; - return O(r3) && (n3.validator = j(r3, n3)), n3; -} -function w(e3, t3) { - var n3 = T(e3, t3); - return Object.defineProperty(n3, "validate", { value: function(e4) { - return O(this.validator) && y(this._vueTypes_name + " - calling .validate() will overwrite the current custom validator function. Validator info:\n" + JSON.stringify(this)), this.validator = j(e4, this), this; - } }); -} -function k(e3, t3, n3) { - var r3, o2, u2 = (r3 = t3, o2 = {}, Object.getOwnPropertyNames(r3).forEach(function(e4) { - o2[e4] = Object.getOwnPropertyDescriptor(r3, e4); - }), Object.defineProperties({}, o2)); - if (u2._vueTypes_name = e3, !s(n3)) return u2; - var a2, f2, c2 = n3.validator, l2 = i2(n3, ["validator"]); - if (O(c2)) { - var v2 = u2.validator; - v2 && (v2 = null !== (f2 = (a2 = v2).__original) && void 0 !== f2 ? f2 : a2), u2.validator = j(v2 ? function(e4) { - return v2.call(this, e4) && c2.call(this, e4); - } : c2, u2); - } - return Object.assign(u2, l2); -} -function P(e3) { - return e3.replace(/^(?!\s*$)/gm, " "); -} -var x = function() { - return w("any", {}); -}; -var A = function() { - return w("function", { type: Function }); -}; -var E = function() { - return w("boolean", { type: Boolean }); -}; -var N = function() { - return w("string", { type: String }); -}; -var q = function() { - return w("number", { type: Number }); -}; -var S = function() { - return w("array", { type: Array }); -}; -var V = function() { - return w("object", { type: Object }); -}; -var F = function() { - return T("integer", { type: Number, validator: function(e3) { - return h2(e3); - } }); -}; -var D = function() { - return T("symbol", { validator: function(e3) { - return "symbol" == typeof e3; - } }); -}; -function L(e3, t3) { - if (void 0 === t3 && (t3 = "custom validation failed"), "function" != typeof e3) throw new TypeError("[VueTypes error]: You must provide a function as argument"); - return T(e3.name || "<>", { validator: function(n3) { - var r3 = e3(n3); - return r3 || y(this._vueTypes_name + " - " + t3), r3; - } }); -} -function Y(e3) { - if (!b(e3)) throw new TypeError("[VueTypes error]: You must provide an array as argument."); - var t3 = 'oneOf - value should be one of "' + e3.join('", "') + '".', n3 = e3.reduce(function(e4, t4) { - if (null != t4) { - var n4 = t4.constructor; - -1 === e4.indexOf(n4) && e4.push(n4); - } - return e4; - }, []); - return T("oneOf", { type: n3.length > 0 ? n3 : void 0, validator: function(n4) { - var r3 = -1 !== e3.indexOf(n4); - return r3 || y(t3), r3; - } }); -} -function B(e3) { - if (!b(e3)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); - for (var t3 = false, n3 = [], r3 = 0; r3 < e3.length; r3 += 1) { - var i3 = e3[r3]; - if (m(i3)) { - if (g(i3) && "oneOf" === i3._vueTypes_name) { - n3 = n3.concat(i3.type); - continue; - } - if (O(i3.validator) && (t3 = true), true !== i3.type && i3.type) { - n3 = n3.concat(i3.type); - continue; - } - } - n3.push(i3); - } - return n3 = n3.filter(function(e4, t4) { - return n3.indexOf(e4) === t4; - }), T("oneOfType", t3 ? { type: n3, validator: function(t4) { - var n4 = [], r4 = e3.some(function(e4) { - var r5 = _(g(e4) && "oneOf" === e4._vueTypes_name ? e4.type || null : e4, t4, true); - return "string" == typeof r5 && n4.push(r5), true === r5; - }); - return r4 || y("oneOfType - provided value does not match any of the " + n4.length + " passed-in validators:\n" + P(n4.join("\n"))), r4; - } } : { type: n3 }); -} -function I(e3) { - return T("arrayOf", { type: Array, validator: function(t3) { - var n3, r3 = t3.every(function(t4) { - return true === (n3 = _(e3, t4, true)); - }); - return r3 || y("arrayOf - value validation error:\n" + P(n3)), r3; - } }); -} -function J(e3) { - return T("instanceOf", { type: e3 }); -} -function M(e3) { - return T("objectOf", { type: Object, validator: function(t3) { - var n3, r3 = Object.keys(t3).every(function(r4) { - return true === (n3 = _(e3, t3[r4], true)); - }); - return r3 || y("objectOf - value validation error:\n" + P(n3)), r3; - } }); -} -function R(e3) { - var t3 = Object.keys(e3), n3 = t3.filter(function(t4) { - var n4; - return !!(null === (n4 = e3[t4]) || void 0 === n4 ? void 0 : n4.required); - }), r3 = T("shape", { type: Object, validator: function(r4) { - var i3 = this; - if (!s(r4)) return false; - var o2 = Object.keys(r4); - if (n3.length > 0 && n3.some(function(e4) { - return -1 === o2.indexOf(e4); - })) { - var u2 = n3.filter(function(e4) { - return -1 === o2.indexOf(e4); - }); - return y(1 === u2.length ? 'shape - required property "' + u2[0] + '" is not defined.' : 'shape - required properties "' + u2.join('", "') + '" are not defined.'), false; - } - return o2.every(function(n4) { - if (-1 === t3.indexOf(n4)) return true === i3._vueTypes_isLoose || (y('shape - shape definition does not include a "' + n4 + '" property. Allowed keys: "' + t3.join('", "') + '".'), false); - var o3 = _(e3[n4], r4[n4], true); - return "string" == typeof o3 && y('shape - "' + n4 + '" property validation error:\n ' + P(o3)), true === o3; - }); - } }); - return Object.defineProperty(r3, "_vueTypes_isLoose", { writable: true, value: false }), Object.defineProperty(r3, "loose", { get: function() { - return this._vueTypes_isLoose = true, this; - } }), r3; -} -var $ = function() { - function e3() { - } - return e3.extend = function(e4) { - var t3 = this; - if (b(e4)) return e4.forEach(function(e5) { - return t3.extend(e5); - }), this; - var n3 = e4.name, r3 = e4.validate, o2 = void 0 !== r3 && r3, u2 = e4.getter, a2 = void 0 !== u2 && u2, f2 = i2(e4, ["name", "validate", "getter"]); - if (d(this, n3)) throw new TypeError('[VueTypes error]: Type "' + n3 + '" already defined'); - var c2, l2 = f2.type; - return g(l2) ? (delete f2.type, Object.defineProperty(this, n3, a2 ? { get: function() { - return k(n3, l2, f2); - } } : { value: function() { - var e5, t4 = k(n3, l2, f2); - return t4.validator && (t4.validator = (e5 = t4.validator).bind.apply(e5, [t4].concat([].slice.call(arguments)))), t4; - } })) : (c2 = a2 ? { get: function() { - var e5 = Object.assign({}, f2); - return o2 ? w(n3, e5) : T(n3, e5); - }, enumerable: true } : { value: function() { - var e5, t4, r4 = Object.assign({}, f2); - return e5 = o2 ? w(n3, r4) : T(n3, r4), r4.validator && (e5.validator = (t4 = r4.validator).bind.apply(t4, [e5].concat([].slice.call(arguments)))), e5; - }, enumerable: true }, Object.defineProperty(this, n3, c2)); - }, t2(e3, null, [{ key: "any", get: function() { - return x(); - } }, { key: "func", get: function() { - return A().def(this.defaults.func); - } }, { key: "bool", get: function() { - return E().def(this.defaults.bool); - } }, { key: "string", get: function() { - return N().def(this.defaults.string); - } }, { key: "number", get: function() { - return q().def(this.defaults.number); - } }, { key: "array", get: function() { - return S().def(this.defaults.array); - } }, { key: "object", get: function() { - return V().def(this.defaults.object); - } }, { key: "integer", get: function() { - return F().def(this.defaults.integer); - } }, { key: "symbol", get: function() { - return D(); - } }]), e3; -}(); -function z(e3) { - var i3; - return void 0 === e3 && (e3 = { func: function() { - }, bool: true, string: "", number: 0, array: function() { - return []; - }, object: function() { - return {}; - }, integer: 0 }), (i3 = function(i4) { - function o2() { - return i4.apply(this, arguments) || this; - } - return r2(o2, i4), t2(o2, null, [{ key: "sensibleDefaults", get: function() { - return n2({}, this.defaults); - }, set: function(t3) { - this.defaults = false !== t3 ? n2({}, true !== t3 ? t3 : e3) : {}; - } }]), o2; - }($)).defaults = n2({}, e3), i3; -} -$.defaults = {}, $.custom = L, $.oneOf = Y, $.instanceOf = J, $.oneOfType = B, $.arrayOf = I, $.objectOf = M, $.shape = R, $.utils = { validate: function(e3, t3) { - return true === _(t3, e3, true); -}, toType: function(e3, t3, n3) { - return void 0 === n3 && (n3 = false), n3 ? w(e3, t3) : T(e3, t3); -} }; -var C = function(e3) { - function t3() { - return e3.apply(this, arguments) || this; - } - return r2(t3, e3), t3; -}(z()); - -// node_modules/ant-design-vue/es/_util/vue-types/index.js -var PropTypes = z({ - func: void 0, - bool: void 0, - string: void 0, - number: void 0, - array: void 0, - object: void 0, - integer: void 0 -}); -PropTypes.extend([{ - name: "looseBool", - getter: true, - type: Boolean, - default: void 0 -}, { - name: "style", - getter: true, - type: [String, Object], - default: void 0 -}, { - name: "VueNode", - getter: true, - type: null -}]); -function withUndefined(type4) { - type4.default = void 0; - return type4; -} -var vue_types_default = PropTypes; - -// node_modules/ant-design-vue/es/vc-util/devWarning.js -var devWarning_default = (valid, component, message) => { - warning_default(valid, `[ant-design-vue: ${component}] ${message}`); -}; - -// node_modules/ant-design-vue/es/anchor/Anchor.js -function getDefaultContainer() { - return window; -} -function getOffsetTop(element, container) { - if (!element.getClientRects().length) { - return 0; - } - const rect = element.getBoundingClientRect(); - if (rect.width || rect.height) { - if (container === window) { - container = element.ownerDocument.documentElement; - return rect.top - container.clientTop; - } - return rect.top - container.getBoundingClientRect().top; - } - return rect.top; -} -var sharpMatcherRegx = /#([\S ]+)$/; -var anchorProps = () => ({ - prefixCls: String, - offsetTop: Number, - bounds: Number, - affix: { - type: Boolean, - default: true - }, - showInkInFixed: { - type: Boolean, - default: false - }, - getContainer: Function, - wrapperClass: String, - wrapperStyle: { - type: Object, - default: void 0 - }, - getCurrentAnchor: Function, - targetOffset: Number, - items: arrayType(), - direction: vue_types_default.oneOf(["vertical", "horizontal"]).def("vertical"), - onChange: Function, - onClick: Function -}); -var Anchor_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAnchor", - inheritAttrs: false, - props: anchorProps(), - setup(props4, _ref) { - let { - emit, - attrs, - slots, - expose - } = _ref; - var _a2; - const { - prefixCls, - getTargetContainer, - direction - } = useConfigInject_default("anchor", props4); - const anchorDirection = computed(() => { - var _a3; - return (_a3 = props4.direction) !== null && _a3 !== void 0 ? _a3 : "vertical"; - }); - if (true) { - devWarning_default(props4.items && typeof slots.default !== "function", "Anchor", "`Anchor children` is deprecated. Please use `items` instead."); - } - if (true) { - devWarning_default(!(anchorDirection.value === "horizontal" && ((_a2 = props4.items) === null || _a2 === void 0 ? void 0 : _a2.some((n3) => "children" in n3))), "Anchor", "`Anchor items#children` is not supported when `Anchor` direction is horizontal."); - } - const spanLinkNode = ref(null); - const anchorRef = ref(); - const state = reactive({ - links: [], - scrollContainer: null, - scrollEvent: null, - animating: false - }); - const activeLink = ref(null); - const getContainer3 = computed(() => { - const { - getContainer: getContainer4 - } = props4; - return getContainer4 || (getTargetContainer === null || getTargetContainer === void 0 ? void 0 : getTargetContainer.value) || getDefaultContainer; - }); - const getCurrentAnchor = function() { - let offsetTop = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0; - let bounds = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5; - const linkSections = []; - const container = getContainer3.value(); - state.links.forEach((link) => { - const sharpLinkMatch = sharpMatcherRegx.exec(link.toString()); - if (!sharpLinkMatch) { - return; - } - const target = document.getElementById(sharpLinkMatch[1]); - if (target) { - const top = getOffsetTop(target, container); - if (top < offsetTop + bounds) { - linkSections.push({ - link, - top - }); - } - } - }); - if (linkSections.length) { - const maxSection = linkSections.reduce((prev2, curr) => curr.top > prev2.top ? curr : prev2); - return maxSection.link; - } - return ""; - }; - const setCurrentActiveLink = (link) => { - const { - getCurrentAnchor: getCurrentAnchor2 - } = props4; - if (activeLink.value === link) { - return; - } - activeLink.value = typeof getCurrentAnchor2 === "function" ? getCurrentAnchor2(link) : link; - emit("change", link); - }; - const handleScrollTo = (link) => { - const { - offsetTop, - targetOffset: targetOffset5 - } = props4; - setCurrentActiveLink(link); - const sharpLinkMatch = sharpMatcherRegx.exec(link); - if (!sharpLinkMatch) { - return; - } - const targetElement = document.getElementById(sharpLinkMatch[1]); - if (!targetElement) { - return; - } - const container = getContainer3.value(); - const scrollTop = getScroll(container, true); - const eleOffsetTop = getOffsetTop(targetElement, container); - let y2 = scrollTop + eleOffsetTop; - y2 -= targetOffset5 !== void 0 ? targetOffset5 : offsetTop || 0; - state.animating = true; - scrollTo(y2, { - callback: () => { - state.animating = false; - }, - getContainer: getContainer3.value - }); - }; - expose({ - scrollTo: handleScrollTo - }); - const handleScroll = () => { - if (state.animating) { - return; - } - const { - offsetTop, - bounds, - targetOffset: targetOffset5 - } = props4; - const currentActiveLink = getCurrentAnchor(targetOffset5 !== void 0 ? targetOffset5 : offsetTop || 0, bounds); - setCurrentActiveLink(currentActiveLink); - }; - const updateInk = () => { - const linkNode = anchorRef.value.querySelector(`.${prefixCls.value}-link-title-active`); - if (linkNode && spanLinkNode.value) { - const horizontalAnchor = anchorDirection.value === "horizontal"; - spanLinkNode.value.style.top = horizontalAnchor ? "" : `${linkNode.offsetTop + linkNode.clientHeight / 2}px`; - spanLinkNode.value.style.height = horizontalAnchor ? "" : `${linkNode.clientHeight}px`; - spanLinkNode.value.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : ""; - spanLinkNode.value.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : ""; - if (horizontalAnchor) { - es_default(linkNode, { - scrollMode: "if-needed", - block: "nearest" - }); - } - } - }; - context_default({ - registerLink: (link) => { - if (!state.links.includes(link)) { - state.links.push(link); - } - }, - unregisterLink: (link) => { - const index3 = state.links.indexOf(link); - if (index3 !== -1) { - state.links.splice(index3, 1); - } - }, - activeLink, - scrollTo: handleScrollTo, - handleClick: (e3, info) => { - emit("click", e3, info); - }, - direction: anchorDirection - }); - onMounted(() => { - nextTick(() => { - const container = getContainer3.value(); - state.scrollContainer = container; - state.scrollEvent = addEventListenerWrap(state.scrollContainer, "scroll", handleScroll); - handleScroll(); - }); - }); - onBeforeUnmount(() => { - if (state.scrollEvent) { - state.scrollEvent.remove(); - } - }); - onUpdated(() => { - if (state.scrollEvent) { - const currentContainer = getContainer3.value(); - if (state.scrollContainer !== currentContainer) { - state.scrollContainer = currentContainer; - state.scrollEvent.remove(); - state.scrollEvent = addEventListenerWrap(state.scrollContainer, "scroll", handleScroll); - handleScroll(); - } - } - updateInk(); - }); - const createNestedLink = (options) => Array.isArray(options) ? options.map((option) => { - const { - children, - key: key2, - href, - target, - class: cls, - style, - title - } = option; - return createVNode(AnchorLink_default, { - "key": key2, - "href": href, - "target": target, - "class": cls, - "style": style, - "title": title, - "customTitleProps": option - }, { - default: () => [anchorDirection.value === "vertical" ? createNestedLink(children) : null], - customTitle: slots.customTitle - }); - }) : null; - const [wrapSSR, hashId] = style_default3(prefixCls); - return () => { - var _a3; - const { - offsetTop, - affix, - showInkInFixed - } = props4; - const pre = prefixCls.value; - const inkClass = classNames_default(`${pre}-ink`, { - [`${pre}-ink-visible`]: activeLink.value - }); - const wrapperClass = classNames_default(hashId.value, props4.wrapperClass, `${pre}-wrapper`, { - [`${pre}-wrapper-horizontal`]: anchorDirection.value === "horizontal", - [`${pre}-rtl`]: direction.value === "rtl" - }); - const anchorClass = classNames_default(pre, { - [`${pre}-fixed`]: !affix && !showInkInFixed - }); - const wrapperStyle2 = _extends({ - maxHeight: offsetTop ? `calc(100vh - ${offsetTop}px)` : "100vh" - }, props4.wrapperStyle); - const anchorContent = createVNode("div", { - "class": wrapperClass, - "style": wrapperStyle2, - "ref": anchorRef - }, [createVNode("div", { - "class": anchorClass - }, [createVNode("span", { - "class": inkClass, - "ref": spanLinkNode - }, null), Array.isArray(props4.items) ? createNestedLink(props4.items) : (_a3 = slots.default) === null || _a3 === void 0 ? void 0 : _a3.call(slots)])]); - return wrapSSR(!affix ? anchorContent : createVNode(affix_default, _objectSpread2(_objectSpread2({}, attrs), {}, { - "offsetTop": offsetTop, - "target": getContainer3.value - }), { - default: () => [anchorContent] - })); - }; - } -}); - -// node_modules/ant-design-vue/es/anchor/index.js -Anchor_default.Link = AnchorLink_default; -Anchor_default.install = function(app) { - app.component(Anchor_default.name, Anchor_default); - app.component(Anchor_default.Link.name, Anchor_default.Link); - return app; -}; -var anchor_default = Anchor_default; - -// node_modules/ant-design-vue/es/vc-select/utils/valueUtil.js -function getKey(data, index3) { - const { - key: key2 - } = data; - let value; - if ("value" in data) { - ({ - value - } = data); - } - if (key2 !== null && key2 !== void 0) { - return key2; - } - if (value !== void 0) { - return value; - } - return `rc-index-key-${index3}`; -} -function fillFieldNames(fieldNames, childrenAsData) { - const { - label, - value, - options - } = fieldNames || {}; - return { - label: label || (childrenAsData ? "children" : "label"), - value: value || "value", - options: options || "options" - }; -} -function flattenOptions(options) { - let { - fieldNames, - childrenAsData - } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const flattenList = []; - const { - label: fieldLabel, - value: fieldValue, - options: fieldOptions - } = fillFieldNames(fieldNames, false); - function dig(list, isGroupOption) { - list.forEach((data) => { - const label = data[fieldLabel]; - if (isGroupOption || !(fieldOptions in data)) { - const value = data[fieldValue]; - flattenList.push({ - key: getKey(data, flattenList.length), - groupOption: isGroupOption, - data, - label, - value - }); - } else { - let grpLabel = label; - if (grpLabel === void 0 && childrenAsData) { - grpLabel = data.label; - } - flattenList.push({ - key: getKey(data, flattenList.length), - group: true, - data, - label: grpLabel - }); - dig(data[fieldOptions], true); - } - }); - } - dig(options, false); - return flattenList; -} -function injectPropsWithOption(option) { - const newOption = _extends({}, option); - if (!("props" in newOption)) { - Object.defineProperty(newOption, "props", { - get() { - warning(false, "Return type is option instead of Option instance. Please read value directly instead of reading from `props`."); - return newOption; - } - }); - } - return newOption; -} -function getSeparatedContent(text, tokens) { - if (!tokens || !tokens.length) { - return null; - } - let match3 = false; - function separate(str, _ref) { - let [token2, ...restTokens] = _ref; - if (!token2) { - return [str]; - } - const list2 = str.split(token2); - match3 = match3 || list2.length > 1; - return list2.reduce((prevList, unitStr) => [...prevList, ...separate(unitStr, restTokens)], []).filter((unit) => unit); - } - const list = separate(text, tokens); - return match3 ? list : null; -} - -// node_modules/ant-design-vue/es/vc-trigger/interface.js -function returnEmptyString() { - return ""; -} -function returnDocument(element) { - if (element) { - return element.ownerDocument; - } - return window.document; -} -function noop4() { -} -var triggerProps = () => ({ - action: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.arrayOf(vue_types_default.string)]).def([]), - showAction: vue_types_default.any.def([]), - hideAction: vue_types_default.any.def([]), - getPopupClassNameFromAlign: vue_types_default.any.def(returnEmptyString), - onPopupVisibleChange: Function, - afterPopupVisibleChange: vue_types_default.func.def(noop4), - popup: vue_types_default.any, - popupStyle: { - type: Object, - default: void 0 - }, - prefixCls: vue_types_default.string.def("rc-trigger-popup"), - popupClassName: vue_types_default.string.def(""), - popupPlacement: String, - builtinPlacements: vue_types_default.object, - popupTransitionName: String, - popupAnimation: vue_types_default.any, - mouseEnterDelay: vue_types_default.number.def(0), - mouseLeaveDelay: vue_types_default.number.def(0.1), - zIndex: Number, - focusDelay: vue_types_default.number.def(0), - blurDelay: vue_types_default.number.def(0.15), - getPopupContainer: Function, - getDocument: vue_types_default.func.def(returnDocument), - forceRender: { - type: Boolean, - default: void 0 - }, - destroyPopupOnHide: { - type: Boolean, - default: false - }, - mask: { - type: Boolean, - default: false - }, - maskClosable: { - type: Boolean, - default: true - }, - // onPopupAlign: PropTypes.func.def(noop), - popupAlign: vue_types_default.object.def(() => ({})), - popupVisible: { - type: Boolean, - default: void 0 - }, - defaultPopupVisible: { - type: Boolean, - default: false - }, - maskTransitionName: String, - maskAnimation: String, - stretch: String, - alignPoint: { - type: Boolean, - default: void 0 - }, - autoDestroy: { - type: Boolean, - default: false - }, - mobile: Object, - getTriggerDOMNode: Function -}); - -// node_modules/ant-design-vue/es/vc-trigger/Popup/interface.js -var innerProps = { - visible: Boolean, - prefixCls: String, - zIndex: Number, - destroyPopupOnHide: Boolean, - forceRender: Boolean, - // Legacy Motion - animation: [String, Object], - transitionName: String, - // Measure - stretch: { - type: String - }, - // Align - align: { - type: Object - }, - point: { - type: Object - }, - getRootDomNode: { - type: Function - }, - getClassNameFromAlign: { - type: Function - }, - onAlign: { - type: Function - }, - onMouseenter: { - type: Function - }, - onMouseleave: { - type: Function - }, - onMousedown: { - type: Function - }, - onTouchstart: { - type: Function - } -}; -var mobileProps = _extends(_extends({}, innerProps), { - mobile: { - type: Object - } -}); -var popupProps = _extends(_extends({}, innerProps), { - mask: Boolean, - mobile: { - type: Object - }, - maskAnimation: String, - maskTransitionName: String -}); - -// node_modules/ant-design-vue/es/vc-trigger/utils/motionUtil.js -function getMotion(_ref) { - let { - prefixCls, - animation, - transitionName: transitionName2 - } = _ref; - if (animation) { - return { - name: `${prefixCls}-${animation}` - }; - } - if (transitionName2) { - return { - name: transitionName2 - }; - } - return {}; -} - -// node_modules/ant-design-vue/es/vc-trigger/Popup/Mask.js -function Mask(props4) { - const { - prefixCls, - visible, - zIndex, - mask, - maskAnimation, - maskTransitionName - } = props4; - if (!mask) { - return null; - } - let motion = {}; - if (maskTransitionName || maskAnimation) { - motion = getMotion({ - prefixCls, - transitionName: maskTransitionName, - animation: maskAnimation - }); - } - return createVNode(Transition, _objectSpread2({ - "appear": true - }, motion), { - default: () => [withDirectives(createVNode("div", { - "style": { - zIndex - }, - "class": `${prefixCls}-mask` - }, null), [[resolveDirective("if"), visible]])] - }); -} -Mask.displayName = "Mask"; - -// node_modules/ant-design-vue/es/vc-trigger/Popup/MobilePopupInner.js -var MobilePopupInner_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "MobilePopupInner", - inheritAttrs: false, - props: mobileProps, - emits: ["mouseenter", "mouseleave", "mousedown", "touchstart", "align"], - setup(props4, _ref) { - let { - expose, - slots - } = _ref; - const elementRef = ref(); - expose({ - forceAlign: () => { - }, - getElement: () => elementRef.value - }); - return () => { - var _a2; - const { - zIndex, - visible, - prefixCls, - mobile: { - popupClassName, - popupStyle, - popupMotion = {}, - popupRender - } = {} - } = props4; - const mergedStyle = _extends({ - zIndex - }, popupStyle); - let childNode = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - if (childNode.length > 1) { - const _childNode = /* @__PURE__ */ function() { - return childNode; - }(); - childNode = createVNode("div", { - "class": `${prefixCls}-content` - }, [childNode]); - } - if (popupRender) { - childNode = popupRender(childNode); - } - const mergedClassName = classNames_default(prefixCls, popupClassName); - return createVNode(Transition, _objectSpread2({ - "ref": elementRef - }, popupMotion), { - default: () => [visible ? createVNode("div", { - "class": mergedClassName, - "style": mergedStyle - }, [childNode]) : null] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-trigger/Popup/useVisibleStatus.js -var __awaiter = function(thisArg, _arguments, P2, generator2) { - function adopt(value) { - return value instanceof P2 ? value : new P2(function(resolve) { - resolve(value); - }); - } - return new (P2 || (P2 = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator2.next(value)); - } catch (e3) { - reject2(e3); - } - } - function rejected(value) { - try { - step(generator2["throw"](value)); - } catch (e3) { - reject2(e3); - } - } - function step(result2) { - result2.done ? resolve(result2.value) : adopt(result2.value).then(fulfilled, rejected); - } - step((generator2 = generator2.apply(thisArg, _arguments || [])).next()); - }); -}; -var StatusQueue = ["measure", "align", null, "motion"]; -var useVisibleStatus_default = (visible, doMeasure) => { - const status = shallowRef(null); - const rafRef = shallowRef(); - const destroyRef = shallowRef(false); - function setStatus(nextStatus) { - if (!destroyRef.value) { - status.value = nextStatus; - } - } - function cancelRaf() { - wrapperRaf.cancel(rafRef.value); - } - function goNextStatus(callback) { - cancelRaf(); - rafRef.value = wrapperRaf(() => { - let newStatus = status.value; - switch (status.value) { - case "align": - newStatus = "motion"; - break; - case "motion": - newStatus = "stable"; - break; - default: - } - setStatus(newStatus); - callback === null || callback === void 0 ? void 0 : callback(); - }); - } - watch(visible, () => { - setStatus("measure"); - }, { - immediate: true, - flush: "post" - }); - onMounted(() => { - watch(status, () => { - switch (status.value) { - case "measure": - doMeasure(); - break; - default: - } - if (status.value) { - rafRef.value = wrapperRaf(() => __awaiter(void 0, void 0, void 0, function* () { - const index3 = StatusQueue.indexOf(status.value); - const nextStatus = StatusQueue[index3 + 1]; - if (nextStatus && index3 !== -1) { - setStatus(nextStatus); - } - })); - } - }, { - immediate: true, - flush: "post" - }); - }); - onBeforeUnmount(() => { - destroyRef.value = true; - cancelRaf(); - }); - return [status, goNextStatus]; -}; - -// node_modules/ant-design-vue/es/vc-trigger/Popup/useStretchStyle.js -var useStretchStyle_default = (stretch) => { - const targetSize = shallowRef({ - width: 0, - height: 0 - }); - function measureStretch(element) { - targetSize.value = { - width: element.offsetWidth, - height: element.offsetHeight - }; - } - const style = computed(() => { - const sizeStyle = {}; - if (stretch.value) { - const { - width, - height - } = targetSize.value; - if (stretch.value.indexOf("height") !== -1 && height) { - sizeStyle.height = `${height}px`; - } else if (stretch.value.indexOf("minHeight") !== -1 && height) { - sizeStyle.minHeight = `${height}px`; - } - if (stretch.value.indexOf("width") !== -1 && width) { - sizeStyle.width = `${width}px`; - } else if (stretch.value.indexOf("minWidth") !== -1 && width) { - sizeStyle.minWidth = `${width}px`; - } - } - return sizeStyle; - }); - return [style, measureStretch]; -}; - -// node_modules/dom-align/dist-web/index.js -function ownKeys2(object4, enumerableOnly) { - var keys2 = Object.keys(object4); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object4); - enumerableOnly && (symbols = symbols.filter(function(sym) { - return Object.getOwnPropertyDescriptor(object4, sym).enumerable; - })), keys2.push.apply(keys2, symbols); - } - return keys2; -} -function _objectSpread22(target) { - for (var i3 = 1; i3 < arguments.length; i3++) { - var source = null != arguments[i3] ? arguments[i3] : {}; - i3 % 2 ? ownKeys2(Object(source), true).forEach(function(key2) { - _defineProperty2(target, key2, source[key2]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys2(Object(source)).forEach(function(key2) { - Object.defineProperty(target, key2, Object.getOwnPropertyDescriptor(source, key2)); - }); - } - return target; -} -function _typeof2(obj) { - "@babel/helpers - typeof"; - return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { - return typeof obj2; - } : function(obj2) { - return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }, _typeof2(obj); -} -function _defineProperty2(obj, key2, value) { - if (key2 in obj) { - Object.defineProperty(obj, key2, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key2] = value; - } - return obj; -} -var vendorPrefix; -var jsCssMap = { - Webkit: "-webkit-", - Moz: "-moz-", - // IE did it wrong again ... - ms: "-ms-", - O: "-o-" -}; -function getVendorPrefix() { - if (vendorPrefix !== void 0) { - return vendorPrefix; - } - vendorPrefix = ""; - var style = document.createElement("p").style; - var testProp = "Transform"; - for (var key2 in jsCssMap) { - if (key2 + testProp in style) { - vendorPrefix = key2; - } - } - return vendorPrefix; -} -function getTransitionName() { - return getVendorPrefix() ? "".concat(getVendorPrefix(), "TransitionProperty") : "transitionProperty"; -} -function getTransformName() { - return getVendorPrefix() ? "".concat(getVendorPrefix(), "Transform") : "transform"; -} -function setTransitionProperty(node2, value) { - var name = getTransitionName(); - if (name) { - node2.style[name] = value; - if (name !== "transitionProperty") { - node2.style.transitionProperty = value; - } - } -} -function setTransform(node2, value) { - var name = getTransformName(); - if (name) { - node2.style[name] = value; - if (name !== "transform") { - node2.style.transform = value; - } - } -} -function getTransitionProperty(node2) { - return node2.style.transitionProperty || node2.style[getTransitionName()]; -} -function getTransformXY(node2) { - var style = window.getComputedStyle(node2, null); - var transform4 = style.getPropertyValue("transform") || style.getPropertyValue(getTransformName()); - if (transform4 && transform4 !== "none") { - var matrix = transform4.replace(/[^0-9\-.,]/g, "").split(","); - return { - x: parseFloat(matrix[12] || matrix[4], 0), - y: parseFloat(matrix[13] || matrix[5], 0) - }; - } - return { - x: 0, - y: 0 - }; -} -var matrix2d = /matrix\((.*)\)/; -var matrix3d = /matrix3d\((.*)\)/; -function setTransformXY(node2, xy) { - var style = window.getComputedStyle(node2, null); - var transform4 = style.getPropertyValue("transform") || style.getPropertyValue(getTransformName()); - if (transform4 && transform4 !== "none") { - var arr; - var match2d = transform4.match(matrix2d); - if (match2d) { - match2d = match2d[1]; - arr = match2d.split(",").map(function(item) { - return parseFloat(item, 10); - }); - arr[4] = xy.x; - arr[5] = xy.y; - setTransform(node2, "matrix(".concat(arr.join(","), ")")); - } else { - var match3d = transform4.match(matrix3d)[1]; - arr = match3d.split(",").map(function(item) { - return parseFloat(item, 10); - }); - arr[12] = xy.x; - arr[13] = xy.y; - setTransform(node2, "matrix3d(".concat(arr.join(","), ")")); - } - } else { - setTransform(node2, "translateX(".concat(xy.x, "px) translateY(").concat(xy.y, "px) translateZ(0)")); - } -} -var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; -var getComputedStyleX; -function forceRelayout(elem) { - var originalStyle = elem.style.display; - elem.style.display = "none"; - elem.offsetHeight; - elem.style.display = originalStyle; -} -function css(el, name, v2) { - var value = v2; - if (_typeof2(name) === "object") { - for (var i3 in name) { - if (name.hasOwnProperty(i3)) { - css(el, i3, name[i3]); - } - } - return void 0; - } - if (typeof value !== "undefined") { - if (typeof value === "number") { - value = "".concat(value, "px"); - } - el.style[name] = value; - return void 0; - } - return getComputedStyleX(el, name); -} -function getClientPosition(elem) { - var box2; - var x2; - var y2; - var doc = elem.ownerDocument; - var body = doc.body; - var docElem = doc && doc.documentElement; - box2 = elem.getBoundingClientRect(); - x2 = Math.floor(box2.left); - y2 = Math.floor(box2.top); - x2 -= docElem.clientLeft || body.clientLeft || 0; - y2 -= docElem.clientTop || body.clientTop || 0; - return { - left: x2, - top: y2 - }; -} -function getScroll2(w2, top) { - var ret = w2["page".concat(top ? "Y" : "X", "Offset")]; - var method5 = "scroll".concat(top ? "Top" : "Left"); - if (typeof ret !== "number") { - var d2 = w2.document; - ret = d2.documentElement[method5]; - if (typeof ret !== "number") { - ret = d2.body[method5]; - } - } - return ret; -} -function getScrollLeft(w2) { - return getScroll2(w2); -} -function getScrollTop(w2) { - return getScroll2(w2, true); -} -function getOffset(el) { - var pos = getClientPosition(el); - var doc = el.ownerDocument; - var w2 = doc.defaultView || doc.parentWindow; - pos.left += getScrollLeft(w2); - pos.top += getScrollTop(w2); - return pos; -} -function isWindow2(obj) { - return obj !== null && obj !== void 0 && obj == obj.window; -} -function getDocument(node2) { - if (isWindow2(node2)) { - return node2.document; - } - if (node2.nodeType === 9) { - return node2; - } - return node2.ownerDocument; -} -function _getComputedStyle(elem, name, cs) { - var computedStyle = cs; - var val = ""; - var d2 = getDocument(elem); - computedStyle = computedStyle || d2.defaultView.getComputedStyle(elem, null); - if (computedStyle) { - val = computedStyle.getPropertyValue(name) || computedStyle[name]; - } - return val; -} -var _RE_NUM_NO_PX = new RegExp("^(".concat(RE_NUM, ")(?!px)[a-z%]+$"), "i"); -var RE_POS = /^(top|right|bottom|left)$/; -var CURRENT_STYLE = "currentStyle"; -var RUNTIME_STYLE = "runtimeStyle"; -var LEFT = "left"; -var PX = "px"; -function _getComputedStyleIE(elem, name) { - var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; - if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) { - var style = elem.style; - var left = style[LEFT]; - var rsLeft = elem[RUNTIME_STYLE][LEFT]; - elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; - style[LEFT] = name === "fontSize" ? "1em" : ret || 0; - ret = style.pixelLeft + PX; - style[LEFT] = left; - elem[RUNTIME_STYLE][LEFT] = rsLeft; - } - return ret === "" ? "auto" : ret; -} -if (typeof window !== "undefined") { - getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE; -} -function getOffsetDirection(dir, option) { - if (dir === "left") { - return option.useCssRight ? "right" : dir; - } - return option.useCssBottom ? "bottom" : dir; -} -function oppositeOffsetDirection(dir) { - if (dir === "left") { - return "right"; - } else if (dir === "right") { - return "left"; - } else if (dir === "top") { - return "bottom"; - } else if (dir === "bottom") { - return "top"; - } -} -function setLeftTop(elem, offset4, option) { - if (css(elem, "position") === "static") { - elem.style.position = "relative"; - } - var presetH = -999; - var presetV = -999; - var horizontalProperty = getOffsetDirection("left", option); - var verticalProperty = getOffsetDirection("top", option); - var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty); - var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty); - if (horizontalProperty !== "left") { - presetH = 999; - } - if (verticalProperty !== "top") { - presetV = 999; - } - var originalTransition = ""; - var originalOffset = getOffset(elem); - if ("left" in offset4 || "top" in offset4) { - originalTransition = getTransitionProperty(elem) || ""; - setTransitionProperty(elem, "none"); - } - if ("left" in offset4) { - elem.style[oppositeHorizontalProperty] = ""; - elem.style[horizontalProperty] = "".concat(presetH, "px"); - } - if ("top" in offset4) { - elem.style[oppositeVerticalProperty] = ""; - elem.style[verticalProperty] = "".concat(presetV, "px"); - } - forceRelayout(elem); - var old = getOffset(elem); - var originalStyle = {}; - for (var key2 in offset4) { - if (offset4.hasOwnProperty(key2)) { - var dir = getOffsetDirection(key2, option); - var preset = key2 === "left" ? presetH : presetV; - var off = originalOffset[key2] - old[key2]; - if (dir === key2) { - originalStyle[dir] = preset + off; - } else { - originalStyle[dir] = preset - off; - } - } - } - css(elem, originalStyle); - forceRelayout(elem); - if ("left" in offset4 || "top" in offset4) { - setTransitionProperty(elem, originalTransition); - } - var ret = {}; - for (var _key in offset4) { - if (offset4.hasOwnProperty(_key)) { - var _dir = getOffsetDirection(_key, option); - var _off = offset4[_key] - originalOffset[_key]; - if (_key === _dir) { - ret[_dir] = originalStyle[_dir] + _off; - } else { - ret[_dir] = originalStyle[_dir] - _off; - } - } - } - css(elem, ret); -} -function setTransform$1(elem, offset4) { - var originalOffset = getOffset(elem); - var originalXY = getTransformXY(elem); - var resultXY = { - x: originalXY.x, - y: originalXY.y - }; - if ("left" in offset4) { - resultXY.x = originalXY.x + offset4.left - originalOffset.left; - } - if ("top" in offset4) { - resultXY.y = originalXY.y + offset4.top - originalOffset.top; - } - setTransformXY(elem, resultXY); -} -function setOffset(elem, offset4, option) { - if (option.ignoreShake) { - var oriOffset = getOffset(elem); - var oLeft = oriOffset.left.toFixed(0); - var oTop = oriOffset.top.toFixed(0); - var tLeft = offset4.left.toFixed(0); - var tTop = offset4.top.toFixed(0); - if (oLeft === tLeft && oTop === tTop) { - return; - } - } - if (option.useCssRight || option.useCssBottom) { - setLeftTop(elem, offset4, option); - } else if (option.useCssTransform && getTransformName() in document.body.style) { - setTransform$1(elem, offset4); - } else { - setLeftTop(elem, offset4, option); - } -} -function each(arr, fn) { - for (var i3 = 0; i3 < arr.length; i3++) { - fn(arr[i3]); - } -} -function isBorderBoxFn(elem) { - return getComputedStyleX(elem, "boxSizing") === "border-box"; -} -var BOX_MODELS = ["margin", "border", "padding"]; -var CONTENT_INDEX = -1; -var PADDING_INDEX = 2; -var BORDER_INDEX = 1; -var MARGIN_INDEX = 0; -function swap(elem, options, callback) { - var old = {}; - var style = elem.style; - var name; - for (name in options) { - if (options.hasOwnProperty(name)) { - old[name] = style[name]; - style[name] = options[name]; - } - } - callback.call(elem); - for (name in options) { - if (options.hasOwnProperty(name)) { - style[name] = old[name]; - } - } -} -function getPBMWidth(elem, props4, which) { - var value = 0; - var prop; - var j2; - var i3; - for (j2 = 0; j2 < props4.length; j2++) { - prop = props4[j2]; - if (prop) { - for (i3 = 0; i3 < which.length; i3++) { - var cssProp = void 0; - if (prop === "border") { - cssProp = "".concat(prop).concat(which[i3], "Width"); - } else { - cssProp = prop + which[i3]; - } - value += parseFloat(getComputedStyleX(elem, cssProp)) || 0; - } - } - } - return value; -} -var domUtils = { - getParent: function getParent(element) { - var parent2 = element; - do { - if (parent2.nodeType === 11 && parent2.host) { - parent2 = parent2.host; - } else { - parent2 = parent2.parentNode; - } - } while (parent2 && parent2.nodeType !== 1 && parent2.nodeType !== 9); - return parent2; - } -}; -each(["Width", "Height"], function(name) { - domUtils["doc".concat(name)] = function(refWin) { - var d2 = refWin.document; - return Math.max( - // firefox chrome documentElement.scrollHeight< body.scrollHeight - // ie standard mode : documentElement.scrollHeight> body.scrollHeight - d2.documentElement["scroll".concat(name)], - // quirks : documentElement.scrollHeight 最大等于可视窗口多一点? - d2.body["scroll".concat(name)], - domUtils["viewport".concat(name)](d2) - ); - }; - domUtils["viewport".concat(name)] = function(win) { - var prop = "client".concat(name); - var doc = win.document; - var body = doc.body; - var documentElement = doc.documentElement; - var documentElementProp = documentElement[prop]; - return doc.compatMode === "CSS1Compat" && documentElementProp || body && body[prop] || documentElementProp; - }; -}); -function getWH(elem, name, ex) { - var extra = ex; - if (isWindow2(elem)) { - return name === "width" ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem); - } else if (elem.nodeType === 9) { - return name === "width" ? domUtils.docWidth(elem) : domUtils.docHeight(elem); - } - var which = name === "width" ? ["Left", "Right"] : ["Top", "Bottom"]; - var borderBoxValue = name === "width" ? Math.floor(elem.getBoundingClientRect().width) : Math.floor(elem.getBoundingClientRect().height); - var isBorderBox = isBorderBoxFn(elem); - var cssBoxValue = 0; - if (borderBoxValue === null || borderBoxValue === void 0 || borderBoxValue <= 0) { - borderBoxValue = void 0; - cssBoxValue = getComputedStyleX(elem, name); - if (cssBoxValue === null || cssBoxValue === void 0 || Number(cssBoxValue) < 0) { - cssBoxValue = elem.style[name] || 0; - } - cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0; - } - if (extra === void 0) { - extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX; - } - var borderBoxValueOrIsBorderBox = borderBoxValue !== void 0 || isBorderBox; - var val = borderBoxValue || cssBoxValue; - if (extra === CONTENT_INDEX) { - if (borderBoxValueOrIsBorderBox) { - return val - getPBMWidth(elem, ["border", "padding"], which); - } - return cssBoxValue; - } else if (borderBoxValueOrIsBorderBox) { - if (extra === BORDER_INDEX) { - return val; - } - return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ["border"], which) : getPBMWidth(elem, ["margin"], which)); - } - return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which); -} -var cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" -}; -function getWHIgnoreDisplay() { - for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { - args[_key2] = arguments[_key2]; - } - var val; - var elem = args[0]; - if (elem.offsetWidth !== 0) { - val = getWH.apply(void 0, args); - } else { - swap(elem, cssShow, function() { - val = getWH.apply(void 0, args); - }); - } - return val; -} -each(["width", "height"], function(name) { - var first = name.charAt(0).toUpperCase() + name.slice(1); - domUtils["outer".concat(first)] = function(el, includeMargin) { - return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX); - }; - var which = name === "width" ? ["Left", "Right"] : ["Top", "Bottom"]; - domUtils[name] = function(elem, v2) { - var val = v2; - if (val !== void 0) { - if (elem) { - var isBorderBox = isBorderBoxFn(elem); - if (isBorderBox) { - val += getPBMWidth(elem, ["padding", "border"], which); - } - return css(elem, name, val); - } - return void 0; - } - return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX); - }; -}); -function mix(to, from2) { - for (var i3 in from2) { - if (from2.hasOwnProperty(i3)) { - to[i3] = from2[i3]; - } - } - return to; -} -var utils = { - getWindow: function getWindow(node2) { - if (node2 && node2.document && node2.setTimeout) { - return node2; - } - var doc = node2.ownerDocument || node2; - return doc.defaultView || doc.parentWindow; - }, - getDocument, - offset: function offset(el, value, option) { - if (typeof value !== "undefined") { - setOffset(el, value, option || {}); - } else { - return getOffset(el); - } - }, - isWindow: isWindow2, - each, - css, - clone: function clone(obj) { - var i3; - var ret = {}; - for (i3 in obj) { - if (obj.hasOwnProperty(i3)) { - ret[i3] = obj[i3]; - } - } - var overflow = obj.overflow; - if (overflow) { - for (i3 in obj) { - if (obj.hasOwnProperty(i3)) { - ret.overflow[i3] = obj.overflow[i3]; - } - } - } - return ret; - }, - mix, - getWindowScrollLeft: function getWindowScrollLeft(w2) { - return getScrollLeft(w2); - }, - getWindowScrollTop: function getWindowScrollTop(w2) { - return getScrollTop(w2); - }, - merge: function merge2() { - var ret = {}; - for (var i3 = 0; i3 < arguments.length; i3++) { - utils.mix(ret, i3 < 0 || arguments.length <= i3 ? void 0 : arguments[i3]); - } - return ret; - }, - viewportWidth: 0, - viewportHeight: 0 -}; -mix(utils, domUtils); -var getParent2 = utils.getParent; -function getOffsetParent(element) { - if (utils.isWindow(element) || element.nodeType === 9) { - return null; - } - var doc = utils.getDocument(element); - var body = doc.body; - var parent2; - var positionStyle = utils.css(element, "position"); - var skipStatic = positionStyle === "fixed" || positionStyle === "absolute"; - if (!skipStatic) { - return element.nodeName.toLowerCase() === "html" ? null : getParent2(element); - } - for (parent2 = getParent2(element); parent2 && parent2 !== body && parent2.nodeType !== 9; parent2 = getParent2(parent2)) { - positionStyle = utils.css(parent2, "position"); - if (positionStyle !== "static") { - return parent2; - } - } - return null; -} -var getParent$1 = utils.getParent; -function isAncestorFixed(element) { - if (utils.isWindow(element) || element.nodeType === 9) { - return false; - } - var doc = utils.getDocument(element); - var body = doc.body; - var parent2 = null; - for ( - parent2 = getParent$1(element); - // 修复元素位于 document.documentElement 下导致崩溃问题 - parent2 && parent2 !== body && parent2 !== doc; - parent2 = getParent$1(parent2) - ) { - var positionStyle = utils.css(parent2, "position"); - if (positionStyle === "fixed") { - return true; - } - } - return false; -} -function getVisibleRectForElement(element, alwaysByViewport) { - var visibleRect = { - left: 0, - right: Infinity, - top: 0, - bottom: Infinity - }; - var el = getOffsetParent(element); - var doc = utils.getDocument(element); - var win = doc.defaultView || doc.parentWindow; - var body = doc.body; - var documentElement = doc.documentElement; - while (el) { - if ((navigator.userAgent.indexOf("MSIE") === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire - // viewport. In some browsers, el.offsetParent may be - // document.documentElement, so check for that too. - el !== body && el !== documentElement && utils.css(el, "overflow") !== "visible") { - var pos = utils.offset(el); - pos.left += el.clientLeft; - pos.top += el.clientTop; - visibleRect.top = Math.max(visibleRect.top, pos.top); - visibleRect.right = Math.min( - visibleRect.right, - // consider area without scrollBar - pos.left + el.clientWidth - ); - visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight); - visibleRect.left = Math.max(visibleRect.left, pos.left); - } else if (el === body || el === documentElement) { - break; - } - el = getOffsetParent(el); - } - var originalPosition = null; - if (!utils.isWindow(element) && element.nodeType !== 9) { - originalPosition = element.style.position; - var position2 = utils.css(element, "position"); - if (position2 === "absolute") { - element.style.position = "fixed"; - } - } - var scrollX = utils.getWindowScrollLeft(win); - var scrollY = utils.getWindowScrollTop(win); - var viewportWidth = utils.viewportWidth(win); - var viewportHeight = utils.viewportHeight(win); - var documentWidth = documentElement.scrollWidth; - var documentHeight = documentElement.scrollHeight; - var bodyStyle = window.getComputedStyle(body); - if (bodyStyle.overflowX === "hidden") { - documentWidth = win.innerWidth; - } - if (bodyStyle.overflowY === "hidden") { - documentHeight = win.innerHeight; - } - if (element.style) { - element.style.position = originalPosition; - } - if (alwaysByViewport || isAncestorFixed(element)) { - visibleRect.left = Math.max(visibleRect.left, scrollX); - visibleRect.top = Math.max(visibleRect.top, scrollY); - visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth); - visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight); - } else { - var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth); - visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth); - var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight); - visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight); - } - return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null; -} -function adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) { - var pos = utils.clone(elFuturePos); - var size2 = { - width: elRegion.width, - height: elRegion.height - }; - if (overflow.adjustX && pos.left < visibleRect.left) { - pos.left = visibleRect.left; - } - if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size2.width > visibleRect.right) { - size2.width -= pos.left + size2.width - visibleRect.right; - } - if (overflow.adjustX && pos.left + size2.width > visibleRect.right) { - pos.left = Math.max(visibleRect.right - size2.width, visibleRect.left); - } - if (overflow.adjustY && pos.top < visibleRect.top) { - pos.top = visibleRect.top; - } - if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size2.height > visibleRect.bottom) { - size2.height -= pos.top + size2.height - visibleRect.bottom; - } - if (overflow.adjustY && pos.top + size2.height > visibleRect.bottom) { - pos.top = Math.max(visibleRect.bottom - size2.height, visibleRect.top); - } - return utils.mix(pos, size2); -} -function getRegion(node2) { - var offset4; - var w2; - var h3; - if (!utils.isWindow(node2) && node2.nodeType !== 9) { - offset4 = utils.offset(node2); - w2 = utils.outerWidth(node2); - h3 = utils.outerHeight(node2); - } else { - var win = utils.getWindow(node2); - offset4 = { - left: utils.getWindowScrollLeft(win), - top: utils.getWindowScrollTop(win) - }; - w2 = utils.viewportWidth(win); - h3 = utils.viewportHeight(win); - } - offset4.width = w2; - offset4.height = h3; - return offset4; -} -function getAlignOffset(region, align) { - var V2 = align.charAt(0); - var H = align.charAt(1); - var w2 = region.width; - var h3 = region.height; - var x2 = region.left; - var y2 = region.top; - if (V2 === "c") { - y2 += h3 / 2; - } else if (V2 === "b") { - y2 += h3; - } - if (H === "c") { - x2 += w2 / 2; - } else if (H === "r") { - x2 += w2; - } - return { - left: x2, - top: y2 - }; -} -function getElFuturePos(elRegion, refNodeRegion, points, offset4, targetOffset5) { - var p1 = getAlignOffset(refNodeRegion, points[1]); - var p2 = getAlignOffset(elRegion, points[0]); - var diff = [p2.left - p1.left, p2.top - p1.top]; - return { - left: Math.round(elRegion.left - diff[0] + offset4[0] - targetOffset5[0]), - top: Math.round(elRegion.top - diff[1] + offset4[1] - targetOffset5[1]) - }; -} -function isFailX(elFuturePos, elRegion, visibleRect) { - return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right; -} -function isFailY(elFuturePos, elRegion, visibleRect) { - return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom; -} -function isCompleteFailX(elFuturePos, elRegion, visibleRect) { - return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left; -} -function isCompleteFailY(elFuturePos, elRegion, visibleRect) { - return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top; -} -function flip(points, reg, map2) { - var ret = []; - utils.each(points, function(p) { - ret.push(p.replace(reg, function(m2) { - return map2[m2]; - })); - }); - return ret; -} -function flipOffset(offset4, index3) { - offset4[index3] = -offset4[index3]; - return offset4; -} -function convertOffset(str, offsetLen) { - var n3; - if (/%$/.test(str)) { - n3 = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen; - } else { - n3 = parseInt(str, 10); - } - return n3 || 0; -} -function normalizeOffset(offset4, el) { - offset4[0] = convertOffset(offset4[0], el.width); - offset4[1] = convertOffset(offset4[1], el.height); -} -function doAlign(el, tgtRegion, align, isTgtRegionVisible) { - var points = align.points; - var offset4 = align.offset || [0, 0]; - var targetOffset5 = align.targetOffset || [0, 0]; - var overflow = align.overflow; - var source = align.source || el; - offset4 = [].concat(offset4); - targetOffset5 = [].concat(targetOffset5); - overflow = overflow || {}; - var newOverflowCfg = {}; - var fail = 0; - var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); - var visibleRect = getVisibleRectForElement(source, alwaysByViewport); - var elRegion = getRegion(source); - normalizeOffset(offset4, elRegion); - normalizeOffset(targetOffset5, tgtRegion); - var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset4, targetOffset5); - var newElRegion = utils.merge(elRegion, elFuturePos); - if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) { - if (overflow.adjustX) { - if (isFailX(elFuturePos, elRegion, visibleRect)) { - var newPoints = flip(points, /[lr]/gi, { - l: "r", - r: "l" - }); - var newOffset = flipOffset(offset4, 0); - var newTargetOffset = flipOffset(targetOffset5, 0); - var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset); - if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) { - fail = 1; - points = newPoints; - offset4 = newOffset; - targetOffset5 = newTargetOffset; - } - } - } - if (overflow.adjustY) { - if (isFailY(elFuturePos, elRegion, visibleRect)) { - var _newPoints = flip(points, /[tb]/gi, { - t: "b", - b: "t" - }); - var _newOffset = flipOffset(offset4, 1); - var _newTargetOffset = flipOffset(targetOffset5, 1); - var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset); - if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) { - fail = 1; - points = _newPoints; - offset4 = _newOffset; - targetOffset5 = _newTargetOffset; - } - } - } - if (fail) { - elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset4, targetOffset5); - utils.mix(newElRegion, elFuturePos); - } - var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect); - var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); - if (isStillFailX || isStillFailY) { - var _newPoints2 = points; - if (isStillFailX) { - _newPoints2 = flip(points, /[lr]/gi, { - l: "r", - r: "l" - }); - } - if (isStillFailY) { - _newPoints2 = flip(points, /[tb]/gi, { - t: "b", - b: "t" - }); - } - points = _newPoints2; - offset4 = align.offset || [0, 0]; - targetOffset5 = align.targetOffset || [0, 0]; - } - newOverflowCfg.adjustX = overflow.adjustX && isStillFailX; - newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; - if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) { - newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg); - } - } - if (newElRegion.width !== elRegion.width) { - utils.css(source, "width", utils.width(source) + newElRegion.width - elRegion.width); - } - if (newElRegion.height !== elRegion.height) { - utils.css(source, "height", utils.height(source) + newElRegion.height - elRegion.height); - } - utils.offset(source, { - left: newElRegion.left, - top: newElRegion.top - }, { - useCssRight: align.useCssRight, - useCssBottom: align.useCssBottom, - useCssTransform: align.useCssTransform, - ignoreShake: align.ignoreShake - }); - return { - points, - offset: offset4, - targetOffset: targetOffset5, - overflow: newOverflowCfg - }; -} -function isOutOfVisibleRect(target, alwaysByViewport) { - var visibleRect = getVisibleRectForElement(target, alwaysByViewport); - var targetRegion = getRegion(target); - return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom; -} -function alignElement(el, refNode, align) { - var target = align.target || refNode; - var refNodeRegion = getRegion(target); - var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport); - return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible); -} -alignElement.__getOffsetParent = getOffsetParent; -alignElement.__getVisibleRectForElement = getVisibleRectForElement; -function alignPoint(el, tgtPoint, align) { - var pageX; - var pageY; - var doc = utils.getDocument(el); - var win = doc.defaultView || doc.parentWindow; - var scrollX = utils.getWindowScrollLeft(win); - var scrollY = utils.getWindowScrollTop(win); - var viewportWidth = utils.viewportWidth(win); - var viewportHeight = utils.viewportHeight(win); - if ("pageX" in tgtPoint) { - pageX = tgtPoint.pageX; - } else { - pageX = scrollX + tgtPoint.clientX; - } - if ("pageY" in tgtPoint) { - pageY = tgtPoint.pageY; - } else { - pageY = scrollY + tgtPoint.clientY; - } - var tgtRegion = { - left: pageX, - top: pageY, - width: 0, - height: 0 - }; - var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; - var points = [align.points[0], "cc"]; - return doAlign(el, tgtRegion, _objectSpread22(_objectSpread22({}, align), {}, { - points - }), pointInView); -} - -// node_modules/ant-design-vue/es/_util/vnode.js -function cloneElement(vnode) { - let nodeProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let override = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - let mergeRef = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - let ele = vnode; - if (Array.isArray(vnode)) { - ele = filterEmpty(vnode)[0]; - } - if (!ele) { - return null; - } - const node2 = cloneVNode(ele, nodeProps, mergeRef); - node2.props = override ? _extends(_extends({}, node2.props), nodeProps) : node2.props; - warning_default2(typeof node2.props.class !== "object", "class must be string"); - return node2; -} -function cloneVNodes(vnodes) { - let nodeProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let override = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - return vnodes.map((vnode) => cloneElement(vnode, nodeProps, override)); -} -function deepCloneElement(vnode) { - let nodeProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let override = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - let mergeRef = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - if (Array.isArray(vnode)) { - return vnode.map((item) => deepCloneElement(item, nodeProps, override, mergeRef)); - } else { - if (!isVNode(vnode)) { - return vnode; - } - const cloned = cloneElement(vnode, nodeProps, override, mergeRef); - if (Array.isArray(cloned.children)) { - cloned.children = deepCloneElement(cloned.children); - } - return cloned; - } -} -function triggerVNodeUpdate(vm, attrs, dom) { - render(cloneVNode(vm, _extends({}, attrs)), dom); -} -var ensureValidVNode = (slot) => { - return (slot || []).some((child) => { - if (!isVNode(child)) return true; - if (child.type === Comment) return false; - if (child.type === Fragment && !ensureValidVNode(child.children)) return false; - return true; - }) ? slot : null; -}; -function customRenderSlot(slots, name, props4, fallback) { - var _a2; - const slot = (_a2 = slots[name]) === null || _a2 === void 0 ? void 0 : _a2.call(slots, props4); - if (ensureValidVNode(slot)) { - return slot; - } - return fallback === null || fallback === void 0 ? void 0 : fallback(); -} - -// node_modules/ant-design-vue/es/vc-util/Dom/isVisible.js -var isVisible_default = (element) => { - if (!element) { - return false; - } - if (element.offsetParent) { - return true; - } - if (element.getBBox) { - const box2 = element.getBBox(); - if (box2.width || box2.height) { - return true; - } - } - if (element.getBoundingClientRect) { - const box2 = element.getBoundingClientRect(); - if (box2.width || box2.height) { - return true; - } - } - return false; -}; - -// node_modules/ant-design-vue/es/vc-align/util.js -function isSamePoint(prev2, next2) { - if (prev2 === next2) return true; - if (!prev2 || !next2) return false; - if ("pageX" in next2 && "pageY" in next2) { - return prev2.pageX === next2.pageX && prev2.pageY === next2.pageY; - } - if ("clientX" in next2 && "clientY" in next2) { - return prev2.clientX === next2.clientX && prev2.clientY === next2.clientY; - } - return false; -} -function restoreFocus(activeElement, container) { - if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === "function") { - activeElement.focus(); - } -} -function monitorResize(element, callback) { - let prevWidth = null; - let prevHeight = null; - function onResize(_ref) { - let [{ - target - }] = _ref; - if (!document.documentElement.contains(target)) return; - const { - width, - height - } = target.getBoundingClientRect(); - const fixedWidth = Math.floor(width); - const fixedHeight = Math.floor(height); - if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) { - Promise.resolve().then(() => { - callback({ - width: fixedWidth, - height: fixedHeight - }); - }); - } - prevWidth = fixedWidth; - prevHeight = fixedHeight; - } - const resizeObserver = new ResizeObserver_es_default(onResize); - if (element) { - resizeObserver.observe(element); - } - return () => { - resizeObserver.disconnect(); - }; -} - -// node_modules/ant-design-vue/es/vc-align/hooks/useBuffer.js -var useBuffer_default = (callback, buffer) => { - let called = false; - let timeout = null; - function cancelTrigger() { - clearTimeout(timeout); - } - function trigger2(force) { - if (!called || force === true) { - if (callback() === false) { - return; - } - called = true; - cancelTrigger(); - timeout = setTimeout(() => { - called = false; - }, buffer.value); - } else { - cancelTrigger(); - timeout = setTimeout(() => { - called = false; - trigger2(); - }, buffer.value); - } - } - return [trigger2, () => { - called = false; - cancelTrigger(); - }]; -}; - -// node_modules/lodash-es/_listCacheClear.js -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} -var listCacheClear_default = listCacheClear; - -// node_modules/lodash-es/eq.js -function eq(value, other) { - return value === other || value !== value && other !== other; -} -var eq_default = eq; - -// node_modules/lodash-es/_assocIndexOf.js -function assocIndexOf(array4, key2) { - var length2 = array4.length; - while (length2--) { - if (eq_default(array4[length2][0], key2)) { - return length2; - } - } - return -1; -} -var assocIndexOf_default = assocIndexOf; - -// node_modules/lodash-es/_listCacheDelete.js -var arrayProto = Array.prototype; -var splice = arrayProto.splice; -function listCacheDelete(key2) { - var data = this.__data__, index3 = assocIndexOf_default(data, key2); - if (index3 < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index3 == lastIndex) { - data.pop(); - } else { - splice.call(data, index3, 1); - } - --this.size; - return true; -} -var listCacheDelete_default = listCacheDelete; - -// node_modules/lodash-es/_listCacheGet.js -function listCacheGet(key2) { - var data = this.__data__, index3 = assocIndexOf_default(data, key2); - return index3 < 0 ? void 0 : data[index3][1]; -} -var listCacheGet_default = listCacheGet; - -// node_modules/lodash-es/_listCacheHas.js -function listCacheHas(key2) { - return assocIndexOf_default(this.__data__, key2) > -1; -} -var listCacheHas_default = listCacheHas; - -// node_modules/lodash-es/_listCacheSet.js -function listCacheSet(key2, value) { - var data = this.__data__, index3 = assocIndexOf_default(data, key2); - if (index3 < 0) { - ++this.size; - data.push([key2, value]); - } else { - data[index3][1] = value; - } - return this; -} -var listCacheSet_default = listCacheSet; - -// node_modules/lodash-es/_ListCache.js -function ListCache(entries) { - var index3 = -1, length2 = entries == null ? 0 : entries.length; - this.clear(); - while (++index3 < length2) { - var entry = entries[index3]; - this.set(entry[0], entry[1]); - } -} -ListCache.prototype.clear = listCacheClear_default; -ListCache.prototype["delete"] = listCacheDelete_default; -ListCache.prototype.get = listCacheGet_default; -ListCache.prototype.has = listCacheHas_default; -ListCache.prototype.set = listCacheSet_default; -var ListCache_default = ListCache; - -// node_modules/lodash-es/_stackClear.js -function stackClear() { - this.__data__ = new ListCache_default(); - this.size = 0; -} -var stackClear_default = stackClear; - -// node_modules/lodash-es/_stackDelete.js -function stackDelete(key2) { - var data = this.__data__, result2 = data["delete"](key2); - this.size = data.size; - return result2; -} -var stackDelete_default = stackDelete; - -// node_modules/lodash-es/_stackGet.js -function stackGet(key2) { - return this.__data__.get(key2); -} -var stackGet_default = stackGet; - -// node_modules/lodash-es/_stackHas.js -function stackHas(key2) { - return this.__data__.has(key2); -} -var stackHas_default = stackHas; - -// node_modules/lodash-es/_freeGlobal.js -var freeGlobal = typeof global == "object" && global && global.Object === Object && global; -var freeGlobal_default = freeGlobal; - -// node_modules/lodash-es/_root.js -var freeSelf = typeof self == "object" && self && self.Object === Object && self; -var root = freeGlobal_default || freeSelf || Function("return this")(); -var root_default = root; - -// node_modules/lodash-es/_Symbol.js -var Symbol2 = root_default.Symbol; -var Symbol_default = Symbol2; - -// node_modules/lodash-es/_getRawTag.js -var objectProto = Object.prototype; -var hasOwnProperty2 = objectProto.hasOwnProperty; -var nativeObjectToString = objectProto.toString; -var symToStringTag = Symbol_default ? Symbol_default.toStringTag : void 0; -function getRawTag(value) { - var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag]; - try { - value[symToStringTag] = void 0; - var unmasked = true; - } catch (e3) { - } - var result2 = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result2; -} -var getRawTag_default = getRawTag; - -// node_modules/lodash-es/_objectToString.js -var objectProto2 = Object.prototype; -var nativeObjectToString2 = objectProto2.toString; -function objectToString(value) { - return nativeObjectToString2.call(value); -} -var objectToString_default = objectToString; - -// node_modules/lodash-es/_baseGetTag.js -var nullTag = "[object Null]"; -var undefinedTag = "[object Undefined]"; -var symToStringTag2 = Symbol_default ? Symbol_default.toStringTag : void 0; -function baseGetTag(value) { - if (value == null) { - return value === void 0 ? undefinedTag : nullTag; - } - return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag_default(value) : objectToString_default(value); -} -var baseGetTag_default = baseGetTag; - -// node_modules/lodash-es/isObject.js -function isObject2(value) { - var type4 = typeof value; - return value != null && (type4 == "object" || type4 == "function"); -} -var isObject_default = isObject2; - -// node_modules/lodash-es/isFunction.js -var asyncTag = "[object AsyncFunction]"; -var funcTag = "[object Function]"; -var genTag = "[object GeneratorFunction]"; -var proxyTag = "[object Proxy]"; -function isFunction2(value) { - if (!isObject_default(value)) { - return false; - } - var tag = baseGetTag_default(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} -var isFunction_default = isFunction2; - -// node_modules/lodash-es/_coreJsData.js -var coreJsData = root_default["__core-js_shared__"]; -var coreJsData_default = coreJsData; - -// node_modules/lodash-es/_isMasked.js -var maskSrcKey = function() { - var uid2 = /[^.]+$/.exec(coreJsData_default && coreJsData_default.keys && coreJsData_default.keys.IE_PROTO || ""); - return uid2 ? "Symbol(src)_1." + uid2 : ""; -}(); -function isMasked(func) { - return !!maskSrcKey && maskSrcKey in func; -} -var isMasked_default = isMasked; - -// node_modules/lodash-es/_toSource.js -var funcProto = Function.prototype; -var funcToString = funcProto.toString; -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e3) { - } - try { - return func + ""; - } catch (e3) { - } - } - return ""; -} -var toSource_default = toSource; - -// node_modules/lodash-es/_baseIsNative.js -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -var reIsHostCtor = /^\[object .+?Constructor\]$/; -var funcProto2 = Function.prototype; -var objectProto3 = Object.prototype; -var funcToString2 = funcProto2.toString; -var hasOwnProperty3 = objectProto3.hasOwnProperty; -var reIsNative = RegExp( - "^" + funcToString2.call(hasOwnProperty3).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" -); -function baseIsNative(value) { - if (!isObject_default(value) || isMasked_default(value)) { - return false; - } - var pattern4 = isFunction_default(value) ? reIsNative : reIsHostCtor; - return pattern4.test(toSource_default(value)); -} -var baseIsNative_default = baseIsNative; - -// node_modules/lodash-es/_getValue.js -function getValue(object4, key2) { - return object4 == null ? void 0 : object4[key2]; -} -var getValue_default = getValue; - -// node_modules/lodash-es/_getNative.js -function getNative(object4, key2) { - var value = getValue_default(object4, key2); - return baseIsNative_default(value) ? value : void 0; -} -var getNative_default = getNative; - -// node_modules/lodash-es/_Map.js -var Map2 = getNative_default(root_default, "Map"); -var Map_default = Map2; - -// node_modules/lodash-es/_nativeCreate.js -var nativeCreate = getNative_default(Object, "create"); -var nativeCreate_default = nativeCreate; - -// node_modules/lodash-es/_hashClear.js -function hashClear() { - this.__data__ = nativeCreate_default ? nativeCreate_default(null) : {}; - this.size = 0; -} -var hashClear_default = hashClear; - -// node_modules/lodash-es/_hashDelete.js -function hashDelete(key2) { - var result2 = this.has(key2) && delete this.__data__[key2]; - this.size -= result2 ? 1 : 0; - return result2; -} -var hashDelete_default = hashDelete; - -// node_modules/lodash-es/_hashGet.js -var HASH_UNDEFINED = "__lodash_hash_undefined__"; -var objectProto4 = Object.prototype; -var hasOwnProperty4 = objectProto4.hasOwnProperty; -function hashGet(key2) { - var data = this.__data__; - if (nativeCreate_default) { - var result2 = data[key2]; - return result2 === HASH_UNDEFINED ? void 0 : result2; - } - return hasOwnProperty4.call(data, key2) ? data[key2] : void 0; -} -var hashGet_default = hashGet; - -// node_modules/lodash-es/_hashHas.js -var objectProto5 = Object.prototype; -var hasOwnProperty5 = objectProto5.hasOwnProperty; -function hashHas(key2) { - var data = this.__data__; - return nativeCreate_default ? data[key2] !== void 0 : hasOwnProperty5.call(data, key2); -} -var hashHas_default = hashHas; - -// node_modules/lodash-es/_hashSet.js -var HASH_UNDEFINED2 = "__lodash_hash_undefined__"; -function hashSet(key2, value) { - var data = this.__data__; - this.size += this.has(key2) ? 0 : 1; - data[key2] = nativeCreate_default && value === void 0 ? HASH_UNDEFINED2 : value; - return this; -} -var hashSet_default = hashSet; - -// node_modules/lodash-es/_Hash.js -function Hash(entries) { - var index3 = -1, length2 = entries == null ? 0 : entries.length; - this.clear(); - while (++index3 < length2) { - var entry = entries[index3]; - this.set(entry[0], entry[1]); - } -} -Hash.prototype.clear = hashClear_default; -Hash.prototype["delete"] = hashDelete_default; -Hash.prototype.get = hashGet_default; -Hash.prototype.has = hashHas_default; -Hash.prototype.set = hashSet_default; -var Hash_default = Hash; - -// node_modules/lodash-es/_mapCacheClear.js -function mapCacheClear() { - this.size = 0; - this.__data__ = { - "hash": new Hash_default(), - "map": new (Map_default || ListCache_default)(), - "string": new Hash_default() - }; -} -var mapCacheClear_default = mapCacheClear; - -// node_modules/lodash-es/_isKeyable.js -function isKeyable(value) { - var type4 = typeof value; - return type4 == "string" || type4 == "number" || type4 == "symbol" || type4 == "boolean" ? value !== "__proto__" : value === null; -} -var isKeyable_default = isKeyable; - -// node_modules/lodash-es/_getMapData.js -function getMapData(map2, key2) { - var data = map2.__data__; - return isKeyable_default(key2) ? data[typeof key2 == "string" ? "string" : "hash"] : data.map; -} -var getMapData_default = getMapData; - -// node_modules/lodash-es/_mapCacheDelete.js -function mapCacheDelete(key2) { - var result2 = getMapData_default(this, key2)["delete"](key2); - this.size -= result2 ? 1 : 0; - return result2; -} -var mapCacheDelete_default = mapCacheDelete; - -// node_modules/lodash-es/_mapCacheGet.js -function mapCacheGet(key2) { - return getMapData_default(this, key2).get(key2); -} -var mapCacheGet_default = mapCacheGet; - -// node_modules/lodash-es/_mapCacheHas.js -function mapCacheHas(key2) { - return getMapData_default(this, key2).has(key2); -} -var mapCacheHas_default = mapCacheHas; - -// node_modules/lodash-es/_mapCacheSet.js -function mapCacheSet(key2, value) { - var data = getMapData_default(this, key2), size2 = data.size; - data.set(key2, value); - this.size += data.size == size2 ? 0 : 1; - return this; -} -var mapCacheSet_default = mapCacheSet; - -// node_modules/lodash-es/_MapCache.js -function MapCache(entries) { - var index3 = -1, length2 = entries == null ? 0 : entries.length; - this.clear(); - while (++index3 < length2) { - var entry = entries[index3]; - this.set(entry[0], entry[1]); - } -} -MapCache.prototype.clear = mapCacheClear_default; -MapCache.prototype["delete"] = mapCacheDelete_default; -MapCache.prototype.get = mapCacheGet_default; -MapCache.prototype.has = mapCacheHas_default; -MapCache.prototype.set = mapCacheSet_default; -var MapCache_default = MapCache; - -// node_modules/lodash-es/_stackSet.js -var LARGE_ARRAY_SIZE = 200; -function stackSet(key2, value) { - var data = this.__data__; - if (data instanceof ListCache_default) { - var pairs = data.__data__; - if (!Map_default || pairs.length < LARGE_ARRAY_SIZE - 1) { - pairs.push([key2, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache_default(pairs); - } - data.set(key2, value); - this.size = data.size; - return this; -} -var stackSet_default = stackSet; - -// node_modules/lodash-es/_Stack.js -function Stack(entries) { - var data = this.__data__ = new ListCache_default(entries); - this.size = data.size; -} -Stack.prototype.clear = stackClear_default; -Stack.prototype["delete"] = stackDelete_default; -Stack.prototype.get = stackGet_default; -Stack.prototype.has = stackHas_default; -Stack.prototype.set = stackSet_default; -var Stack_default = Stack; - -// node_modules/lodash-es/_setCacheAdd.js -var HASH_UNDEFINED3 = "__lodash_hash_undefined__"; -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED3); - return this; -} -var setCacheAdd_default = setCacheAdd; - -// node_modules/lodash-es/_setCacheHas.js -function setCacheHas(value) { - return this.__data__.has(value); -} -var setCacheHas_default = setCacheHas; - -// node_modules/lodash-es/_SetCache.js -function SetCache(values2) { - var index3 = -1, length2 = values2 == null ? 0 : values2.length; - this.__data__ = new MapCache_default(); - while (++index3 < length2) { - this.add(values2[index3]); - } -} -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd_default; -SetCache.prototype.has = setCacheHas_default; -var SetCache_default = SetCache; - -// node_modules/lodash-es/_arraySome.js -function arraySome(array4, predicate) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - while (++index3 < length2) { - if (predicate(array4[index3], index3, array4)) { - return true; - } - } - return false; -} -var arraySome_default = arraySome; - -// node_modules/lodash-es/_cacheHas.js -function cacheHas(cache, key2) { - return cache.has(key2); -} -var cacheHas_default = cacheHas; - -// node_modules/lodash-es/_equalArrays.js -var COMPARE_PARTIAL_FLAG = 1; -var COMPARE_UNORDERED_FLAG = 2; -function equalArrays(array4, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array4.length, othLength = other.length; - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - var arrStacked = stack.get(array4); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array4; - } - var index3 = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache_default() : void 0; - stack.set(array4, other); - stack.set(other, array4); - while (++index3 < arrLength) { - var arrValue = array4[index3], othValue = other[index3]; - if (customizer) { - var compared = isPartial ? customizer(othValue, arrValue, index3, other, array4, stack) : customizer(arrValue, othValue, index3, array4, other, stack); - } - if (compared !== void 0) { - if (compared) { - continue; - } - result2 = false; - break; - } - if (seen) { - if (!arraySome_default(other, function(othValue2, othIndex) { - if (!cacheHas_default(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result2 = false; - break; - } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - result2 = false; - break; - } - } - stack["delete"](array4); - stack["delete"](other); - return result2; -} -var equalArrays_default = equalArrays; - -// node_modules/lodash-es/_Uint8Array.js -var Uint8Array = root_default.Uint8Array; -var Uint8Array_default = Uint8Array; - -// node_modules/lodash-es/_mapToArray.js -function mapToArray(map2) { - var index3 = -1, result2 = Array(map2.size); - map2.forEach(function(value, key2) { - result2[++index3] = [key2, value]; - }); - return result2; -} -var mapToArray_default = mapToArray; - -// node_modules/lodash-es/_setToArray.js -function setToArray(set3) { - var index3 = -1, result2 = Array(set3.size); - set3.forEach(function(value) { - result2[++index3] = value; - }); - return result2; -} -var setToArray_default = setToArray; - -// node_modules/lodash-es/_equalByTag.js -var COMPARE_PARTIAL_FLAG2 = 1; -var COMPARE_UNORDERED_FLAG2 = 2; -var boolTag = "[object Boolean]"; -var dateTag = "[object Date]"; -var errorTag = "[object Error]"; -var mapTag = "[object Map]"; -var numberTag = "[object Number]"; -var regexpTag = "[object RegExp]"; -var setTag = "[object Set]"; -var stringTag = "[object String]"; -var symbolTag = "[object Symbol]"; -var arrayBufferTag = "[object ArrayBuffer]"; -var dataViewTag = "[object DataView]"; -var symbolProto = Symbol_default ? Symbol_default.prototype : void 0; -var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0; -function equalByTag(object4, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if (object4.byteLength != other.byteLength || object4.byteOffset != other.byteOffset) { - return false; - } - object4 = object4.buffer; - other = other.buffer; - case arrayBufferTag: - if (object4.byteLength != other.byteLength || !equalFunc(new Uint8Array_default(object4), new Uint8Array_default(other))) { - return false; - } - return true; - case boolTag: - case dateTag: - case numberTag: - return eq_default(+object4, +other); - case errorTag: - return object4.name == other.name && object4.message == other.message; - case regexpTag: - case stringTag: - return object4 == other + ""; - case mapTag: - var convert = mapToArray_default; - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG2; - convert || (convert = setToArray_default); - if (object4.size != other.size && !isPartial) { - return false; - } - var stacked = stack.get(object4); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG2; - stack.set(object4, other); - var result2 = equalArrays_default(convert(object4), convert(other), bitmask, customizer, equalFunc, stack); - stack["delete"](object4); - return result2; - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object4) == symbolValueOf.call(other); - } - } - return false; -} -var equalByTag_default = equalByTag; - -// node_modules/lodash-es/_arrayPush.js -function arrayPush(array4, values2) { - var index3 = -1, length2 = values2.length, offset4 = array4.length; - while (++index3 < length2) { - array4[offset4 + index3] = values2[index3]; - } - return array4; -} -var arrayPush_default = arrayPush; - -// node_modules/lodash-es/isArray.js -var isArray2 = Array.isArray; -var isArray_default = isArray2; - -// node_modules/lodash-es/_baseGetAllKeys.js -function baseGetAllKeys(object4, keysFunc, symbolsFunc) { - var result2 = keysFunc(object4); - return isArray_default(object4) ? result2 : arrayPush_default(result2, symbolsFunc(object4)); -} -var baseGetAllKeys_default = baseGetAllKeys; - -// node_modules/lodash-es/_arrayFilter.js -function arrayFilter(array4, predicate) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length, resIndex = 0, result2 = []; - while (++index3 < length2) { - var value = array4[index3]; - if (predicate(value, index3, array4)) { - result2[resIndex++] = value; - } - } - return result2; -} -var arrayFilter_default = arrayFilter; - -// node_modules/lodash-es/stubArray.js -function stubArray() { - return []; -} -var stubArray_default = stubArray; - -// node_modules/lodash-es/_getSymbols.js -var objectProto6 = Object.prototype; -var propertyIsEnumerable = objectProto6.propertyIsEnumerable; -var nativeGetSymbols = Object.getOwnPropertySymbols; -var getSymbols = !nativeGetSymbols ? stubArray_default : function(object4) { - if (object4 == null) { - return []; - } - object4 = Object(object4); - return arrayFilter_default(nativeGetSymbols(object4), function(symbol) { - return propertyIsEnumerable.call(object4, symbol); - }); -}; -var getSymbols_default = getSymbols; - -// node_modules/lodash-es/_baseTimes.js -function baseTimes(n3, iteratee2) { - var index3 = -1, result2 = Array(n3); - while (++index3 < n3) { - result2[index3] = iteratee2(index3); - } - return result2; -} -var baseTimes_default = baseTimes; - -// node_modules/lodash-es/isObjectLike.js -function isObjectLike(value) { - return value != null && typeof value == "object"; -} -var isObjectLike_default = isObjectLike; - -// node_modules/lodash-es/_baseIsArguments.js -var argsTag = "[object Arguments]"; -function baseIsArguments(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == argsTag; -} -var baseIsArguments_default = baseIsArguments; - -// node_modules/lodash-es/isArguments.js -var objectProto7 = Object.prototype; -var hasOwnProperty6 = objectProto7.hasOwnProperty; -var propertyIsEnumerable2 = objectProto7.propertyIsEnumerable; -var isArguments = baseIsArguments_default(/* @__PURE__ */ function() { - return arguments; -}()) ? baseIsArguments_default : function(value) { - return isObjectLike_default(value) && hasOwnProperty6.call(value, "callee") && !propertyIsEnumerable2.call(value, "callee"); -}; -var isArguments_default = isArguments; - -// node_modules/lodash-es/stubFalse.js -function stubFalse() { - return false; -} -var stubFalse_default = stubFalse; - -// node_modules/lodash-es/isBuffer.js -var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; -var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; -var moduleExports = freeModule && freeModule.exports === freeExports; -var Buffer = moduleExports ? root_default.Buffer : void 0; -var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0; -var isBuffer = nativeIsBuffer || stubFalse_default; -var isBuffer_default = isBuffer; - -// node_modules/lodash-es/_isIndex.js -var MAX_SAFE_INTEGER = 9007199254740991; -var reIsUint = /^(?:0|[1-9]\d*)$/; -function isIndex(value, length2) { - var type4 = typeof value; - length2 = length2 == null ? MAX_SAFE_INTEGER : length2; - return !!length2 && (type4 == "number" || type4 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2); -} -var isIndex_default = isIndex; - -// node_modules/lodash-es/isLength.js -var MAX_SAFE_INTEGER2 = 9007199254740991; -function isLength(value) { - return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2; -} -var isLength_default = isLength; - -// node_modules/lodash-es/_baseIsTypedArray.js -var argsTag2 = "[object Arguments]"; -var arrayTag = "[object Array]"; -var boolTag2 = "[object Boolean]"; -var dateTag2 = "[object Date]"; -var errorTag2 = "[object Error]"; -var funcTag2 = "[object Function]"; -var mapTag2 = "[object Map]"; -var numberTag2 = "[object Number]"; -var objectTag = "[object Object]"; -var regexpTag2 = "[object RegExp]"; -var setTag2 = "[object Set]"; -var stringTag2 = "[object String]"; -var weakMapTag = "[object WeakMap]"; -var arrayBufferTag2 = "[object ArrayBuffer]"; -var dataViewTag2 = "[object DataView]"; -var float32Tag = "[object Float32Array]"; -var float64Tag = "[object Float64Array]"; -var int8Tag = "[object Int8Array]"; -var int16Tag = "[object Int16Array]"; -var int32Tag = "[object Int32Array]"; -var uint8Tag = "[object Uint8Array]"; -var uint8ClampedTag = "[object Uint8ClampedArray]"; -var uint16Tag = "[object Uint16Array]"; -var uint32Tag = "[object Uint32Array]"; -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag2] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag2] = typedArrayTags[boolTag2] = typedArrayTags[dataViewTag2] = typedArrayTags[dateTag2] = typedArrayTags[errorTag2] = typedArrayTags[funcTag2] = typedArrayTags[mapTag2] = typedArrayTags[numberTag2] = typedArrayTags[objectTag] = typedArrayTags[regexpTag2] = typedArrayTags[setTag2] = typedArrayTags[stringTag2] = typedArrayTags[weakMapTag] = false; -function baseIsTypedArray(value) { - return isObjectLike_default(value) && isLength_default(value.length) && !!typedArrayTags[baseGetTag_default(value)]; -} -var baseIsTypedArray_default = baseIsTypedArray; - -// node_modules/lodash-es/_baseUnary.js -function baseUnary(func) { - return function(value) { - return func(value); - }; -} -var baseUnary_default = baseUnary; - -// node_modules/lodash-es/_nodeUtil.js -var freeExports2 = typeof exports == "object" && exports && !exports.nodeType && exports; -var freeModule2 = freeExports2 && typeof module == "object" && module && !module.nodeType && module; -var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2; -var freeProcess = moduleExports2 && freeGlobal_default.process; -var nodeUtil = function() { - try { - var types2 = freeModule2 && freeModule2.require && freeModule2.require("util").types; - if (types2) { - return types2; - } - return freeProcess && freeProcess.binding && freeProcess.binding("util"); - } catch (e3) { - } -}(); -var nodeUtil_default = nodeUtil; - -// node_modules/lodash-es/isTypedArray.js -var nodeIsTypedArray = nodeUtil_default && nodeUtil_default.isTypedArray; -var isTypedArray = nodeIsTypedArray ? baseUnary_default(nodeIsTypedArray) : baseIsTypedArray_default; -var isTypedArray_default = isTypedArray; - -// node_modules/lodash-es/_arrayLikeKeys.js -var objectProto8 = Object.prototype; -var hasOwnProperty7 = objectProto8.hasOwnProperty; -function arrayLikeKeys(value, inherited) { - var isArr = isArray_default(value), isArg = !isArr && isArguments_default(value), isBuff = !isArr && !isArg && isBuffer_default(value), isType = !isArr && !isArg && !isBuff && isTypedArray_default(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes_default(value.length, String) : [], length2 = result2.length; - for (var key2 in value) { - if ((inherited || hasOwnProperty7.call(value, key2)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. - (key2 == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. - isBuff && (key2 == "offset" || key2 == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. - isType && (key2 == "buffer" || key2 == "byteLength" || key2 == "byteOffset") || // Skip index properties. - isIndex_default(key2, length2)))) { - result2.push(key2); - } - } - return result2; -} -var arrayLikeKeys_default = arrayLikeKeys; - -// node_modules/lodash-es/_isPrototype.js -var objectProto9 = Object.prototype; -function isPrototype(value) { - var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto9; - return value === proto; -} -var isPrototype_default = isPrototype; - -// node_modules/lodash-es/_overArg.js -function overArg(func, transform4) { - return function(arg) { - return func(transform4(arg)); - }; -} -var overArg_default = overArg; - -// node_modules/lodash-es/_nativeKeys.js -var nativeKeys = overArg_default(Object.keys, Object); -var nativeKeys_default = nativeKeys; - -// node_modules/lodash-es/_baseKeys.js -var objectProto10 = Object.prototype; -var hasOwnProperty8 = objectProto10.hasOwnProperty; -function baseKeys(object4) { - if (!isPrototype_default(object4)) { - return nativeKeys_default(object4); - } - var result2 = []; - for (var key2 in Object(object4)) { - if (hasOwnProperty8.call(object4, key2) && key2 != "constructor") { - result2.push(key2); - } - } - return result2; -} -var baseKeys_default = baseKeys; - -// node_modules/lodash-es/isArrayLike.js -function isArrayLike(value) { - return value != null && isLength_default(value.length) && !isFunction_default(value); -} -var isArrayLike_default = isArrayLike; - -// node_modules/lodash-es/keys.js -function keys(object4) { - return isArrayLike_default(object4) ? arrayLikeKeys_default(object4) : baseKeys_default(object4); -} -var keys_default = keys; - -// node_modules/lodash-es/_getAllKeys.js -function getAllKeys(object4) { - return baseGetAllKeys_default(object4, keys_default, getSymbols_default); -} -var getAllKeys_default = getAllKeys; - -// node_modules/lodash-es/_equalObjects.js -var COMPARE_PARTIAL_FLAG3 = 1; -var objectProto11 = Object.prototype; -var hasOwnProperty9 = objectProto11.hasOwnProperty; -function equalObjects(object4, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG3, objProps = getAllKeys_default(object4), objLength = objProps.length, othProps = getAllKeys_default(other), othLength = othProps.length; - if (objLength != othLength && !isPartial) { - return false; - } - var index3 = objLength; - while (index3--) { - var key2 = objProps[index3]; - if (!(isPartial ? key2 in other : hasOwnProperty9.call(other, key2))) { - return false; - } - } - var objStacked = stack.get(object4); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object4; - } - var result2 = true; - stack.set(object4, other); - stack.set(other, object4); - var skipCtor = isPartial; - while (++index3 < objLength) { - key2 = objProps[index3]; - var objValue = object4[key2], othValue = other[key2]; - if (customizer) { - var compared = isPartial ? customizer(othValue, objValue, key2, other, object4, stack) : customizer(objValue, othValue, key2, object4, other, stack); - } - if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { - result2 = false; - break; - } - skipCtor || (skipCtor = key2 == "constructor"); - } - if (result2 && !skipCtor) { - var objCtor = object4.constructor, othCtor = other.constructor; - if (objCtor != othCtor && ("constructor" in object4 && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { - result2 = false; - } - } - stack["delete"](object4); - stack["delete"](other); - return result2; -} -var equalObjects_default = equalObjects; - -// node_modules/lodash-es/_DataView.js -var DataView = getNative_default(root_default, "DataView"); -var DataView_default = DataView; - -// node_modules/lodash-es/_Promise.js -var Promise2 = getNative_default(root_default, "Promise"); -var Promise_default = Promise2; - -// node_modules/lodash-es/_Set.js -var Set2 = getNative_default(root_default, "Set"); -var Set_default = Set2; - -// node_modules/lodash-es/_WeakMap.js -var WeakMap2 = getNative_default(root_default, "WeakMap"); -var WeakMap_default = WeakMap2; - -// node_modules/lodash-es/_getTag.js -var mapTag3 = "[object Map]"; -var objectTag2 = "[object Object]"; -var promiseTag = "[object Promise]"; -var setTag3 = "[object Set]"; -var weakMapTag2 = "[object WeakMap]"; -var dataViewTag3 = "[object DataView]"; -var dataViewCtorString = toSource_default(DataView_default); -var mapCtorString = toSource_default(Map_default); -var promiseCtorString = toSource_default(Promise_default); -var setCtorString = toSource_default(Set_default); -var weakMapCtorString = toSource_default(WeakMap_default); -var getTag = baseGetTag_default; -if (DataView_default && getTag(new DataView_default(new ArrayBuffer(1))) != dataViewTag3 || Map_default && getTag(new Map_default()) != mapTag3 || Promise_default && getTag(Promise_default.resolve()) != promiseTag || Set_default && getTag(new Set_default()) != setTag3 || WeakMap_default && getTag(new WeakMap_default()) != weakMapTag2) { - getTag = function(value) { - var result2 = baseGetTag_default(value), Ctor = result2 == objectTag2 ? value.constructor : void 0, ctorString = Ctor ? toSource_default(Ctor) : ""; - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: - return dataViewTag3; - case mapCtorString: - return mapTag3; - case promiseCtorString: - return promiseTag; - case setCtorString: - return setTag3; - case weakMapCtorString: - return weakMapTag2; - } - } - return result2; - }; -} -var getTag_default = getTag; - -// node_modules/lodash-es/_baseIsEqualDeep.js -var COMPARE_PARTIAL_FLAG4 = 1; -var argsTag3 = "[object Arguments]"; -var arrayTag2 = "[object Array]"; -var objectTag3 = "[object Object]"; -var objectProto12 = Object.prototype; -var hasOwnProperty10 = objectProto12.hasOwnProperty; -function baseIsEqualDeep(object4, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray_default(object4), othIsArr = isArray_default(other), objTag = objIsArr ? arrayTag2 : getTag_default(object4), othTag = othIsArr ? arrayTag2 : getTag_default(other); - objTag = objTag == argsTag3 ? objectTag3 : objTag; - othTag = othTag == argsTag3 ? objectTag3 : othTag; - var objIsObj = objTag == objectTag3, othIsObj = othTag == objectTag3, isSameTag = objTag == othTag; - if (isSameTag && isBuffer_default(object4)) { - if (!isBuffer_default(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack_default()); - return objIsArr || isTypedArray_default(object4) ? equalArrays_default(object4, other, bitmask, customizer, equalFunc, stack) : equalByTag_default(object4, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG4)) { - var objIsWrapped = objIsObj && hasOwnProperty10.call(object4, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty10.call(other, "__wrapped__"); - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object4.value() : object4, othUnwrapped = othIsWrapped ? other.value() : other; - stack || (stack = new Stack_default()); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack_default()); - return equalObjects_default(object4, other, bitmask, customizer, equalFunc, stack); -} -var baseIsEqualDeep_default = baseIsEqualDeep; - -// node_modules/lodash-es/_baseIsEqual.js -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || !isObjectLike_default(value) && !isObjectLike_default(other)) { - return value !== value && other !== other; - } - return baseIsEqualDeep_default(value, other, bitmask, customizer, baseIsEqual, stack); -} -var baseIsEqual_default = baseIsEqual; - -// node_modules/lodash-es/isEqual.js -function isEqual(value, other) { - return baseIsEqual_default(value, other); -} -var isEqual_default = isEqual; - -// node_modules/ant-design-vue/es/vc-align/Align.js -var alignProps = { - align: Object, - target: [Object, Function], - onAlign: Function, - monitorBufferTime: Number, - monitorWindowResize: Boolean, - disabled: Boolean -}; -function getElement(func) { - if (typeof func !== "function") return null; - return func(); -} -function getPoint(point) { - if (typeof point !== "object" || !point) return null; - return point; -} -var Align_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Align", - props: alignProps, - emits: ["align"], - setup(props4, _ref) { - let { - expose, - slots - } = _ref; - const cacheRef = ref({}); - const nodeRef = ref(); - const [forceAlign, cancelForceAlign] = useBuffer_default(() => { - const { - disabled: latestDisabled, - target: latestTarget, - align: latestAlign, - onAlign: latestOnAlign - } = props4; - if (!latestDisabled && latestTarget && nodeRef.value) { - const source = nodeRef.value; - let result2; - const element = getElement(latestTarget); - const point = getPoint(latestTarget); - cacheRef.value.element = element; - cacheRef.value.point = point; - cacheRef.value.align = latestAlign; - const { - activeElement - } = document; - if (element && isVisible_default(element)) { - result2 = alignElement(source, element, latestAlign); - } else if (point) { - result2 = alignPoint(source, point, latestAlign); - } - restoreFocus(activeElement, source); - if (latestOnAlign && result2) { - latestOnAlign(source, result2); - } - return true; - } - return false; - }, computed(() => props4.monitorBufferTime)); - const resizeMonitor = ref({ - cancel: () => { - } - }); - const sourceResizeMonitor = ref({ - cancel: () => { - } - }); - const goAlign = () => { - const target = props4.target; - const element = getElement(target); - const point = getPoint(target); - if (nodeRef.value !== sourceResizeMonitor.value.element) { - sourceResizeMonitor.value.cancel(); - sourceResizeMonitor.value.element = nodeRef.value; - sourceResizeMonitor.value.cancel = monitorResize(nodeRef.value, forceAlign); - } - if (cacheRef.value.element !== element || !isSamePoint(cacheRef.value.point, point) || !isEqual_default(cacheRef.value.align, props4.align)) { - forceAlign(); - if (resizeMonitor.value.element !== element) { - resizeMonitor.value.cancel(); - resizeMonitor.value.element = element; - resizeMonitor.value.cancel = monitorResize(element, forceAlign); - } - } - }; - onMounted(() => { - nextTick(() => { - goAlign(); - }); - }); - onUpdated(() => { - nextTick(() => { - goAlign(); - }); - }); - watch(() => props4.disabled, (disabled) => { - if (!disabled) { - forceAlign(); - } else { - cancelForceAlign(); - } - }, { - immediate: true, - flush: "post" - }); - const winResizeRef = ref(null); - watch(() => props4.monitorWindowResize, (monitorWindowResize) => { - if (monitorWindowResize) { - if (!winResizeRef.value) { - winResizeRef.value = addEventListenerWrap(window, "resize", forceAlign); - } - } else if (winResizeRef.value) { - winResizeRef.value.remove(); - winResizeRef.value = null; - } - }, { - flush: "post" - }); - onUnmounted(() => { - resizeMonitor.value.cancel(); - sourceResizeMonitor.value.cancel(); - if (winResizeRef.value) winResizeRef.value.remove(); - cancelForceAlign(); - }); - expose({ - forceAlign: () => forceAlign(true) - }); - return () => { - const child = slots === null || slots === void 0 ? void 0 : slots.default(); - if (child) { - return cloneElement(child[0], { - ref: nodeRef - }, true, true); - } - return null; - }; - } -}); - -// node_modules/ant-design-vue/es/_util/transition.js -var SelectPlacements = tuple("bottomLeft", "bottomRight", "topLeft", "topRight"); -var getTransitionDirection = (placement) => { - if (placement !== void 0 && (placement === "topLeft" || placement === "topRight")) { - return `slide-down`; - } - return `slide-up`; -}; -var getTransitionProps = function(transitionName2) { - let opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const transitionProps = transitionName2 ? _extends({ - name: transitionName2, - appear: true, - // type: 'animation', - // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, - // appearActiveClass: `antdv-base-transtion`, - // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`, - enterFromClass: `${transitionName2}-enter ${transitionName2}-enter-prepare ${transitionName2}-enter-start`, - enterActiveClass: `${transitionName2}-enter ${transitionName2}-enter-prepare`, - enterToClass: `${transitionName2}-enter ${transitionName2}-enter-active`, - leaveFromClass: ` ${transitionName2}-leave`, - leaveActiveClass: `${transitionName2}-leave ${transitionName2}-leave-active`, - leaveToClass: `${transitionName2}-leave ${transitionName2}-leave-active` - }, opt) : _extends({ - css: false - }, opt); - return transitionProps; -}; -var getTransitionGroupProps = function(transitionName2) { - let opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const transitionProps = transitionName2 ? _extends({ - name: transitionName2, - appear: true, - // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, - appearActiveClass: `${transitionName2}`, - appearToClass: `${transitionName2}-appear ${transitionName2}-appear-active`, - enterFromClass: `${transitionName2}-appear ${transitionName2}-enter ${transitionName2}-appear-prepare ${transitionName2}-enter-prepare`, - enterActiveClass: `${transitionName2}`, - enterToClass: `${transitionName2}-enter ${transitionName2}-appear ${transitionName2}-appear-active ${transitionName2}-enter-active`, - leaveActiveClass: `${transitionName2} ${transitionName2}-leave`, - leaveToClass: `${transitionName2}-leave-active` - }, opt) : _extends({ - css: false - }, opt); - return transitionProps; -}; -var getTransitionName2 = (rootPrefixCls, motion, transitionName2) => { - if (transitionName2 !== void 0) { - return transitionName2; - } - return `${rootPrefixCls}-${motion}`; -}; -var transition_default = Transition; - -// node_modules/ant-design-vue/es/vc-trigger/Popup/PopupInner.js -var PopupInner_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PopupInner", - inheritAttrs: false, - props: innerProps, - emits: ["mouseenter", "mouseleave", "mousedown", "touchstart", "align"], - setup(props4, _ref) { - let { - expose, - attrs, - slots - } = _ref; - const alignRef = shallowRef(); - const elementRef = shallowRef(); - const alignedClassName = shallowRef(); - const [stretchStyle, measureStretchStyle] = useStretchStyle_default(toRef(props4, "stretch")); - const doMeasure = () => { - if (props4.stretch) { - measureStretchStyle(props4.getRootDomNode()); - } - }; - const visible = shallowRef(false); - let timeoutId; - watch(() => props4.visible, (val) => { - clearTimeout(timeoutId); - if (val) { - timeoutId = setTimeout(() => { - visible.value = props4.visible; - }); - } else { - visible.value = false; - } - }, { - immediate: true - }); - const [status, goNextStatus] = useVisibleStatus_default(visible, doMeasure); - const prepareResolveRef = shallowRef(); - const getAlignTarget = () => { - if (props4.point) { - return props4.point; - } - return props4.getRootDomNode; - }; - const forceAlign = () => { - var _a2; - (_a2 = alignRef.value) === null || _a2 === void 0 ? void 0 : _a2.forceAlign(); - }; - const onInternalAlign = (popupDomNode, matchAlign) => { - var _a2; - const nextAlignedClassName = props4.getClassNameFromAlign(matchAlign); - const preAlignedClassName = alignedClassName.value; - if (alignedClassName.value !== nextAlignedClassName) { - alignedClassName.value = nextAlignedClassName; - } - if (status.value === "align") { - if (preAlignedClassName !== nextAlignedClassName) { - Promise.resolve().then(() => { - forceAlign(); - }); - } else { - goNextStatus(() => { - var _a3; - (_a3 = prepareResolveRef.value) === null || _a3 === void 0 ? void 0 : _a3.call(prepareResolveRef); - }); - } - (_a2 = props4.onAlign) === null || _a2 === void 0 ? void 0 : _a2.call(props4, popupDomNode, matchAlign); - } - }; - const motion = computed(() => { - const m2 = typeof props4.animation === "object" ? props4.animation : getMotion(props4); - ["onAfterEnter", "onAfterLeave"].forEach((eventName) => { - const originFn = m2[eventName]; - m2[eventName] = (node2) => { - goNextStatus(); - status.value = "stable"; - originFn === null || originFn === void 0 ? void 0 : originFn(node2); - }; - }); - return m2; - }); - const onShowPrepare = () => { - return new Promise((resolve) => { - prepareResolveRef.value = resolve; - }); - }; - watch([motion, status], () => { - if (!motion.value && status.value === "motion") { - goNextStatus(); - } - }, { - immediate: true - }); - expose({ - forceAlign, - getElement: () => { - return elementRef.value.$el || elementRef.value; - } - }); - const alignDisabled = computed(() => { - var _a2; - if (((_a2 = props4.align) === null || _a2 === void 0 ? void 0 : _a2.points) && (status.value === "align" || status.value === "stable")) { - return false; - } - return true; - }); - return () => { - var _a2; - const { - zIndex, - align, - prefixCls, - destroyPopupOnHide, - onMouseenter, - onMouseleave, - onTouchstart = () => { - }, - onMousedown - } = props4; - const statusValue = status.value; - const mergedStyle = [_extends(_extends({}, stretchStyle.value), { - zIndex, - opacity: statusValue === "motion" || statusValue === "stable" || !visible.value ? null : 0, - // pointerEvents: statusValue === 'stable' ? null : 'none', - pointerEvents: !visible.value && statusValue !== "stable" ? "none" : null - }), attrs.style]; - let childNode = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots, { - visible: props4.visible - })); - if (childNode.length > 1) { - const _childNode = /* @__PURE__ */ function() { - return childNode; - }(); - childNode = createVNode("div", { - "class": `${prefixCls}-content` - }, [childNode]); - } - const mergedClassName = classNames_default(prefixCls, attrs.class, alignedClassName.value); - const hasAnimate = visible.value || !props4.visible; - const transitionProps = hasAnimate ? getTransitionProps(motion.value.name, motion.value) : {}; - return createVNode(Transition, _objectSpread2(_objectSpread2({ - "ref": elementRef - }, transitionProps), {}, { - "onBeforeEnter": onShowPrepare - }), { - default: () => { - return !destroyPopupOnHide || props4.visible ? withDirectives(createVNode(Align_default, { - "target": getAlignTarget(), - "key": "popup", - "ref": alignRef, - "monitorWindowResize": true, - "disabled": alignDisabled.value, - "align": align, - "onAlign": onInternalAlign - }, { - default: () => createVNode("div", { - "class": mergedClassName, - "onMouseenter": onMouseenter, - "onMouseleave": onMouseleave, - "onMousedown": withModifiers(onMousedown, ["capture"]), - [supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"]: withModifiers(onTouchstart, ["capture"]), - "style": mergedStyle - }, [childNode]) - }), [[vShow, visible.value]]) : null; - } - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-trigger/Popup/index.js -var Popup_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Popup", - inheritAttrs: false, - props: popupProps, - setup(props4, _ref) { - let { - attrs, - slots, - expose - } = _ref; - const innerVisible = shallowRef(false); - const inMobile = shallowRef(false); - const popupRef = shallowRef(); - const rootRef = shallowRef(); - watch([() => props4.visible, () => props4.mobile], () => { - innerVisible.value = props4.visible; - if (props4.visible && props4.mobile) { - inMobile.value = true; - } - }, { - immediate: true, - flush: "post" - }); - expose({ - forceAlign: () => { - var _a2; - (_a2 = popupRef.value) === null || _a2 === void 0 ? void 0 : _a2.forceAlign(); - }, - getElement: () => { - var _a2; - return (_a2 = popupRef.value) === null || _a2 === void 0 ? void 0 : _a2.getElement(); - } - }); - return () => { - const cloneProps = _extends(_extends(_extends({}, props4), attrs), { - visible: innerVisible.value - }); - const popupNode = inMobile.value ? createVNode(MobilePopupInner_default, _objectSpread2(_objectSpread2({}, cloneProps), {}, { - "mobile": props4.mobile, - "ref": popupRef - }), { - default: slots.default - }) : createVNode(PopupInner_default, _objectSpread2(_objectSpread2({}, cloneProps), {}, { - "ref": popupRef - }), { - default: slots.default - }); - return createVNode("div", { - "ref": rootRef - }, [createVNode(Mask, cloneProps, null), popupNode]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-trigger/utils/alignUtil.js -function isPointsEq(a1, a2, isAlignPoint) { - if (isAlignPoint) { - return a1[0] === a2[0]; - } - return a1[0] === a2[0] && a1[1] === a2[1]; -} -function getAlignFromPlacement(builtinPlacements, placementStr, align) { - const baseAlign = builtinPlacements[placementStr] || {}; - return _extends(_extends({}, baseAlign), align); -} -function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) { - const { - points - } = align; - const placements5 = Object.keys(builtinPlacements); - for (let i3 = 0; i3 < placements5.length; i3 += 1) { - const placement = placements5[i3]; - if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) { - return `${prefixCls}-placement-${placement}`; - } - } - return ""; -} - -// node_modules/ant-design-vue/es/_util/BaseMixin.js -var BaseMixin_default = { - methods: { - setState() { - let state = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - let callback = arguments.length > 1 ? arguments[1] : void 0; - let newState = typeof state === "function" ? state(this.$data, this.$props) : state; - if (this.getDerivedStateFromProps) { - const s2 = this.getDerivedStateFromProps(getOptionProps(this), _extends(_extends({}, this.$data), newState)); - if (s2 === null) { - return; - } else { - newState = _extends(_extends({}, newState), s2 || {}); - } - } - _extends(this.$data, newState); - if (this._.isMounted) { - this.$forceUpdate(); - } - nextTick(() => { - callback && callback(); - }); - }, - __emit() { - const args = [].slice.call(arguments, 0); - let eventName = args[0]; - eventName = `on${eventName[0].toUpperCase()}${eventName.substring(1)}`; - const event = this.$props[eventName] || this.$attrs[eventName]; - if (args.length && event) { - if (Array.isArray(event)) { - for (let i3 = 0, l2 = event.length; i3 < l2; i3++) { - event[i3](...args.slice(1)); - } - } else { - event(...args.slice(1)); - } - } - } - } -}; - -// node_modules/ant-design-vue/es/vc-trigger/context.js -var PortalContextKey = Symbol("PortalContextKey"); -var useProvidePortal = function(instance) { - let config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { - inTriggerContext: true - }; - provide(PortalContextKey, { - inTriggerContext: config.inTriggerContext, - shouldRender: computed(() => { - const { - sPopupVisible, - popupRef, - forceRender, - autoDestroy - } = instance || {}; - let shouldRender = false; - if (sPopupVisible || popupRef || forceRender) { - shouldRender = true; - } - if (!sPopupVisible && autoDestroy) { - shouldRender = false; - } - return shouldRender; - }) - }); -}; -var useInjectPortal = () => { - useProvidePortal({}, { - inTriggerContext: false - }); - const portalContext = inject(PortalContextKey, { - shouldRender: computed(() => false), - inTriggerContext: false - }); - return { - shouldRender: computed(() => portalContext.shouldRender.value || portalContext.inTriggerContext === false) - }; -}; - -// node_modules/ant-design-vue/es/_util/Portal.js -var Portal_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Portal", - inheritAttrs: false, - props: { - getContainer: vue_types_default.func.isRequired, - didUpdate: Function - }, - setup(props4, _ref) { - let { - slots - } = _ref; - let isSSR = true; - let container; - const { - shouldRender - } = useInjectPortal(); - function setContainer() { - if (shouldRender.value) { - container = props4.getContainer(); - } - } - onBeforeMount(() => { - isSSR = false; - setContainer(); - }); - onMounted(() => { - if (container) return; - setContainer(); - }); - const stopWatch = watch(shouldRender, () => { - if (shouldRender.value && !container) { - container = props4.getContainer(); - } - if (container) { - stopWatch(); - } - }); - onUpdated(() => { - nextTick(() => { - var _a2; - if (shouldRender.value) { - (_a2 = props4.didUpdate) === null || _a2 === void 0 ? void 0 : _a2.call(props4, props4); - } - }); - }); - return () => { - var _a2; - if (!shouldRender.value) return null; - if (isSSR) { - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - } - return container ? createVNode(Teleport, { - "to": container - }, slots) : null; - }; - } -}); - -// node_modules/ant-design-vue/es/_util/getScrollBarSize.js -var cached; -function getScrollBarSize(fresh) { - if (typeof document === "undefined") { - return 0; - } - if (fresh || cached === void 0) { - const inner = document.createElement("div"); - inner.style.width = "100%"; - inner.style.height = "200px"; - const outer = document.createElement("div"); - const outerStyle = outer.style; - outerStyle.position = "absolute"; - outerStyle.top = "0"; - outerStyle.left = "0"; - outerStyle.pointerEvents = "none"; - outerStyle.visibility = "hidden"; - outerStyle.width = "200px"; - outerStyle.height = "150px"; - outerStyle.overflow = "hidden"; - outer.appendChild(inner); - document.body.appendChild(outer); - const widthContained = inner.offsetWidth; - outer.style.overflow = "scroll"; - let widthScroll = inner.offsetWidth; - if (widthContained === widthScroll) { - widthScroll = outer.clientWidth; - } - document.body.removeChild(outer); - cached = widthContained - widthScroll; - } - return cached; -} -function ensureSize(str) { - const match3 = str.match(/^(.*)px$/); - const value = Number(match3 === null || match3 === void 0 ? void 0 : match3[1]); - return Number.isNaN(value) ? getScrollBarSize() : value; -} -function getTargetScrollBarSize(target) { - if (typeof document === "undefined" || !target || !(target instanceof Element)) { - return { - width: 0, - height: 0 - }; - } - const { - width, - height - } = getComputedStyle(target, "::-webkit-scrollbar"); - return { - width: ensureSize(width), - height: ensureSize(height) - }; -} - -// node_modules/ant-design-vue/es/_util/hooks/useScrollLocker.js -var UNIQUE_ID = `vc-util-locker-${Date.now()}`; -var uuid2 = 0; -function isBodyOverflowing() { - return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; -} -function useScrollLocker(lock) { - const mergedLock = computed(() => !!lock && !!lock.value); - uuid2 += 1; - const id = `${UNIQUE_ID}_${uuid2}`; - watchEffect((onClear) => { - if (!canUseDom_default()) { - return; - } - if (mergedLock.value) { - const scrollbarSize = getScrollBarSize(); - const isOverflow = isBodyOverflowing(); - updateCSS(` -html body { - overflow-y: hidden; - ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ""} -}`, id); - } else { - removeCSS(id); - } - onClear(() => { - removeCSS(id); - }); - }, { - flush: "post" - }); -} - -// node_modules/ant-design-vue/es/_util/PortalWrapper.js -var openCount = 0; -var supportDom = canUseDom_default(); -var getParent3 = (getContainer3) => { - if (!supportDom) { - return null; - } - if (getContainer3) { - if (typeof getContainer3 === "string") { - return document.querySelectorAll(getContainer3)[0]; - } - if (typeof getContainer3 === "function") { - return getContainer3(); - } - if (typeof getContainer3 === "object" && getContainer3 instanceof window.HTMLElement) { - return getContainer3; - } - } - return document.body; -}; -var PortalWrapper_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PortalWrapper", - inheritAttrs: false, - props: { - wrapperClassName: String, - forceRender: { - type: Boolean, - default: void 0 - }, - getContainer: vue_types_default.any, - visible: { - type: Boolean, - default: void 0 - }, - autoLock: booleanType(), - didUpdate: Function - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const container = shallowRef(); - const componentRef = shallowRef(); - const rafId = shallowRef(); - const triggerUpdate = shallowRef(1); - const defaultContainer2 = canUseDom_default() && document.createElement("div"); - const removeCurrentContainer = () => { - var _a2, _b; - if (container.value === defaultContainer2) { - (_b = (_a2 = container.value) === null || _a2 === void 0 ? void 0 : _a2.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(container.value); - } - container.value = null; - }; - let parent2 = null; - const attachToParent = function() { - let force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - if (force || container.value && !container.value.parentNode) { - parent2 = getParent3(props4.getContainer); - if (parent2) { - parent2.appendChild(container.value); - return true; - } - return false; - } - return true; - }; - const getContainer3 = () => { - if (!supportDom) { - return null; - } - if (!container.value) { - container.value = defaultContainer2; - attachToParent(true); - } - setWrapperClassName(); - return container.value; - }; - const setWrapperClassName = () => { - const { - wrapperClassName - } = props4; - if (container.value && wrapperClassName && wrapperClassName !== container.value.className) { - container.value.className = wrapperClassName; - } - }; - onUpdated(() => { - setWrapperClassName(); - attachToParent(); - }); - useScrollLocker(computed(() => { - return props4.autoLock && props4.visible && canUseDom_default() && (container.value === document.body || container.value === defaultContainer2); - })); - onMounted(() => { - let init = false; - watch([() => props4.visible, () => props4.getContainer], (_ref2, _ref3) => { - let [visible, getContainer4] = _ref2; - let [prevVisible, prevGetContainer] = _ref3; - if (supportDom) { - parent2 = getParent3(props4.getContainer); - if (parent2 === document.body) { - if (visible && !prevVisible) { - openCount += 1; - } else if (init) { - openCount -= 1; - } - } - } - if (init) { - const getContainerIsFunc = typeof getContainer4 === "function" && typeof prevGetContainer === "function"; - if (getContainerIsFunc ? getContainer4.toString() !== prevGetContainer.toString() : getContainer4 !== prevGetContainer) { - removeCurrentContainer(); - } - } - init = true; - }, { - immediate: true, - flush: "post" - }); - nextTick(() => { - if (!attachToParent()) { - rafId.value = wrapperRaf(() => { - triggerUpdate.value += 1; - }); - } - }); - }); - onBeforeUnmount(() => { - const { - visible - } = props4; - if (supportDom && parent2 === document.body) { - openCount = visible && openCount ? openCount - 1 : openCount; - } - removeCurrentContainer(); - wrapperRaf.cancel(rafId.value); - }); - return () => { - const { - forceRender, - visible - } = props4; - let portal = null; - const childProps = { - getOpenCount: () => openCount, - getContainer: getContainer3 - }; - if (triggerUpdate.value && (forceRender || visible || componentRef.value)) { - portal = createVNode(Portal_default, { - "getContainer": getContainer3, - "ref": componentRef, - "didUpdate": props4.didUpdate - }, { - default: () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots, childProps); - } - }); - } - return portal; - }; - } -}); - -// node_modules/ant-design-vue/es/vc-trigger/Trigger.js -var ALL_HANDLERS = ["onClick", "onMousedown", "onTouchstart", "onMouseenter", "onMouseleave", "onFocus", "onBlur", "onContextmenu"]; -var Trigger_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Trigger", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: triggerProps(), - setup(props4) { - const align = computed(() => { - const { - popupPlacement, - popupAlign, - builtinPlacements - } = props4; - if (popupPlacement && builtinPlacements) { - return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign); - } - return popupAlign; - }); - const popupRef = shallowRef(null); - const setPopupRef = (val) => { - popupRef.value = val; - }; - return { - vcTriggerContext: inject("vcTriggerContext", {}), - popupRef, - setPopupRef, - triggerRef: shallowRef(null), - align, - focusTime: null, - clickOutsideHandler: null, - contextmenuOutsideHandler1: null, - contextmenuOutsideHandler2: null, - touchOutsideHandler: null, - attachId: null, - delayTimer: null, - hasPopupMouseDown: false, - preClickTime: null, - preTouchTime: null, - mouseDownTimeout: null, - childOriginEvents: {} - }; - }, - data() { - const props4 = this.$props; - let popupVisible; - if (this.popupVisible !== void 0) { - popupVisible = !!props4.popupVisible; - } else { - popupVisible = !!props4.defaultPopupVisible; - } - ALL_HANDLERS.forEach((h3) => { - this[`fire${h3}`] = (e3) => { - this.fireEvents(h3, e3); - }; - }); - return { - prevPopupVisible: popupVisible, - sPopupVisible: popupVisible, - point: null - }; - }, - watch: { - popupVisible(val) { - if (val !== void 0) { - this.prevPopupVisible = this.sPopupVisible; - this.sPopupVisible = val; - } - } - }, - created() { - provide("vcTriggerContext", { - onPopupMouseDown: this.onPopupMouseDown, - onPopupMouseenter: this.onPopupMouseenter, - onPopupMouseleave: this.onPopupMouseleave - }); - useProvidePortal(this); - }, - deactivated() { - this.setPopupVisible(false); - }, - mounted() { - this.$nextTick(() => { - this.updatedCal(); - }); - }, - updated() { - this.$nextTick(() => { - this.updatedCal(); - }); - }, - beforeUnmount() { - this.clearDelayTimer(); - this.clearOutsideHandler(); - clearTimeout(this.mouseDownTimeout); - wrapperRaf.cancel(this.attachId); - }, - methods: { - updatedCal() { - const props4 = this.$props; - const state = this.$data; - if (state.sPopupVisible) { - let currentDocument; - if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextmenuToShow())) { - currentDocument = props4.getDocument(this.getRootDomNode()); - this.clickOutsideHandler = addEventListenerWrap(currentDocument, "mousedown", this.onDocumentClick); - } - if (!this.touchOutsideHandler) { - currentDocument = currentDocument || props4.getDocument(this.getRootDomNode()); - this.touchOutsideHandler = addEventListenerWrap(currentDocument, "touchstart", this.onDocumentClick, supportsPassive_default ? { - passive: false - } : false); - } - if (!this.contextmenuOutsideHandler1 && this.isContextmenuToShow()) { - currentDocument = currentDocument || props4.getDocument(this.getRootDomNode()); - this.contextmenuOutsideHandler1 = addEventListenerWrap(currentDocument, "scroll", this.onContextmenuClose); - } - if (!this.contextmenuOutsideHandler2 && this.isContextmenuToShow()) { - this.contextmenuOutsideHandler2 = addEventListenerWrap(window, "blur", this.onContextmenuClose); - } - } else { - this.clearOutsideHandler(); - } - }, - onMouseenter(e3) { - const { - mouseEnterDelay - } = this.$props; - this.fireEvents("onMouseenter", e3); - this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e3); - }, - onMouseMove(e3) { - this.fireEvents("onMousemove", e3); - this.setPoint(e3); - }, - onMouseleave(e3) { - this.fireEvents("onMouseleave", e3); - this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay); - }, - onPopupMouseenter() { - const { - vcTriggerContext = {} - } = this; - if (vcTriggerContext.onPopupMouseenter) { - vcTriggerContext.onPopupMouseenter(); - } - this.clearDelayTimer(); - }, - onPopupMouseleave(e3) { - var _a2; - if (e3 && e3.relatedTarget && !e3.relatedTarget.setTimeout && contains((_a2 = this.popupRef) === null || _a2 === void 0 ? void 0 : _a2.getElement(), e3.relatedTarget)) { - return; - } - if (this.isMouseLeaveToHide()) { - this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay); - } - const { - vcTriggerContext = {} - } = this; - if (vcTriggerContext.onPopupMouseleave) { - vcTriggerContext.onPopupMouseleave(e3); - } - }, - onFocus(e3) { - this.fireEvents("onFocus", e3); - this.clearDelayTimer(); - if (this.isFocusToShow()) { - this.focusTime = Date.now(); - this.delaySetPopupVisible(true, this.$props.focusDelay); - } - }, - onMousedown(e3) { - this.fireEvents("onMousedown", e3); - this.preClickTime = Date.now(); - }, - onTouchstart(e3) { - this.fireEvents("onTouchstart", e3); - this.preTouchTime = Date.now(); - }, - onBlur(e3) { - if (!contains(e3.target, e3.relatedTarget || document.activeElement)) { - this.fireEvents("onBlur", e3); - this.clearDelayTimer(); - if (this.isBlurToHide()) { - this.delaySetPopupVisible(false, this.$props.blurDelay); - } - } - }, - onContextmenu(e3) { - e3.preventDefault(); - this.fireEvents("onContextmenu", e3); - this.setPopupVisible(true, e3); - }, - onContextmenuClose() { - if (this.isContextmenuToShow()) { - this.close(); - } - }, - onClick(event) { - this.fireEvents("onClick", event); - if (this.focusTime) { - let preTime; - if (this.preClickTime && this.preTouchTime) { - preTime = Math.min(this.preClickTime, this.preTouchTime); - } else if (this.preClickTime) { - preTime = this.preClickTime; - } else if (this.preTouchTime) { - preTime = this.preTouchTime; - } - if (Math.abs(preTime - this.focusTime) < 20) { - return; - } - this.focusTime = 0; - } - this.preClickTime = 0; - this.preTouchTime = 0; - if (this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && event && event.preventDefault) { - event.preventDefault(); - } - if (event && event.domEvent) { - event.domEvent.preventDefault(); - } - const nextVisible = !this.$data.sPopupVisible; - if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) { - this.setPopupVisible(!this.$data.sPopupVisible, event); - } - }, - onPopupMouseDown() { - const { - vcTriggerContext = {} - } = this; - this.hasPopupMouseDown = true; - clearTimeout(this.mouseDownTimeout); - this.mouseDownTimeout = setTimeout(() => { - this.hasPopupMouseDown = false; - }, 0); - if (vcTriggerContext.onPopupMouseDown) { - vcTriggerContext.onPopupMouseDown(...arguments); - } - }, - onDocumentClick(event) { - if (this.$props.mask && !this.$props.maskClosable) { - return; - } - const target = event.target; - const root2 = this.getRootDomNode(); - const popupNode = this.getPopupDomNode(); - if ( - // mousedown on the target should also close popup when action is contextMenu. - // https://github.com/ant-design/ant-design/issues/29853 - (!contains(root2, target) || this.isContextMenuOnly()) && !contains(popupNode, target) && !this.hasPopupMouseDown - ) { - this.delaySetPopupVisible(false, 0.1); - } - }, - getPopupDomNode() { - var _a2; - return ((_a2 = this.popupRef) === null || _a2 === void 0 ? void 0 : _a2.getElement()) || null; - }, - getRootDomNode() { - var _a2, _b, _c, _d; - const { - getTriggerDOMNode - } = this.$props; - if (getTriggerDOMNode) { - const domNode = ((_b = (_a2 = this.triggerRef) === null || _a2 === void 0 ? void 0 : _a2.$el) === null || _b === void 0 ? void 0 : _b.nodeName) === "#comment" ? null : findDOMNode(this.triggerRef); - return findDOMNode(getTriggerDOMNode(domNode)); - } - try { - const domNode = ((_d = (_c = this.triggerRef) === null || _c === void 0 ? void 0 : _c.$el) === null || _d === void 0 ? void 0 : _d.nodeName) === "#comment" ? null : findDOMNode(this.triggerRef); - if (domNode) { - return domNode; - } - } catch (err) { - } - return findDOMNode(this); - }, - handleGetPopupClassFromAlign(align) { - const className = []; - const props4 = this.$props; - const { - popupPlacement, - builtinPlacements, - prefixCls, - alignPoint: alignPoint2, - getPopupClassNameFromAlign - } = props4; - if (popupPlacement && builtinPlacements) { - className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint2)); - } - if (getPopupClassNameFromAlign) { - className.push(getPopupClassNameFromAlign(align)); - } - return className.join(" "); - }, - getPopupAlign() { - const props4 = this.$props; - const { - popupPlacement, - popupAlign, - builtinPlacements - } = props4; - if (popupPlacement && builtinPlacements) { - return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign); - } - return popupAlign; - }, - getComponent() { - const mouseProps = {}; - if (this.isMouseEnterToShow()) { - mouseProps.onMouseenter = this.onPopupMouseenter; - } - if (this.isMouseLeaveToHide()) { - mouseProps.onMouseleave = this.onPopupMouseleave; - } - mouseProps.onMousedown = this.onPopupMouseDown; - mouseProps[supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"] = this.onPopupMouseDown; - const { - handleGetPopupClassFromAlign, - getRootDomNode, - $attrs - } = this; - const { - prefixCls, - destroyPopupOnHide, - popupClassName, - popupAnimation, - popupTransitionName, - popupStyle, - mask, - maskAnimation, - maskTransitionName, - zIndex, - stretch, - alignPoint: alignPoint2, - mobile, - forceRender - } = this.$props; - const { - sPopupVisible, - point - } = this.$data; - const popupProps2 = _extends(_extends({ - prefixCls, - destroyPopupOnHide, - visible: sPopupVisible, - point: alignPoint2 ? point : null, - align: this.align, - animation: popupAnimation, - getClassNameFromAlign: handleGetPopupClassFromAlign, - stretch, - getRootDomNode, - mask, - zIndex, - transitionName: popupTransitionName, - maskAnimation, - maskTransitionName, - class: popupClassName, - style: popupStyle, - onAlign: $attrs.onPopupAlign || noop4 - }, mouseProps), { - ref: this.setPopupRef, - mobile, - forceRender - }); - return createVNode(Popup_default, popupProps2, { - default: this.$slots.popup || (() => getComponent(this, "popup")) - }); - }, - attachParent(popupContainer) { - wrapperRaf.cancel(this.attachId); - const { - getPopupContainer, - getDocument: getDocument2 - } = this.$props; - const domNode = this.getRootDomNode(); - let mountNode; - if (!getPopupContainer) { - mountNode = getDocument2(this.getRootDomNode()).body; - } else if (domNode || getPopupContainer.length === 0) { - mountNode = getPopupContainer(domNode); - } - if (mountNode) { - mountNode.appendChild(popupContainer); - } else { - this.attachId = wrapperRaf(() => { - this.attachParent(popupContainer); - }); - } - }, - getContainer() { - const { - $props: props4 - } = this; - const { - getDocument: getDocument2 - } = props4; - const popupContainer = getDocument2(this.getRootDomNode()).createElement("div"); - popupContainer.style.position = "absolute"; - popupContainer.style.top = "0"; - popupContainer.style.left = "0"; - popupContainer.style.width = "100%"; - this.attachParent(popupContainer); - return popupContainer; - }, - setPopupVisible(sPopupVisible, event) { - const { - alignPoint: alignPoint2, - sPopupVisible: prevPopupVisible, - onPopupVisibleChange - } = this; - this.clearDelayTimer(); - if (prevPopupVisible !== sPopupVisible) { - if (!hasProp(this, "popupVisible")) { - this.setState({ - sPopupVisible, - prevPopupVisible - }); - } - onPopupVisibleChange && onPopupVisibleChange(sPopupVisible); - } - if (alignPoint2 && event && sPopupVisible) { - this.setPoint(event); - } - }, - setPoint(point) { - const { - alignPoint: alignPoint2 - } = this.$props; - if (!alignPoint2 || !point) return; - this.setState({ - point: { - pageX: point.pageX, - pageY: point.pageY - } - }); - }, - handlePortalUpdate() { - if (this.prevPopupVisible !== this.sPopupVisible) { - this.afterPopupVisibleChange(this.sPopupVisible); - } - }, - delaySetPopupVisible(visible, delayS, event) { - const delay2 = delayS * 1e3; - this.clearDelayTimer(); - if (delay2) { - const point = event ? { - pageX: event.pageX, - pageY: event.pageY - } : null; - this.delayTimer = setTimeout(() => { - this.setPopupVisible(visible, point); - this.clearDelayTimer(); - }, delay2); - } else { - this.setPopupVisible(visible, event); - } - }, - clearDelayTimer() { - if (this.delayTimer) { - clearTimeout(this.delayTimer); - this.delayTimer = null; - } - }, - clearOutsideHandler() { - if (this.clickOutsideHandler) { - this.clickOutsideHandler.remove(); - this.clickOutsideHandler = null; - } - if (this.contextmenuOutsideHandler1) { - this.contextmenuOutsideHandler1.remove(); - this.contextmenuOutsideHandler1 = null; - } - if (this.contextmenuOutsideHandler2) { - this.contextmenuOutsideHandler2.remove(); - this.contextmenuOutsideHandler2 = null; - } - if (this.touchOutsideHandler) { - this.touchOutsideHandler.remove(); - this.touchOutsideHandler = null; - } - }, - createTwoChains(event) { - let fn = () => { - }; - const events2 = getEvents(this); - if (this.childOriginEvents[event] && events2[event]) { - return this[`fire${event}`]; - } - fn = this.childOriginEvents[event] || events2[event] || fn; - return fn; - }, - isClickToShow() { - const { - action, - showAction - } = this.$props; - return action.indexOf("click") !== -1 || showAction.indexOf("click") !== -1; - }, - isContextMenuOnly() { - const { - action - } = this.$props; - return action === "contextmenu" || action.length === 1 && action[0] === "contextmenu"; - }, - isContextmenuToShow() { - const { - action, - showAction - } = this.$props; - return action.indexOf("contextmenu") !== -1 || showAction.indexOf("contextmenu") !== -1; - }, - isClickToHide() { - const { - action, - hideAction - } = this.$props; - return action.indexOf("click") !== -1 || hideAction.indexOf("click") !== -1; - }, - isMouseEnterToShow() { - const { - action, - showAction - } = this.$props; - return action.indexOf("hover") !== -1 || showAction.indexOf("mouseenter") !== -1; - }, - isMouseLeaveToHide() { - const { - action, - hideAction - } = this.$props; - return action.indexOf("hover") !== -1 || hideAction.indexOf("mouseleave") !== -1; - }, - isFocusToShow() { - const { - action, - showAction - } = this.$props; - return action.indexOf("focus") !== -1 || showAction.indexOf("focus") !== -1; - }, - isBlurToHide() { - const { - action, - hideAction - } = this.$props; - return action.indexOf("focus") !== -1 || hideAction.indexOf("blur") !== -1; - }, - forcePopupAlign() { - var _a2; - if (this.$data.sPopupVisible) { - (_a2 = this.popupRef) === null || _a2 === void 0 ? void 0 : _a2.forceAlign(); - } - }, - fireEvents(type4, e3) { - if (this.childOriginEvents[type4]) { - this.childOriginEvents[type4](e3); - } - const event = this.$props[type4] || this.$attrs[type4]; - if (event) { - event(e3); - } - }, - close() { - this.setPopupVisible(false); - } - }, - render() { - const { - $attrs - } = this; - const children = filterEmpty(getSlot(this)); - const { - alignPoint: alignPoint2, - getPopupContainer - } = this.$props; - const child = children[0]; - this.childOriginEvents = getEvents(child); - const newChildProps = { - key: "trigger" - }; - if (this.isContextmenuToShow()) { - newChildProps.onContextmenu = this.onContextmenu; - } else { - newChildProps.onContextmenu = this.createTwoChains("onContextmenu"); - } - if (this.isClickToHide() || this.isClickToShow()) { - newChildProps.onClick = this.onClick; - newChildProps.onMousedown = this.onMousedown; - newChildProps[supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"] = this.onTouchstart; - } else { - newChildProps.onClick = this.createTwoChains("onClick"); - newChildProps.onMousedown = this.createTwoChains("onMousedown"); - newChildProps[supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"] = this.createTwoChains("onTouchstart"); - } - if (this.isMouseEnterToShow()) { - newChildProps.onMouseenter = this.onMouseenter; - if (alignPoint2) { - newChildProps.onMousemove = this.onMouseMove; - } - } else { - newChildProps.onMouseenter = this.createTwoChains("onMouseenter"); - } - if (this.isMouseLeaveToHide()) { - newChildProps.onMouseleave = this.onMouseleave; - } else { - newChildProps.onMouseleave = this.createTwoChains("onMouseleave"); - } - if (this.isFocusToShow() || this.isBlurToHide()) { - newChildProps.onFocus = this.onFocus; - newChildProps.onBlur = this.onBlur; - } else { - newChildProps.onFocus = this.createTwoChains("onFocus"); - newChildProps.onBlur = (e3) => { - if (e3 && (!e3.relatedTarget || !contains(e3.target, e3.relatedTarget))) { - this.createTwoChains("onBlur")(e3); - } - }; - } - const childrenClassName = classNames_default(child && child.props && child.props.class, $attrs.class); - if (childrenClassName) { - newChildProps.class = childrenClassName; - } - const trigger2 = cloneElement(child, _extends(_extends({}, newChildProps), { - ref: "triggerRef" - }), true, true); - const portal = createVNode(PortalWrapper_default, { - "key": "portal", - "getContainer": getPopupContainer && (() => getPopupContainer(this.getRootDomNode())), - "didUpdate": this.handlePortalUpdate, - "visible": this.$data.sPopupVisible - }, { - default: this.getComponent - }); - return createVNode(Fragment, null, [trigger2, portal]); - } -}); - -// node_modules/ant-design-vue/es/vc-trigger/index.js -var vc_trigger_default = Trigger_default; - -// node_modules/ant-design-vue/es/vc-select/SelectTrigger.js -var __rest3 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var getBuiltInPlacements = (dropdownMatchSelectWidth) => { - const adjustX = dropdownMatchSelectWidth === true ? 0 : 1; - return { - bottomLeft: { - points: ["tl", "bl"], - offset: [0, 4], - overflow: { - adjustX, - adjustY: 1 - } - }, - bottomRight: { - points: ["tr", "br"], - offset: [0, 4], - overflow: { - adjustX, - adjustY: 1 - } - }, - topLeft: { - points: ["bl", "tl"], - offset: [0, -4], - overflow: { - adjustX, - adjustY: 1 - } - }, - topRight: { - points: ["br", "tr"], - offset: [0, -4], - overflow: { - adjustX, - adjustY: 1 - } - } - }; -}; -var SelectTrigger = defineComponent({ - name: "SelectTrigger", - inheritAttrs: false, - props: { - dropdownAlign: Object, - visible: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - dropdownClassName: String, - dropdownStyle: vue_types_default.object, - placement: String, - empty: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - popupClassName: String, - animation: String, - transitionName: String, - getPopupContainer: Function, - dropdownRender: Function, - containerWidth: Number, - dropdownMatchSelectWidth: vue_types_default.oneOfType([Number, Boolean]).def(true), - popupElement: vue_types_default.any, - direction: String, - getTriggerDOMNode: Function, - onPopupVisibleChange: Function, - onPopupMouseEnter: Function, - onPopupFocusin: Function, - onPopupFocusout: Function - }, - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const builtInPlacements = computed(() => { - const { - dropdownMatchSelectWidth - } = props4; - return getBuiltInPlacements(dropdownMatchSelectWidth); - }); - const popupRef = ref(); - expose({ - getPopupElement: () => { - return popupRef.value; - } - }); - return () => { - const _a2 = _extends(_extends({}, props4), attrs), { - empty: empty2 = false - } = _a2, restProps = __rest3(_a2, ["empty"]); - const { - visible, - dropdownAlign, - prefixCls, - popupElement, - dropdownClassName, - dropdownStyle, - direction = "ltr", - placement, - dropdownMatchSelectWidth, - containerWidth, - dropdownRender, - animation, - transitionName: transitionName2, - getPopupContainer, - getTriggerDOMNode, - onPopupVisibleChange, - onPopupMouseEnter, - onPopupFocusin, - onPopupFocusout - } = restProps; - const dropdownPrefixCls = `${prefixCls}-dropdown`; - let popupNode = popupElement; - if (dropdownRender) { - popupNode = dropdownRender({ - menuNode: popupElement, - props: props4 - }); - } - const mergedTransitionName = animation ? `${dropdownPrefixCls}-${animation}` : transitionName2; - const popupStyle = _extends({ - minWidth: `${containerWidth}px` - }, dropdownStyle); - if (typeof dropdownMatchSelectWidth === "number") { - popupStyle.width = `${dropdownMatchSelectWidth}px`; - } else if (dropdownMatchSelectWidth) { - popupStyle.width = `${containerWidth}px`; - } - return createVNode(vc_trigger_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "showAction": onPopupVisibleChange ? ["click"] : [], - "hideAction": onPopupVisibleChange ? ["click"] : [], - "popupPlacement": placement || (direction === "rtl" ? "bottomRight" : "bottomLeft"), - "builtinPlacements": builtInPlacements.value, - "prefixCls": dropdownPrefixCls, - "popupTransitionName": mergedTransitionName, - "popupAlign": dropdownAlign, - "popupVisible": visible, - "getPopupContainer": getPopupContainer, - "popupClassName": classNames_default(dropdownClassName, { - [`${dropdownPrefixCls}-empty`]: empty2 - }), - "popupStyle": popupStyle, - "getTriggerDOMNode": getTriggerDOMNode, - "onPopupVisibleChange": onPopupVisibleChange - }), { - default: slots.default, - popup: () => createVNode("div", { - "ref": popupRef, - "onMouseenter": onPopupMouseEnter, - "onFocusin": onPopupFocusin, - "onFocusout": onPopupFocusout - }, [popupNode]) - }); - }; - } -}); -var SelectTrigger_default = SelectTrigger; - -// node_modules/ant-design-vue/es/_util/KeyCode.js -var KeyCode = { - /** - * MAC_ENTER - */ - MAC_ENTER: 3, - /** - * BACKSPACE - */ - BACKSPACE: 8, - /** - * TAB - */ - TAB: 9, - /** - * NUMLOCK on FF/Safari Mac - */ - NUM_CENTER: 12, - /** - * ENTER - */ - ENTER: 13, - /** - * SHIFT - */ - SHIFT: 16, - /** - * CTRL - */ - CTRL: 17, - /** - * ALT - */ - ALT: 18, - /** - * PAUSE - */ - PAUSE: 19, - /** - * CAPS_LOCK - */ - CAPS_LOCK: 20, - /** - * ESC - */ - ESC: 27, - /** - * SPACE - */ - SPACE: 32, - /** - * PAGE_UP - */ - PAGE_UP: 33, - /** - * PAGE_DOWN - */ - PAGE_DOWN: 34, - /** - * END - */ - END: 35, - /** - * HOME - */ - HOME: 36, - /** - * LEFT - */ - LEFT: 37, - /** - * UP - */ - UP: 38, - /** - * RIGHT - */ - RIGHT: 39, - /** - * DOWN - */ - DOWN: 40, - /** - * PRINT_SCREEN - */ - PRINT_SCREEN: 44, - /** - * INSERT - */ - INSERT: 45, - /** - * DELETE - */ - DELETE: 46, - /** - * ZERO - */ - ZERO: 48, - /** - * ONE - */ - ONE: 49, - /** - * TWO - */ - TWO: 50, - /** - * THREE - */ - THREE: 51, - /** - * FOUR - */ - FOUR: 52, - /** - * FIVE - */ - FIVE: 53, - /** - * SIX - */ - SIX: 54, - /** - * SEVEN - */ - SEVEN: 55, - /** - * EIGHT - */ - EIGHT: 56, - /** - * NINE - */ - NINE: 57, - /** - * QUESTION_MARK - */ - QUESTION_MARK: 63, - /** - * A - */ - A: 65, - /** - * B - */ - B: 66, - /** - * C - */ - C: 67, - /** - * D - */ - D: 68, - /** - * E - */ - E: 69, - /** - * F - */ - F: 70, - /** - * G - */ - G: 71, - /** - * H - */ - H: 72, - /** - * I - */ - I: 73, - /** - * J - */ - J: 74, - /** - * K - */ - K: 75, - /** - * L - */ - L: 76, - /** - * M - */ - M: 77, - /** - * N - */ - N: 78, - /** - * O - */ - O: 79, - /** - * P - */ - P: 80, - /** - * Q - */ - Q: 81, - /** - * R - */ - R: 82, - /** - * S - */ - S: 83, - /** - * T - */ - T: 84, - /** - * U - */ - U: 85, - /** - * V - */ - V: 86, - /** - * W - */ - W: 87, - /** - * X - */ - X: 88, - /** - * Y - */ - Y: 89, - /** - * Z - */ - Z: 90, - /** - * META - */ - META: 91, - /** - * WIN_KEY_RIGHT - */ - WIN_KEY_RIGHT: 92, - /** - * CONTEXT_MENU - */ - CONTEXT_MENU: 93, - /** - * NUM_ZERO - */ - NUM_ZERO: 96, - /** - * NUM_ONE - */ - NUM_ONE: 97, - /** - * NUM_TWO - */ - NUM_TWO: 98, - /** - * NUM_THREE - */ - NUM_THREE: 99, - /** - * NUM_FOUR - */ - NUM_FOUR: 100, - /** - * NUM_FIVE - */ - NUM_FIVE: 101, - /** - * NUM_SIX - */ - NUM_SIX: 102, - /** - * NUM_SEVEN - */ - NUM_SEVEN: 103, - /** - * NUM_EIGHT - */ - NUM_EIGHT: 104, - /** - * NUM_NINE - */ - NUM_NINE: 105, - /** - * NUM_MULTIPLY - */ - NUM_MULTIPLY: 106, - /** - * NUM_PLUS - */ - NUM_PLUS: 107, - /** - * NUM_MINUS - */ - NUM_MINUS: 109, - /** - * NUM_PERIOD - */ - NUM_PERIOD: 110, - /** - * NUM_DIVISION - */ - NUM_DIVISION: 111, - /** - * F1 - */ - F1: 112, - /** - * F2 - */ - F2: 113, - /** - * F3 - */ - F3: 114, - /** - * F4 - */ - F4: 115, - /** - * F5 - */ - F5: 116, - /** - * F6 - */ - F6: 117, - /** - * F7 - */ - F7: 118, - /** - * F8 - */ - F8: 119, - /** - * F9 - */ - F9: 120, - /** - * F10 - */ - F10: 121, - /** - * F11 - */ - F11: 122, - /** - * F12 - */ - F12: 123, - /** - * NUMLOCK - */ - NUMLOCK: 144, - /** - * SEMICOLON - */ - SEMICOLON: 186, - /** - * DASH - */ - DASH: 189, - /** - * EQUALS - */ - EQUALS: 187, - /** - * COMMA - */ - COMMA: 188, - /** - * PERIOD - */ - PERIOD: 190, - /** - * SLASH - */ - SLASH: 191, - /** - * APOSTROPHE - */ - APOSTROPHE: 192, - /** - * SINGLE_QUOTE - */ - SINGLE_QUOTE: 222, - /** - * OPEN_SQUARE_BRACKET - */ - OPEN_SQUARE_BRACKET: 219, - /** - * BACKSLASH - */ - BACKSLASH: 220, - /** - * CLOSE_SQUARE_BRACKET - */ - CLOSE_SQUARE_BRACKET: 221, - /** - * WIN_KEY - */ - WIN_KEY: 224, - /** - * MAC_FF_META - */ - MAC_FF_META: 224, - /** - * WIN_IME - */ - WIN_IME: 229, - // ======================== Function ======================== - /** - * whether text and modified key is entered at the same time. - */ - isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e3) { - const { - keyCode - } = e3; - if (e3.altKey && !e3.ctrlKey || e3.metaKey || // Function keys don't generate text - keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) { - return false; - } - switch (keyCode) { - case KeyCode.ALT: - case KeyCode.CAPS_LOCK: - case KeyCode.CONTEXT_MENU: - case KeyCode.CTRL: - case KeyCode.DOWN: - case KeyCode.END: - case KeyCode.ESC: - case KeyCode.HOME: - case KeyCode.INSERT: - case KeyCode.LEFT: - case KeyCode.MAC_FF_META: - case KeyCode.META: - case KeyCode.NUMLOCK: - case KeyCode.NUM_CENTER: - case KeyCode.PAGE_DOWN: - case KeyCode.PAGE_UP: - case KeyCode.PAUSE: - case KeyCode.PRINT_SCREEN: - case KeyCode.RIGHT: - case KeyCode.SHIFT: - case KeyCode.UP: - case KeyCode.WIN_KEY: - case KeyCode.WIN_KEY_RIGHT: - return false; - default: - return true; - } - }, - /** - * whether character is entered. - */ - isCharacterKey: function isCharacterKey(keyCode) { - if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) { - return true; - } - if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) { - return true; - } - if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) { - return true; - } - if (window.navigator.userAgent.indexOf("WebKit") !== -1 && keyCode === 0) { - return true; - } - switch (keyCode) { - case KeyCode.SPACE: - case KeyCode.QUESTION_MARK: - case KeyCode.NUM_PLUS: - case KeyCode.NUM_MINUS: - case KeyCode.NUM_PERIOD: - case KeyCode.NUM_DIVISION: - case KeyCode.SEMICOLON: - case KeyCode.DASH: - case KeyCode.EQUALS: - case KeyCode.COMMA: - case KeyCode.PERIOD: - case KeyCode.SLASH: - case KeyCode.APOSTROPHE: - case KeyCode.SINGLE_QUOTE: - case KeyCode.OPEN_SQUARE_BRACKET: - case KeyCode.BACKSLASH: - case KeyCode.CLOSE_SQUARE_BRACKET: - return true; - default: - return false; - } - } -}; -var KeyCode_default = KeyCode; - -// node_modules/ant-design-vue/es/vc-select/TransBtn.js -var TransBtn = (props4, _ref) => { - let { - slots - } = _ref; - var _a2; - const { - class: className, - customizeIcon, - customizeIconProps, - onMousedown, - onClick - } = props4; - let icon; - if (typeof customizeIcon === "function") { - icon = customizeIcon(customizeIconProps); - } else { - icon = customizeIcon; - } - return createVNode("span", { - "class": className, - "onMousedown": (event) => { - event.preventDefault(); - if (onMousedown) { - onMousedown(event); - } - }, - "style": { - userSelect: "none", - WebkitUserSelect: "none" - }, - "unselectable": "on", - "onClick": onClick, - "aria-hidden": true - }, [icon !== void 0 ? icon : createVNode("span", { - "class": className.split(/\s+/).map((cls) => `${cls}-icon`) - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])]); -}; -TransBtn.inheritAttrs = false; -TransBtn.displayName = "TransBtn"; -TransBtn.props = { - class: String, - customizeIcon: vue_types_default.any, - customizeIconProps: vue_types_default.any, - onMousedown: Function, - onClick: Function -}; -var TransBtn_default = TransBtn; - -// node_modules/ant-design-vue/es/_util/antInputDirective.js -function onCompositionStart(e3) { - e3.target.composing = true; -} -function onCompositionEnd(e3) { - if (!e3.target.composing) return; - e3.target.composing = false; - trigger(e3.target, "input"); -} -function trigger(el, type4) { - const e3 = document.createEvent("HTMLEvents"); - e3.initEvent(type4, true, true); - el.dispatchEvent(e3); -} -function addEventListener(el, event, handler2, options) { - el.addEventListener(event, handler2, options); -} -var antInput = { - created(el, binding) { - if (!binding.modifiers || !binding.modifiers.lazy) { - addEventListener(el, "compositionstart", onCompositionStart); - addEventListener(el, "compositionend", onCompositionEnd); - addEventListener(el, "change", onCompositionEnd); - } - } -}; -var antInputDirective_default = antInput; - -// node_modules/ant-design-vue/es/vc-select/Selector/Input.js -var inputProps = { - inputRef: vue_types_default.any, - prefixCls: String, - id: String, - inputElement: vue_types_default.VueNode, - disabled: { - type: Boolean, - default: void 0 - }, - autofocus: { - type: Boolean, - default: void 0 - }, - autocomplete: String, - editable: { - type: Boolean, - default: void 0 - }, - activeDescendantId: String, - value: String, - open: { - type: Boolean, - default: void 0 - }, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - /** Pass accessibility props to input */ - attrs: vue_types_default.object, - onKeydown: { - type: Function - }, - onMousedown: { - type: Function - }, - onChange: { - type: Function - }, - onPaste: { - type: Function - }, - onCompositionstart: { - type: Function - }, - onCompositionend: { - type: Function - }, - onFocus: { - type: Function - }, - onBlur: { - type: Function - } -}; -var Input = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "SelectInput", - inheritAttrs: false, - props: inputProps, - setup(props4) { - let blurTimeout = null; - const VCSelectContainerEvent = inject("VCSelectContainerEvent"); - return () => { - var _a2; - const { - prefixCls, - id, - inputElement, - disabled, - tabindex, - autofocus, - autocomplete, - editable, - activeDescendantId, - value, - onKeydown, - onMousedown, - onChange, - onPaste, - onCompositionstart, - onCompositionend, - onFocus, - onBlur, - open: open2, - inputRef, - attrs - } = props4; - let inputNode = inputElement || withDirectives(createVNode("input", null, null), [[antInputDirective_default]]); - const inputProps4 = inputNode.props || {}; - const { - onKeydown: onOriginKeyDown, - onInput: onOriginInput, - onFocus: onOriginFocus, - onBlur: onOriginBlur, - onMousedown: onOriginMouseDown, - onCompositionstart: onOriginCompositionStart, - onCompositionend: onOriginCompositionEnd, - style - } = inputProps4; - inputNode = cloneElement(inputNode, _extends(_extends(_extends(_extends(_extends({ - type: "search" - }, inputProps4), { - id, - ref: inputRef, - disabled, - tabindex, - autocomplete: autocomplete || "off", - autofocus, - class: classNames_default(`${prefixCls}-selection-search-input`, (_a2 = inputNode === null || inputNode === void 0 ? void 0 : inputNode.props) === null || _a2 === void 0 ? void 0 : _a2.class), - role: "combobox", - "aria-expanded": open2, - "aria-haspopup": "listbox", - "aria-owns": `${id}_list`, - "aria-autocomplete": "list", - "aria-controls": `${id}_list`, - "aria-activedescendant": activeDescendantId - }), attrs), { - value: editable ? value : "", - readonly: !editable, - unselectable: !editable ? "on" : null, - style: _extends(_extends({}, style), { - opacity: editable ? null : 0 - }), - onKeydown: (event) => { - onKeydown(event); - if (onOriginKeyDown) { - onOriginKeyDown(event); - } - }, - onMousedown: (event) => { - onMousedown(event); - if (onOriginMouseDown) { - onOriginMouseDown(event); - } - }, - onInput: (event) => { - onChange(event); - if (onOriginInput) { - onOriginInput(event); - } - }, - onCompositionstart(event) { - onCompositionstart(event); - if (onOriginCompositionStart) { - onOriginCompositionStart(event); - } - }, - onCompositionend(event) { - onCompositionend(event); - if (onOriginCompositionEnd) { - onOriginCompositionEnd(event); - } - }, - onPaste, - onFocus: function() { - clearTimeout(blurTimeout); - onOriginFocus && onOriginFocus(arguments.length <= 0 ? void 0 : arguments[0]); - onFocus && onFocus(arguments.length <= 0 ? void 0 : arguments[0]); - VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.focus(arguments.length <= 0 ? void 0 : arguments[0]); - }, - onBlur: function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - blurTimeout = setTimeout(() => { - onOriginBlur && onOriginBlur(args[0]); - onBlur && onBlur(args[0]); - VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.blur(args[0]); - }, 100); - } - }), inputNode.type === "textarea" ? {} : { - type: "search" - }), true, true); - return inputNode; - }; - } -}); -var Input_default = Input; - -// node_modules/ant-design-vue/es/_util/pickAttrs.js -var attributes = `accept acceptcharset accesskey action allowfullscreen allowtransparency -alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge -charset checked classid classname colspan cols content contenteditable contextmenu -controls coords crossorigin data datetime default defer dir disabled download draggable -enctype form formaction formenctype formmethod formnovalidate formtarget frameborder -headers height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity -is keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media -mediagroup method min minlength multiple muted name novalidate nonce open -optimum pattern placeholder poster preload radiogroup readonly rel required -reversed role rowspan rows sandbox scope scoped scrolling seamless selected -shape size sizes span spellcheck src srcdoc srclang srcset start step style -summary tabindex target title type usemap value width wmode wrap`; -var eventsName = `onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown - onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick - onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown - onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel - onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough - onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata - onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`; -var propList = `${attributes} ${eventsName}`.split(/[\s\n]+/); -var ariaPrefix = "aria-"; -var dataPrefix = "data-"; -function match2(key2, prefix2) { - return key2.indexOf(prefix2) === 0; -} -function pickAttrs(props4) { - let ariaOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - let mergedConfig; - if (ariaOnly === false) { - mergedConfig = { - aria: true, - data: true, - attr: true - }; - } else if (ariaOnly === true) { - mergedConfig = { - aria: true - }; - } else { - mergedConfig = _extends({}, ariaOnly); - } - const attrs = {}; - Object.keys(props4).forEach((key2) => { - if ( - // Aria - mergedConfig.aria && (key2 === "role" || match2(key2, ariaPrefix)) || // Data - mergedConfig.data && match2(key2, dataPrefix) || // Attr - mergedConfig.attr && (propList.includes(key2) || propList.includes(key2.toLowerCase())) - ) { - attrs[key2] = props4[key2]; - } - }); - return attrs; -} - -// node_modules/ant-design-vue/es/vc-overflow/context.js -var OverflowContextProviderKey = Symbol("OverflowContextProviderKey"); -var OverflowContextProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "OverflowContextProvider", - inheritAttrs: false, - props: { - value: { - type: Object - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - provide(OverflowContextProviderKey, computed(() => props4.value)); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var useInjectOverflowContext = () => { - return inject(OverflowContextProviderKey, computed(() => null)); -}; - -// node_modules/ant-design-vue/es/vc-overflow/Item.js -var __rest4 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var UNDEFINED = void 0; -var Item_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Item", - props: { - prefixCls: String, - item: vue_types_default.any, - renderItem: Function, - responsive: Boolean, - itemKey: { - type: [String, Number] - }, - registerSize: Function, - display: Boolean, - order: Number, - component: vue_types_default.any, - invalidate: Boolean - }, - setup(props4, _ref) { - let { - slots, - expose - } = _ref; - const mergedHidden = computed(() => props4.responsive && !props4.display); - const itemNodeRef = ref(); - expose({ - itemNodeRef - }); - function internalRegisterSize(width) { - props4.registerSize(props4.itemKey, width); - } - onUnmounted(() => { - internalRegisterSize(null); - }); - return () => { - var _a2; - const { - prefixCls, - invalidate, - item, - renderItem, - responsive, - registerSize, - itemKey: itemKey2, - display, - order, - component: Component = "div" - } = props4, restProps = __rest4(props4, ["prefixCls", "invalidate", "item", "renderItem", "responsive", "registerSize", "itemKey", "display", "order", "component"]); - const children = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - const childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children; - let overflowStyle; - if (!invalidate) { - overflowStyle = { - opacity: mergedHidden.value ? 0 : 1, - height: mergedHidden.value ? 0 : UNDEFINED, - overflowY: mergedHidden.value ? "hidden" : UNDEFINED, - order: responsive ? order : UNDEFINED, - pointerEvents: mergedHidden.value ? "none" : UNDEFINED, - position: mergedHidden.value ? "absolute" : UNDEFINED - }; - } - const overflowProps2 = {}; - if (mergedHidden.value) { - overflowProps2["aria-hidden"] = true; - } - return createVNode(vc_resize_observer_default, { - "disabled": !responsive, - "onResize": (_ref2) => { - let { - offsetWidth - } = _ref2; - internalRegisterSize(offsetWidth); - } - }, { - default: () => createVNode(Component, _objectSpread2(_objectSpread2(_objectSpread2({ - "class": classNames_default(!invalidate && prefixCls), - "style": overflowStyle - }, overflowProps2), restProps), {}, { - "ref": itemNodeRef - }), { - default: () => [childNode] - }) - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-overflow/RawItem.js -var __rest5 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var RawItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "RawItem", - inheritAttrs: false, - props: { - component: vue_types_default.any, - title: vue_types_default.any, - id: String, - onMouseenter: { - type: Function - }, - onMouseleave: { - type: Function - }, - onClick: { - type: Function - }, - onKeydown: { - type: Function - }, - onFocus: { - type: Function - }, - role: String, - tabindex: Number - }, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const context2 = useInjectOverflowContext(); - return () => { - var _a2; - if (!context2.value) { - const { - component: Component = "div" - } = props4, restProps2 = __rest5(props4, ["component"]); - return createVNode(Component, _objectSpread2(_objectSpread2({}, restProps2), attrs), { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }); - } - const _b = context2.value, { - className: contextClassName - } = _b, restContext = __rest5(_b, ["className"]); - const { - class: className - } = attrs, restProps = __rest5(attrs, ["class"]); - return createVNode(OverflowContextProvider, { - "value": null - }, { - default: () => [createVNode(Item_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "class": classNames_default(contextClassName, className) - }, restContext), restProps), props4), slots)] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-overflow/Overflow.js -var __rest6 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var RESPONSIVE = "responsive"; -var INVALIDATE = "invalidate"; -function defaultRenderRest(omittedItems) { - return `+ ${omittedItems.length} ...`; -} -var overflowProps = () => { - return { - id: String, - prefixCls: String, - data: Array, - itemKey: [String, Number, Function], - /** Used for `responsive`. It will limit render node to avoid perf issue */ - itemWidth: { - type: Number, - default: 10 - }, - renderItem: Function, - /** @private Do not use in your production. Render raw node that need wrap Item by developer self */ - renderRawItem: Function, - maxCount: [Number, String], - renderRest: Function, - /** @private Do not use in your production. Render raw node that need wrap Item by developer self */ - renderRawRest: Function, - suffix: vue_types_default.any, - component: String, - itemComponent: vue_types_default.any, - /** @private This API may be refactor since not well design */ - onVisibleChange: Function, - /** When set to `full`, ssr will render full items by default and remove at client side */ - ssr: String, - onMousedown: Function - }; -}; -var Overflow = defineComponent({ - name: "Overflow", - inheritAttrs: false, - props: overflowProps(), - emits: ["visibleChange"], - setup(props4, _ref) { - let { - attrs, - emit, - slots - } = _ref; - const fullySSR = computed(() => props4.ssr === "full"); - const containerWidth = shallowRef(null); - const mergedContainerWidth = computed(() => containerWidth.value || 0); - const itemWidths = shallowRef(/* @__PURE__ */ new Map()); - const prevRestWidth = shallowRef(0); - const restWidth = shallowRef(0); - const suffixWidth = shallowRef(0); - const suffixFixedStart = shallowRef(null); - const displayCount = shallowRef(null); - const mergedDisplayCount = computed(() => { - if (displayCount.value === null && fullySSR.value) { - return Number.MAX_SAFE_INTEGER; - } - return displayCount.value || 0; - }); - const restReady = shallowRef(false); - const itemPrefixCls = computed(() => `${props4.prefixCls}-item`); - const mergedRestWidth = computed(() => Math.max(prevRestWidth.value, restWidth.value)); - const isResponsive = computed(() => !!(props4.data.length && props4.maxCount === RESPONSIVE)); - const invalidate = computed(() => props4.maxCount === INVALIDATE); - const showRest = computed(() => isResponsive.value || typeof props4.maxCount === "number" && props4.data.length > props4.maxCount); - const mergedData = computed(() => { - let items = props4.data; - if (isResponsive.value) { - if (containerWidth.value === null && fullySSR.value) { - items = props4.data; - } else { - items = props4.data.slice(0, Math.min(props4.data.length, mergedContainerWidth.value / props4.itemWidth)); - } - } else if (typeof props4.maxCount === "number") { - items = props4.data.slice(0, props4.maxCount); - } - return items; - }); - const omittedItems = computed(() => { - if (isResponsive.value) { - return props4.data.slice(mergedDisplayCount.value + 1); - } - return props4.data.slice(mergedData.value.length); - }); - const getKey4 = (item, index3) => { - var _a2; - if (typeof props4.itemKey === "function") { - return props4.itemKey(item); - } - return (_a2 = props4.itemKey && (item === null || item === void 0 ? void 0 : item[props4.itemKey])) !== null && _a2 !== void 0 ? _a2 : index3; - }; - const mergedRenderItem = computed(() => props4.renderItem || ((item) => item)); - const updateDisplayCount = (count, notReady) => { - displayCount.value = count; - if (!notReady) { - restReady.value = count < props4.data.length - 1; - emit("visibleChange", count); - } - }; - const onOverflowResize = (_2, element) => { - containerWidth.value = element.clientWidth; - }; - const registerSize = (key2, width) => { - const clone3 = new Map(itemWidths.value); - if (width === null) { - clone3.delete(key2); - } else { - clone3.set(key2, width); - } - itemWidths.value = clone3; - }; - const registerOverflowSize = (_2, width) => { - prevRestWidth.value = restWidth.value; - restWidth.value = width; - }; - const registerSuffixSize = (_2, width) => { - suffixWidth.value = width; - }; - const getItemWidth = (index3) => { - return itemWidths.value.get(getKey4(mergedData.value[index3], index3)); - }; - watch([mergedContainerWidth, itemWidths, restWidth, suffixWidth, () => props4.itemKey, mergedData], () => { - if (mergedContainerWidth.value && mergedRestWidth.value && mergedData.value) { - let totalWidth = suffixWidth.value; - const len = mergedData.value.length; - const lastIndex = len - 1; - if (!len) { - updateDisplayCount(0); - suffixFixedStart.value = null; - return; - } - for (let i3 = 0; i3 < len; i3 += 1) { - const currentItemWidth = getItemWidth(i3); - if (currentItemWidth === void 0) { - updateDisplayCount(i3 - 1, true); - break; - } - totalWidth += currentItemWidth; - if ( - // Only one means `totalWidth` is the final width - lastIndex === 0 && totalWidth <= mergedContainerWidth.value || // Last two width will be the final width - i3 === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth.value - ) { - updateDisplayCount(lastIndex); - suffixFixedStart.value = null; - break; - } else if (totalWidth + mergedRestWidth.value > mergedContainerWidth.value) { - updateDisplayCount(i3 - 1); - suffixFixedStart.value = totalWidth - currentItemWidth - suffixWidth.value + restWidth.value; - break; - } - } - if (props4.suffix && getItemWidth(0) + suffixWidth.value > mergedContainerWidth.value) { - suffixFixedStart.value = null; - } - } - }); - return () => { - const displayRest = restReady.value && !!omittedItems.value.length; - const { - itemComponent, - renderRawItem, - renderRawRest, - renderRest, - prefixCls = "rc-overflow", - suffix, - component: Component = "div", - id, - onMousedown - } = props4; - const { - class: className, - style - } = attrs, restAttrs = __rest6(attrs, ["class", "style"]); - let suffixStyle = {}; - if (suffixFixedStart.value !== null && isResponsive.value) { - suffixStyle = { - position: "absolute", - left: `${suffixFixedStart.value}px`, - top: 0 - }; - } - const itemSharedProps = { - prefixCls: itemPrefixCls.value, - responsive: isResponsive.value, - component: itemComponent, - invalidate: invalidate.value - }; - const internalRenderItemNode = renderRawItem ? (item, index3) => { - const key2 = getKey4(item, index3); - return createVNode(OverflowContextProvider, { - "key": key2, - "value": _extends(_extends({}, itemSharedProps), { - order: index3, - item, - itemKey: key2, - registerSize, - display: index3 <= mergedDisplayCount.value - }) - }, { - default: () => [renderRawItem(item, index3)] - }); - } : (item, index3) => { - const key2 = getKey4(item, index3); - return createVNode(Item_default, _objectSpread2(_objectSpread2({}, itemSharedProps), {}, { - "order": index3, - "key": key2, - "item": item, - "renderItem": mergedRenderItem.value, - "itemKey": key2, - "registerSize": registerSize, - "display": index3 <= mergedDisplayCount.value - }), null); - }; - let restNode = () => null; - const restContextProps = { - order: displayRest ? mergedDisplayCount.value : Number.MAX_SAFE_INTEGER, - className: `${itemPrefixCls.value} ${itemPrefixCls.value}-rest`, - registerSize: registerOverflowSize, - display: displayRest - }; - if (!renderRawRest) { - const mergedRenderRest = renderRest || defaultRenderRest; - restNode = () => createVNode(Item_default, _objectSpread2(_objectSpread2({}, itemSharedProps), restContextProps), { - default: () => typeof mergedRenderRest === "function" ? mergedRenderRest(omittedItems.value) : mergedRenderRest - }); - } else if (renderRawRest) { - restNode = () => createVNode(OverflowContextProvider, { - "value": _extends(_extends({}, itemSharedProps), restContextProps) - }, { - default: () => [renderRawRest(omittedItems.value)] - }); - } - const overflowNode = () => { - var _a2; - return createVNode(Component, _objectSpread2({ - "id": id, - "class": classNames_default(!invalidate.value && prefixCls, className), - "style": style, - "onMousedown": onMousedown - }, restAttrs), { - default: () => [mergedData.value.map(internalRenderItemNode), showRest.value ? restNode() : null, suffix && createVNode(Item_default, _objectSpread2(_objectSpread2({}, itemSharedProps), {}, { - "order": mergedDisplayCount.value, - "class": `${itemPrefixCls.value}-suffix`, - "registerSize": registerSuffixSize, - "display": true, - "style": suffixStyle - }), { - default: () => suffix - }), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }); - }; - return createVNode(vc_resize_observer_default, { - "disabled": !isResponsive.value, - "onResize": onOverflowResize - }, { - default: overflowNode - }); - }; - } -}); -Overflow.Item = RawItem_default; -Overflow.RESPONSIVE = RESPONSIVE; -Overflow.INVALIDATE = INVALIDATE; -var Overflow_default = Overflow; - -// node_modules/ant-design-vue/es/vc-overflow/index.js -var vc_overflow_default = Overflow_default; - -// node_modules/ant-design-vue/es/vc-tree-select/LegacyContext.js -var TreeSelectLegacyContextPropsKey = Symbol("TreeSelectLegacyContextPropsKey"); -function useProvideLegacySelectContext(props4) { - return provide(TreeSelectLegacyContextPropsKey, props4); -} -function useInjectLegacySelectContext() { - return inject(TreeSelectLegacyContextPropsKey, {}); -} - -// node_modules/ant-design-vue/es/vc-select/Selector/MultipleSelector.js -var props = { - id: String, - prefixCls: String, - values: vue_types_default.array, - open: { - type: Boolean, - default: void 0 - }, - searchValue: String, - inputRef: vue_types_default.any, - placeholder: vue_types_default.any, - disabled: { - type: Boolean, - default: void 0 - }, - mode: String, - showSearch: { - type: Boolean, - default: void 0 - }, - autofocus: { - type: Boolean, - default: void 0 - }, - autocomplete: String, - activeDescendantId: String, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - removeIcon: vue_types_default.any, - choiceTransitionName: String, - maxTagCount: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - maxTagTextLength: Number, - maxTagPlaceholder: vue_types_default.any.def(() => (omittedValues) => `+ ${omittedValues.length} ...`), - tagRender: Function, - onToggleOpen: { - type: Function - }, - onRemove: Function, - onInputChange: Function, - onInputPaste: Function, - onInputKeyDown: Function, - onInputMouseDown: Function, - onInputCompositionStart: Function, - onInputCompositionEnd: Function -}; -var onPreventMouseDown = (event) => { - event.preventDefault(); - event.stopPropagation(); -}; -var SelectSelector = defineComponent({ - name: "MultipleSelectSelector", - inheritAttrs: false, - props, - setup(props4) { - const measureRef = shallowRef(); - const inputWidth = shallowRef(0); - const focused = shallowRef(false); - const legacyTreeSelectContext = useInjectLegacySelectContext(); - const selectionPrefixCls = computed(() => `${props4.prefixCls}-selection`); - const inputValue = computed(() => props4.open || props4.mode === "tags" ? props4.searchValue : ""); - const inputEditable = computed(() => props4.mode === "tags" || props4.showSearch && (props4.open || focused.value)); - onMounted(() => { - watch(inputValue, () => { - inputWidth.value = measureRef.value.scrollWidth; - }, { - flush: "post", - immediate: true - }); - }); - function defaultRenderSelector(title, content, itemDisabled, closable, onClose) { - return createVNode("span", { - "class": classNames_default(`${selectionPrefixCls.value}-item`, { - [`${selectionPrefixCls.value}-item-disabled`]: itemDisabled - }), - "title": typeof title === "string" || typeof title === "number" ? title.toString() : void 0 - }, [createVNode("span", { - "class": `${selectionPrefixCls.value}-item-content` - }, [content]), closable && createVNode(TransBtn_default, { - "class": `${selectionPrefixCls.value}-item-remove`, - "onMousedown": onPreventMouseDown, - "onClick": onClose, - "customizeIcon": props4.removeIcon - }, { - default: () => [createTextVNode("×")] - })]); - } - function customizeRenderSelector(value, content, itemDisabled, closable, onClose, option) { - var _a2; - const onMouseDown = (e3) => { - onPreventMouseDown(e3); - props4.onToggleOpen(!open); - }; - let originData = option; - if (legacyTreeSelectContext.keyEntities) { - originData = ((_a2 = legacyTreeSelectContext.keyEntities[value]) === null || _a2 === void 0 ? void 0 : _a2.node) || {}; - } - return createVNode("span", { - "key": value, - "onMousedown": onMouseDown - }, [props4.tagRender({ - label: content, - value, - disabled: itemDisabled, - closable, - onClose, - option: originData - })]); - } - function renderItem(valueItem) { - const { - disabled: itemDisabled, - label, - value, - option - } = valueItem; - const closable = !props4.disabled && !itemDisabled; - let displayLabel = label; - if (typeof props4.maxTagTextLength === "number") { - if (typeof label === "string" || typeof label === "number") { - const strLabel = String(displayLabel); - if (strLabel.length > props4.maxTagTextLength) { - displayLabel = `${strLabel.slice(0, props4.maxTagTextLength)}...`; - } - } - } - const onClose = (event) => { - var _a2; - if (event) event.stopPropagation(); - (_a2 = props4.onRemove) === null || _a2 === void 0 ? void 0 : _a2.call(props4, valueItem); - }; - return typeof props4.tagRender === "function" ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose, option) : defaultRenderSelector(label, displayLabel, itemDisabled, closable, onClose); - } - function renderRest(omittedValues) { - const { - maxTagPlaceholder = (omittedValues2) => `+ ${omittedValues2.length} ...` - } = props4; - const content = typeof maxTagPlaceholder === "function" ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder; - return defaultRenderSelector(content, content, false); - } - return () => { - const { - id, - prefixCls, - values: values2, - open: open2, - inputRef, - placeholder, - disabled, - autofocus, - autocomplete, - activeDescendantId, - tabindex, - onInputChange, - onInputPaste, - onInputKeyDown, - onInputMouseDown, - onInputCompositionStart, - onInputCompositionEnd - } = props4; - const inputNode = createVNode("div", { - "class": `${selectionPrefixCls.value}-search`, - "style": { - width: inputWidth.value + "px" - }, - "key": "input" - }, [createVNode(Input_default, { - "inputRef": inputRef, - "open": open2, - "prefixCls": prefixCls, - "id": id, - "inputElement": null, - "disabled": disabled, - "autofocus": autofocus, - "autocomplete": autocomplete, - "editable": inputEditable.value, - "activeDescendantId": activeDescendantId, - "value": inputValue.value, - "onKeydown": onInputKeyDown, - "onMousedown": onInputMouseDown, - "onChange": onInputChange, - "onPaste": onInputPaste, - "onCompositionstart": onInputCompositionStart, - "onCompositionend": onInputCompositionEnd, - "tabindex": tabindex, - "attrs": pickAttrs(props4, true), - "onFocus": () => focused.value = true, - "onBlur": () => focused.value = false - }, null), createVNode("span", { - "ref": measureRef, - "class": `${selectionPrefixCls.value}-search-mirror`, - "aria-hidden": true - }, [inputValue.value, createTextVNode(" ")])]); - const selectionNode = createVNode(vc_overflow_default, { - "prefixCls": `${selectionPrefixCls.value}-overflow`, - "data": values2, - "renderItem": renderItem, - "renderRest": renderRest, - "suffix": inputNode, - "itemKey": "key", - "maxCount": props4.maxTagCount, - "key": "overflow" - }, null); - return createVNode(Fragment, null, [selectionNode, !values2.length && !inputValue.value && createVNode("span", { - "class": `${selectionPrefixCls.value}-placeholder` - }, [placeholder])]); - }; - } -}); -var MultipleSelector_default = SelectSelector; - -// node_modules/ant-design-vue/es/vc-select/Selector/SingleSelector.js -var props2 = { - inputElement: vue_types_default.any, - id: String, - prefixCls: String, - values: vue_types_default.array, - open: { - type: Boolean, - default: void 0 - }, - searchValue: String, - inputRef: vue_types_default.any, - placeholder: vue_types_default.any, - disabled: { - type: Boolean, - default: void 0 - }, - mode: String, - showSearch: { - type: Boolean, - default: void 0 - }, - autofocus: { - type: Boolean, - default: void 0 - }, - autocomplete: String, - activeDescendantId: String, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - activeValue: String, - backfill: { - type: Boolean, - default: void 0 - }, - optionLabelRender: Function, - onInputChange: Function, - onInputPaste: Function, - onInputKeyDown: Function, - onInputMouseDown: Function, - onInputCompositionStart: Function, - onInputCompositionEnd: Function -}; -var SingleSelector = defineComponent({ - name: "SingleSelector", - setup(props4) { - const inputChanged = shallowRef(false); - const combobox = computed(() => props4.mode === "combobox"); - const inputEditable = computed(() => combobox.value || props4.showSearch); - const inputValue = computed(() => { - let inputValue2 = props4.searchValue || ""; - if (combobox.value && props4.activeValue && !inputChanged.value) { - inputValue2 = props4.activeValue; - } - return inputValue2; - }); - const legacyTreeSelectContext = useInjectLegacySelectContext(); - watch([combobox, () => props4.activeValue], () => { - if (combobox.value) { - inputChanged.value = false; - } - }, { - immediate: true - }); - const hasTextInput = computed(() => props4.mode !== "combobox" && !props4.open && !props4.showSearch ? false : !!inputValue.value); - const title = computed(() => { - const item = props4.values[0]; - return item && (typeof item.label === "string" || typeof item.label === "number") ? item.label.toString() : void 0; - }); - const renderPlaceholder = () => { - if (props4.values[0]) { - return null; - } - const hiddenStyle = hasTextInput.value ? { - visibility: "hidden" - } : void 0; - return createVNode("span", { - "class": `${props4.prefixCls}-selection-placeholder`, - "style": hiddenStyle - }, [props4.placeholder]); - }; - return () => { - var _a2, _b, _c, _d; - const { - inputElement, - prefixCls, - id, - values: values2, - inputRef, - disabled, - autofocus, - autocomplete, - activeDescendantId, - open: open2, - tabindex, - optionLabelRender, - onInputKeyDown, - onInputMouseDown, - onInputChange, - onInputPaste, - onInputCompositionStart, - onInputCompositionEnd - } = props4; - const item = values2[0]; - let titleNode = null; - if (item && legacyTreeSelectContext.customSlots) { - const key2 = (_a2 = item.key) !== null && _a2 !== void 0 ? _a2 : item.value; - const originData = ((_b = legacyTreeSelectContext.keyEntities[key2]) === null || _b === void 0 ? void 0 : _b.node) || {}; - titleNode = legacyTreeSelectContext.customSlots[(_c = originData.slots) === null || _c === void 0 ? void 0 : _c.title] || legacyTreeSelectContext.customSlots.title || item.label; - if (typeof titleNode === "function") { - titleNode = titleNode(originData); - } - } else { - titleNode = optionLabelRender && item ? optionLabelRender(item.option) : item === null || item === void 0 ? void 0 : item.label; - } - return createVNode(Fragment, null, [createVNode("span", { - "class": `${prefixCls}-selection-search` - }, [createVNode(Input_default, { - "inputRef": inputRef, - "prefixCls": prefixCls, - "id": id, - "open": open2, - "inputElement": inputElement, - "disabled": disabled, - "autofocus": autofocus, - "autocomplete": autocomplete, - "editable": inputEditable.value, - "activeDescendantId": activeDescendantId, - "value": inputValue.value, - "onKeydown": onInputKeyDown, - "onMousedown": onInputMouseDown, - "onChange": (e3) => { - inputChanged.value = true; - onInputChange(e3); - }, - "onPaste": onInputPaste, - "onCompositionstart": onInputCompositionStart, - "onCompositionend": onInputCompositionEnd, - "tabindex": tabindex, - "attrs": pickAttrs(props4, true) - }, null)]), !combobox.value && item && !hasTextInput.value && createVNode("span", { - "class": `${prefixCls}-selection-item`, - "title": title.value - }, [createVNode(Fragment, { - "key": (_d = item.key) !== null && _d !== void 0 ? _d : item.value - }, [titleNode])]), renderPlaceholder()]); - }; - } -}); -SingleSelector.props = props2; -SingleSelector.inheritAttrs = false; -var SingleSelector_default = SingleSelector; - -// node_modules/ant-design-vue/es/vc-select/utils/keyUtil.js -function isValidateOpenKey(currentKeyCode) { - return ![ - // System function button - KeyCode_default.ESC, - KeyCode_default.SHIFT, - KeyCode_default.BACKSPACE, - KeyCode_default.TAB, - KeyCode_default.WIN_KEY, - KeyCode_default.ALT, - KeyCode_default.META, - KeyCode_default.WIN_KEY_RIGHT, - KeyCode_default.CTRL, - KeyCode_default.SEMICOLON, - KeyCode_default.EQUALS, - KeyCode_default.CAPS_LOCK, - KeyCode_default.CONTEXT_MENU, - // F1-F12 - KeyCode_default.F1, - KeyCode_default.F2, - KeyCode_default.F3, - KeyCode_default.F4, - KeyCode_default.F5, - KeyCode_default.F6, - KeyCode_default.F7, - KeyCode_default.F8, - KeyCode_default.F9, - KeyCode_default.F10, - KeyCode_default.F11, - KeyCode_default.F12 - ].includes(currentKeyCode); -} - -// node_modules/ant-design-vue/es/vc-select/hooks/useLock.js -function useLock() { - let duration = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 250; - let lock = null; - let timeout; - onBeforeUnmount(() => { - clearTimeout(timeout); - }); - function doLock(locked) { - if (locked || lock === null) { - lock = locked; - } - clearTimeout(timeout); - timeout = setTimeout(() => { - lock = null; - }, duration); - } - return [() => lock, doLock]; -} - -// node_modules/ant-design-vue/es/_util/createRef.js -function createRef() { - const func = (node2) => { - func.current = node2; - }; - return func; -} -var createRef_default = createRef; - -// node_modules/ant-design-vue/es/vc-select/Selector/index.js -var Selector = defineComponent({ - name: "Selector", - inheritAttrs: false, - props: { - id: String, - prefixCls: String, - showSearch: { - type: Boolean, - default: void 0 - }, - open: { - type: Boolean, - default: void 0 - }, - /** Display in the Selector value, it's not same as `value` prop */ - values: vue_types_default.array, - multiple: { - type: Boolean, - default: void 0 - }, - mode: String, - searchValue: String, - activeValue: String, - inputElement: vue_types_default.any, - autofocus: { - type: Boolean, - default: void 0 - }, - activeDescendantId: String, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - disabled: { - type: Boolean, - default: void 0 - }, - placeholder: vue_types_default.any, - removeIcon: vue_types_default.any, - // Tags - maxTagCount: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - maxTagTextLength: Number, - maxTagPlaceholder: vue_types_default.any, - tagRender: Function, - optionLabelRender: Function, - /** Check if `tokenSeparators` contains `\n` or `\r\n` */ - tokenWithEnter: { - type: Boolean, - default: void 0 - }, - // Motion - choiceTransitionName: String, - onToggleOpen: { - type: Function - }, - /** `onSearch` returns go next step boolean to check if need do toggle open */ - onSearch: Function, - onSearchSubmit: Function, - onRemove: Function, - onInputKeyDown: { - type: Function - }, - /** - * @private get real dom for trigger align. - * This may be removed after React provides replacement of `findDOMNode` - */ - domRef: Function - }, - setup(props4, _ref) { - let { - expose - } = _ref; - const inputRef = createRef_default(); - let compositionStatus = false; - const [getInputMouseDown, setInputMouseDown] = useLock(0); - const onInternalInputKeyDown = (event) => { - const { - which - } = event; - if (which === KeyCode_default.UP || which === KeyCode_default.DOWN) { - event.preventDefault(); - } - if (props4.onInputKeyDown) { - props4.onInputKeyDown(event); - } - if (which === KeyCode_default.ENTER && props4.mode === "tags" && !compositionStatus && !props4.open) { - props4.onSearchSubmit(event.target.value); - } - if (isValidateOpenKey(which)) { - props4.onToggleOpen(true); - } - }; - const onInternalInputMouseDown = () => { - setInputMouseDown(true); - }; - let pastedText = null; - const triggerOnSearch = (value) => { - if (props4.onSearch(value, true, compositionStatus) !== false) { - props4.onToggleOpen(true); - } - }; - const onInputCompositionStart = () => { - compositionStatus = true; - }; - const onInputCompositionEnd = (e3) => { - compositionStatus = false; - if (props4.mode !== "combobox") { - triggerOnSearch(e3.target.value); - } - }; - const onInputChange = (event) => { - let { - target: { - value - } - } = event; - if (props4.tokenWithEnter && pastedText && /[\r\n]/.test(pastedText)) { - const replacedText = pastedText.replace(/[\r\n]+$/, "").replace(/\r\n/g, " ").replace(/[\r\n]/g, " "); - value = value.replace(replacedText, pastedText); - } - pastedText = null; - triggerOnSearch(value); - }; - const onInputPaste = (e3) => { - const { - clipboardData - } = e3; - const value = clipboardData.getData("text"); - pastedText = value; - }; - const onClick = (_ref2) => { - let { - target - } = _ref2; - if (target !== inputRef.current) { - const isIE = document.body.style.msTouchAction !== void 0; - if (isIE) { - setTimeout(() => { - inputRef.current.focus(); - }); - } else { - inputRef.current.focus(); - } - } - }; - const onMousedown = (event) => { - const inputMouseDown = getInputMouseDown(); - if (event.target !== inputRef.current && !inputMouseDown) { - event.preventDefault(); - } - if (props4.mode !== "combobox" && (!props4.showSearch || !inputMouseDown) || !props4.open) { - if (props4.open) { - props4.onSearch("", true, false); - } - props4.onToggleOpen(); - } - }; - expose({ - focus: () => { - inputRef.current.focus(); - }, - blur: () => { - inputRef.current.blur(); - } - }); - return () => { - const { - prefixCls, - domRef, - mode - } = props4; - const sharedProps = { - inputRef, - onInputKeyDown: onInternalInputKeyDown, - onInputMouseDown: onInternalInputMouseDown, - onInputChange, - onInputPaste, - onInputCompositionStart, - onInputCompositionEnd - }; - const selectNode = mode === "multiple" || mode === "tags" ? createVNode(MultipleSelector_default, _objectSpread2(_objectSpread2({}, props4), sharedProps), null) : createVNode(SingleSelector_default, _objectSpread2(_objectSpread2({}, props4), sharedProps), null); - return createVNode("div", { - "ref": domRef, - "class": `${prefixCls}-selector`, - "onClick": onClick, - "onMousedown": onMousedown - }, [selectNode]); - }; - } -}); -var Selector_default = Selector; - -// node_modules/ant-design-vue/es/vc-select/hooks/useSelectTriggerControl.js -function useSelectTriggerControl(refs, open2, triggerOpen) { - function onGlobalMouseDown(event) { - var _a2, _b, _c; - let target = event.target; - if (target.shadowRoot && event.composed) { - target = event.composedPath()[0] || target; - } - const elements = [(_a2 = refs[0]) === null || _a2 === void 0 ? void 0 : _a2.value, (_c = (_b = refs[1]) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.getPopupElement()]; - if (open2.value && elements.every((element) => element && !element.contains(target) && element !== target)) { - triggerOpen(false); - } - } - onMounted(() => { - window.addEventListener("mousedown", onGlobalMouseDown); - }); - onBeforeUnmount(() => { - window.removeEventListener("mousedown", onGlobalMouseDown); - }); -} - -// node_modules/ant-design-vue/es/vc-select/hooks/useDelayReset.js -function useDelayReset() { - let timeout = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 10; - const bool = shallowRef(false); - let delay2; - const cancelLatest = () => { - clearTimeout(delay2); - }; - onMounted(() => { - cancelLatest(); - }); - const delaySetBool = (value, callback) => { - cancelLatest(); - delay2 = setTimeout(() => { - bool.value = value; - if (callback) { - callback(); - } - }, timeout); - }; - return [bool, delaySetBool, cancelLatest]; -} - -// node_modules/ant-design-vue/es/vc-select/hooks/useBaseProps.js -var BaseSelectContextKey = Symbol("BaseSelectContextKey"); -function useProvideBaseSelectProps(props4) { - return provide(BaseSelectContextKey, props4); -} -function useBaseProps() { - return inject(BaseSelectContextKey, {}); -} - -// node_modules/ant-design-vue/es/vc-util/isMobile.js -var isMobile_default = () => { - if (typeof navigator === "undefined" || typeof window === "undefined") { - return false; - } - const agent = navigator.userAgent || navigator.vendor || window.opera; - return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4)); -}; - -// node_modules/ant-design-vue/es/_util/toReactive.js -function toReactive(objectRef) { - if (!isRef(objectRef)) return reactive(objectRef); - const proxy = new Proxy({}, { - get(_2, p, receiver) { - return Reflect.get(objectRef.value, p, receiver); - }, - set(_2, p, value) { - objectRef.value[p] = value; - return true; - }, - deleteProperty(_2, p) { - return Reflect.deleteProperty(objectRef.value, p); - }, - has(_2, p) { - return Reflect.has(objectRef.value, p); - }, - ownKeys() { - return Object.keys(objectRef.value); - }, - getOwnPropertyDescriptor() { - return { - enumerable: true, - configurable: true - }; - } - }); - return reactive(proxy); -} - -// node_modules/ant-design-vue/es/vc-select/BaseSelect.js -var __rest7 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var DEFAULT_OMIT_PROPS = ["value", "onChange", "removeIcon", "placeholder", "autofocus", "maxTagCount", "maxTagTextLength", "maxTagPlaceholder", "choiceTransitionName", "onInputKeyDown", "onPopupScroll", "tabindex", "OptionList", "notFoundContent"]; -var baseSelectPrivateProps = () => { - return { - prefixCls: String, - id: String, - omitDomProps: Array, - // >>> Value - displayValues: Array, - onDisplayValuesChange: Function, - // >>> Active - /** Current dropdown list active item string value */ - activeValue: String, - /** Link search input with target element */ - activeDescendantId: String, - onActiveValueChange: Function, - // >>> Search - searchValue: String, - /** Trigger onSearch, return false to prevent trigger open event */ - onSearch: Function, - /** Trigger when search text match the `tokenSeparators`. Will provide split content */ - onSearchSplit: Function, - maxLength: Number, - OptionList: vue_types_default.any, - /** Tell if provided `options` is empty */ - emptyOptions: Boolean - }; -}; -var baseSelectPropsWithoutPrivate = () => { - return { - showSearch: { - type: Boolean, - default: void 0 - }, - tagRender: { - type: Function - }, - optionLabelRender: { - type: Function - }, - direction: { - type: String - }, - // MISC - tabindex: Number, - autofocus: Boolean, - notFoundContent: vue_types_default.any, - placeholder: vue_types_default.any, - onClear: Function, - choiceTransitionName: String, - // >>> Mode - mode: String, - // >>> Status - disabled: { - type: Boolean, - default: void 0 - }, - loading: { - type: Boolean, - default: void 0 - }, - // >>> Open - open: { - type: Boolean, - default: void 0 - }, - defaultOpen: { - type: Boolean, - default: void 0 - }, - onDropdownVisibleChange: { - type: Function - }, - // >>> Customize Input - /** @private Internal usage. Do not use in your production. */ - getInputElement: { - type: Function - }, - /** @private Internal usage. Do not use in your production. */ - getRawInputElement: { - type: Function - }, - // >>> Selector - maxTagTextLength: Number, - maxTagCount: { - type: [String, Number] - }, - maxTagPlaceholder: vue_types_default.any, - // >>> Search - tokenSeparators: { - type: Array - }, - // >>> Icons - allowClear: { - type: Boolean, - default: void 0 - }, - showArrow: { - type: Boolean, - default: void 0 - }, - inputIcon: vue_types_default.any, - /** Clear all icon */ - clearIcon: vue_types_default.any, - /** Selector remove icon */ - removeIcon: vue_types_default.any, - // >>> Dropdown - animation: String, - transitionName: String, - dropdownStyle: { - type: Object - }, - dropdownClassName: String, - dropdownMatchSelectWidth: { - type: [Boolean, Number], - default: void 0 - }, - dropdownRender: { - type: Function - }, - dropdownAlign: Object, - placement: { - type: String - }, - getPopupContainer: { - type: Function - }, - // >>> Focus - showAction: { - type: Array - }, - onBlur: { - type: Function - }, - onFocus: { - type: Function - }, - // >>> Rest Events - onKeyup: Function, - onKeydown: Function, - onMousedown: Function, - onPopupScroll: Function, - onInputKeyDown: Function, - onMouseenter: Function, - onMouseleave: Function, - onClick: Function - }; -}; -var baseSelectProps = () => { - return _extends(_extends({}, baseSelectPrivateProps()), baseSelectPropsWithoutPrivate()); -}; -function isMultiple(mode) { - return mode === "tags" || mode === "multiple"; -} -var BaseSelect_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "BaseSelect", - inheritAttrs: false, - props: initDefaultProps_default(baseSelectProps(), { - showAction: [], - notFoundContent: "Not Found" - }), - setup(props4, _ref) { - let { - attrs, - expose, - slots - } = _ref; - const multiple = computed(() => isMultiple(props4.mode)); - const mergedShowSearch = computed(() => props4.showSearch !== void 0 ? props4.showSearch : multiple.value || props4.mode === "combobox"); - const mobile = shallowRef(false); - onMounted(() => { - mobile.value = isMobile_default(); - }); - const legacyTreeSelectContext = useInjectLegacySelectContext(); - const containerRef = shallowRef(null); - const selectorDomRef = createRef_default(); - const triggerRef2 = shallowRef(null); - const selectorRef = shallowRef(null); - const listRef = shallowRef(null); - const blurRef = ref(false); - const [mockFocused, setMockFocused, cancelSetMockFocused] = useDelayReset(); - const focus = () => { - var _a2; - (_a2 = selectorRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = selectorRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur, - scrollTo: (arg) => { - var _a2; - return (_a2 = listRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(arg); - } - }); - const mergedSearchValue = computed(() => { - var _a2; - if (props4.mode !== "combobox") { - return props4.searchValue; - } - const val = (_a2 = props4.displayValues[0]) === null || _a2 === void 0 ? void 0 : _a2.value; - return typeof val === "string" || typeof val === "number" ? String(val) : ""; - }); - const initOpen = props4.open !== void 0 ? props4.open : props4.defaultOpen; - const innerOpen = shallowRef(initOpen); - const mergedOpen = shallowRef(initOpen); - const setInnerOpen = (val) => { - innerOpen.value = props4.open !== void 0 ? props4.open : val; - mergedOpen.value = innerOpen.value; - }; - watch(() => props4.open, () => { - setInnerOpen(props4.open); - }); - const emptyListContent = computed(() => !props4.notFoundContent && props4.emptyOptions); - watchEffect(() => { - mergedOpen.value = innerOpen.value; - if (props4.disabled || emptyListContent.value && mergedOpen.value && props4.mode === "combobox") { - mergedOpen.value = false; - } - }); - const triggerOpen = computed(() => emptyListContent.value ? false : mergedOpen.value); - const onToggleOpen = (newOpen) => { - const nextOpen = newOpen !== void 0 ? newOpen : !mergedOpen.value; - if (mergedOpen.value !== nextOpen && !props4.disabled) { - setInnerOpen(nextOpen); - props4.onDropdownVisibleChange && props4.onDropdownVisibleChange(nextOpen); - } - }; - const tokenWithEnter = computed(() => (props4.tokenSeparators || []).some((tokenSeparator) => ["\n", "\r\n"].includes(tokenSeparator))); - const onInternalSearch = (searchText, fromTyping, isCompositing) => { - var _a2, _b; - let ret = true; - let newSearchText = searchText; - (_a2 = props4.onActiveValueChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, null); - const patchLabels = isCompositing ? null : getSeparatedContent(searchText, props4.tokenSeparators); - if (props4.mode !== "combobox" && patchLabels) { - newSearchText = ""; - (_b = props4.onSearchSplit) === null || _b === void 0 ? void 0 : _b.call(props4, patchLabels); - onToggleOpen(false); - ret = false; - } - if (props4.onSearch && mergedSearchValue.value !== newSearchText) { - props4.onSearch(newSearchText, { - source: fromTyping ? "typing" : "effect" - }); - } - return ret; - }; - const onInternalSearchSubmit = (searchText) => { - var _a2; - if (!searchText || !searchText.trim()) { - return; - } - (_a2 = props4.onSearch) === null || _a2 === void 0 ? void 0 : _a2.call(props4, searchText, { - source: "submit" - }); - }; - watch(mergedOpen, () => { - if (!mergedOpen.value && !multiple.value && props4.mode !== "combobox") { - onInternalSearch("", false, false); - } - }, { - immediate: true, - flush: "post" - }); - watch(() => props4.disabled, () => { - if (innerOpen.value && !!props4.disabled) { - setInnerOpen(false); - } - if (props4.disabled && !blurRef.value) { - setMockFocused(false); - } - }, { - immediate: true - }); - const [getClearLock, setClearLock] = useLock(); - const onInternalKeyDown = function(event) { - var _a2; - const clearLock = getClearLock(); - const { - which - } = event; - if (which === KeyCode_default.ENTER) { - if (props4.mode !== "combobox") { - event.preventDefault(); - } - if (!mergedOpen.value) { - onToggleOpen(true); - } - } - setClearLock(!!mergedSearchValue.value); - if (which === KeyCode_default.BACKSPACE && !clearLock && multiple.value && !mergedSearchValue.value && props4.displayValues.length) { - const cloneDisplayValues = [...props4.displayValues]; - let removedDisplayValue = null; - for (let i3 = cloneDisplayValues.length - 1; i3 >= 0; i3 -= 1) { - const current = cloneDisplayValues[i3]; - if (!current.disabled) { - cloneDisplayValues.splice(i3, 1); - removedDisplayValue = current; - break; - } - } - if (removedDisplayValue) { - props4.onDisplayValuesChange(cloneDisplayValues, { - type: "remove", - values: [removedDisplayValue] - }); - } - } - for (var _len = arguments.length, rest2 = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - rest2[_key - 1] = arguments[_key]; - } - if (mergedOpen.value && listRef.value) { - listRef.value.onKeydown(event, ...rest2); - } - (_a2 = props4.onKeydown) === null || _a2 === void 0 ? void 0 : _a2.call(props4, event, ...rest2); - }; - const onInternalKeyUp = function(event) { - for (var _len2 = arguments.length, rest2 = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - rest2[_key2 - 1] = arguments[_key2]; - } - if (mergedOpen.value && listRef.value) { - listRef.value.onKeyup(event, ...rest2); - } - if (props4.onKeyup) { - props4.onKeyup(event, ...rest2); - } - }; - const onSelectorRemove = (val) => { - const newValues = props4.displayValues.filter((i3) => i3 !== val); - props4.onDisplayValuesChange(newValues, { - type: "remove", - values: [val] - }); - }; - const focusRef = shallowRef(false); - const onContainerFocus = function() { - setMockFocused(true); - if (!props4.disabled) { - if (props4.onFocus && !focusRef.value) { - props4.onFocus(...arguments); - } - if (props4.showAction && props4.showAction.includes("focus")) { - onToggleOpen(true); - } - } - focusRef.value = true; - }; - const popupFocused = ref(false); - const onContainerBlur = function() { - if (popupFocused.value) { - return; - } - blurRef.value = true; - setMockFocused(false, () => { - focusRef.value = false; - blurRef.value = false; - onToggleOpen(false); - }); - if (props4.disabled) { - return; - } - const searchVal = mergedSearchValue.value; - if (searchVal) { - if (props4.mode === "tags") { - props4.onSearch(searchVal, { - source: "submit" - }); - } else if (props4.mode === "multiple") { - props4.onSearch("", { - source: "blur" - }); - } - } - if (props4.onBlur) { - props4.onBlur(...arguments); - } - }; - const onPopupFocusin = () => { - popupFocused.value = true; - }; - const onPopupFocusout = () => { - popupFocused.value = false; - }; - provide("VCSelectContainerEvent", { - focus: onContainerFocus, - blur: onContainerBlur - }); - const activeTimeoutIds = []; - onMounted(() => { - activeTimeoutIds.forEach((timeoutId) => clearTimeout(timeoutId)); - activeTimeoutIds.splice(0, activeTimeoutIds.length); - }); - onBeforeUnmount(() => { - activeTimeoutIds.forEach((timeoutId) => clearTimeout(timeoutId)); - activeTimeoutIds.splice(0, activeTimeoutIds.length); - }); - const onInternalMouseDown = function(event) { - var _a2, _b; - const { - target - } = event; - const popupElement = (_a2 = triggerRef2.value) === null || _a2 === void 0 ? void 0 : _a2.getPopupElement(); - if (popupElement && popupElement.contains(target)) { - const timeoutId = setTimeout(() => { - var _a3; - const index3 = activeTimeoutIds.indexOf(timeoutId); - if (index3 !== -1) { - activeTimeoutIds.splice(index3, 1); - } - cancelSetMockFocused(); - if (!mobile.value && !popupElement.contains(document.activeElement)) { - (_a3 = selectorRef.value) === null || _a3 === void 0 ? void 0 : _a3.focus(); - } - }); - activeTimeoutIds.push(timeoutId); - } - for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - restArgs[_key3 - 1] = arguments[_key3]; - } - (_b = props4.onMousedown) === null || _b === void 0 ? void 0 : _b.call(props4, event, ...restArgs); - }; - const containerWidth = shallowRef(null); - const onPopupMouseEnter = () => { - }; - onMounted(() => { - watch(triggerOpen, () => { - var _a2; - if (triggerOpen.value) { - const newWidth = Math.ceil((_a2 = containerRef.value) === null || _a2 === void 0 ? void 0 : _a2.offsetWidth); - if (containerWidth.value !== newWidth && !Number.isNaN(newWidth)) { - containerWidth.value = newWidth; - } - } - }, { - immediate: true, - flush: "post" - }); - }); - useSelectTriggerControl([containerRef, triggerRef2], triggerOpen, onToggleOpen); - useProvideBaseSelectProps(toReactive(_extends(_extends({}, toRefs(props4)), { - open: mergedOpen, - triggerOpen, - showSearch: mergedShowSearch, - multiple, - toggleOpen: onToggleOpen - }))); - return () => { - const _a2 = _extends(_extends({}, props4), attrs), { - prefixCls, - id, - open: open2, - defaultOpen, - mode, - // Search related - showSearch, - searchValue, - onSearch, - // Icons - allowClear, - clearIcon, - showArrow, - inputIcon, - // Others - disabled, - loading, - getInputElement, - getPopupContainer, - placement, - // Dropdown - animation, - transitionName: transitionName2, - dropdownStyle, - dropdownClassName, - dropdownMatchSelectWidth, - dropdownRender, - dropdownAlign, - showAction, - direction, - // Tags - tokenSeparators, - tagRender, - optionLabelRender, - // Events - onPopupScroll, - onDropdownVisibleChange, - onFocus, - onBlur, - onKeyup, - onKeydown, - onMousedown, - onClear, - omitDomProps, - getRawInputElement, - displayValues, - onDisplayValuesChange, - emptyOptions, - activeDescendantId, - activeValue, - OptionList: OptionList2 - } = _a2, restProps = __rest7(_a2, ["prefixCls", "id", "open", "defaultOpen", "mode", "showSearch", "searchValue", "onSearch", "allowClear", "clearIcon", "showArrow", "inputIcon", "disabled", "loading", "getInputElement", "getPopupContainer", "placement", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "showAction", "direction", "tokenSeparators", "tagRender", "optionLabelRender", "onPopupScroll", "onDropdownVisibleChange", "onFocus", "onBlur", "onKeyup", "onKeydown", "onMousedown", "onClear", "omitDomProps", "getRawInputElement", "displayValues", "onDisplayValuesChange", "emptyOptions", "activeDescendantId", "activeValue", "OptionList"]); - const customizeInputElement = mode === "combobox" && getInputElement && getInputElement() || null; - const customizeRawInputElement = typeof getRawInputElement === "function" && getRawInputElement(); - const domProps = _extends({}, restProps); - let onTriggerVisibleChange; - if (customizeRawInputElement) { - onTriggerVisibleChange = (newOpen) => { - onToggleOpen(newOpen); - }; - } - DEFAULT_OMIT_PROPS.forEach((propName) => { - delete domProps[propName]; - }); - omitDomProps === null || omitDomProps === void 0 ? void 0 : omitDomProps.forEach((propName) => { - delete domProps[propName]; - }); - const mergedShowArrow = showArrow !== void 0 ? showArrow : loading || !multiple.value && mode !== "combobox"; - let arrowNode; - if (mergedShowArrow) { - arrowNode = createVNode(TransBtn_default, { - "class": classNames_default(`${prefixCls}-arrow`, { - [`${prefixCls}-arrow-loading`]: loading - }), - "customizeIcon": inputIcon, - "customizeIconProps": { - loading, - searchValue: mergedSearchValue.value, - open: mergedOpen.value, - focused: mockFocused.value, - showSearch: mergedShowSearch.value - } - }, null); - } - let clearNode; - const onClearMouseDown = () => { - onClear === null || onClear === void 0 ? void 0 : onClear(); - onDisplayValuesChange([], { - type: "clear", - values: displayValues - }); - onInternalSearch("", false, false); - }; - if (!disabled && allowClear && (displayValues.length || mergedSearchValue.value)) { - clearNode = createVNode(TransBtn_default, { - "class": `${prefixCls}-clear`, - "onMousedown": onClearMouseDown, - "customizeIcon": clearIcon - }, { - default: () => [createTextVNode("×")] - }); - } - const optionList = createVNode(OptionList2, { - "ref": listRef - }, _extends(_extends({}, legacyTreeSelectContext.customSlots), { - option: slots.option - })); - const mergedClassName = classNames_default(prefixCls, attrs.class, { - [`${prefixCls}-focused`]: mockFocused.value, - [`${prefixCls}-multiple`]: multiple.value, - [`${prefixCls}-single`]: !multiple.value, - [`${prefixCls}-allow-clear`]: allowClear, - [`${prefixCls}-show-arrow`]: mergedShowArrow, - [`${prefixCls}-disabled`]: disabled, - [`${prefixCls}-loading`]: loading, - [`${prefixCls}-open`]: mergedOpen.value, - [`${prefixCls}-customize-input`]: customizeInputElement, - [`${prefixCls}-show-search`]: mergedShowSearch.value - }); - const selectorNode = createVNode(SelectTrigger_default, { - "ref": triggerRef2, - "disabled": disabled, - "prefixCls": prefixCls, - "visible": triggerOpen.value, - "popupElement": optionList, - "containerWidth": containerWidth.value, - "animation": animation, - "transitionName": transitionName2, - "dropdownStyle": dropdownStyle, - "dropdownClassName": dropdownClassName, - "direction": direction, - "dropdownMatchSelectWidth": dropdownMatchSelectWidth, - "dropdownRender": dropdownRender, - "dropdownAlign": dropdownAlign, - "placement": placement, - "getPopupContainer": getPopupContainer, - "empty": emptyOptions, - "getTriggerDOMNode": () => selectorDomRef.current, - "onPopupVisibleChange": onTriggerVisibleChange, - "onPopupMouseEnter": onPopupMouseEnter, - "onPopupFocusin": onPopupFocusin, - "onPopupFocusout": onPopupFocusout - }, { - default: () => { - return customizeRawInputElement ? isValidElement(customizeRawInputElement) && cloneElement(customizeRawInputElement, { - ref: selectorDomRef - }, false, true) : createVNode(Selector_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "domRef": selectorDomRef, - "prefixCls": prefixCls, - "inputElement": customizeInputElement, - "ref": selectorRef, - "id": id, - "showSearch": mergedShowSearch.value, - "mode": mode, - "activeDescendantId": activeDescendantId, - "tagRender": tagRender, - "optionLabelRender": optionLabelRender, - "values": displayValues, - "open": mergedOpen.value, - "onToggleOpen": onToggleOpen, - "activeValue": activeValue, - "searchValue": mergedSearchValue.value, - "onSearch": onInternalSearch, - "onSearchSubmit": onInternalSearchSubmit, - "onRemove": onSelectorRemove, - "tokenWithEnter": tokenWithEnter.value - }), null); - } - }); - let renderNode; - if (customizeRawInputElement) { - renderNode = selectorNode; - } else { - renderNode = createVNode("div", _objectSpread2(_objectSpread2({}, domProps), {}, { - "class": mergedClassName, - "ref": containerRef, - "onMousedown": onInternalMouseDown, - "onKeydown": onInternalKeyDown, - "onKeyup": onInternalKeyUp - }), [mockFocused.value && !mergedOpen.value && createVNode("span", { - "style": { - width: 0, - height: 0, - position: "absolute", - overflow: "hidden", - opacity: 0 - }, - "aria-live": "polite" - }, [`${displayValues.map((_ref2) => { - let { - label, - value - } = _ref2; - return ["number", "string"].includes(typeof label) ? label : value; - }).join(", ")}`]), selectorNode, arrowNode, clearNode]); - } - return renderNode; - }; - } -}); - -// node_modules/ant-design-vue/es/vc-virtual-list/Filler.js -var Filter = (_ref, _ref2) => { - let { - height, - offset: offset4, - prefixCls, - onInnerResize - } = _ref; - let { - slots - } = _ref2; - var _a2; - let outerStyle = {}; - let innerStyle = { - display: "flex", - flexDirection: "column" - }; - if (offset4 !== void 0) { - outerStyle = { - height: `${height}px`, - position: "relative", - overflow: "hidden" - }; - innerStyle = _extends(_extends({}, innerStyle), { - transform: `translateY(${offset4}px)`, - position: "absolute", - left: 0, - right: 0, - top: 0 - }); - } - return createVNode("div", { - "style": outerStyle - }, [createVNode(vc_resize_observer_default, { - "onResize": (_ref3) => { - let { - offsetHeight - } = _ref3; - if (offsetHeight && onInnerResize) { - onInnerResize(); - } - } - }, { - default: () => [createVNode("div", { - "style": innerStyle, - "class": classNames_default({ - [`${prefixCls}-holder-inner`]: prefixCls - }) - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])] - })]); -}; -Filter.displayName = "Filter"; -Filter.inheritAttrs = false; -Filter.props = { - prefixCls: String, - /** Virtual filler height. Should be `count * itemMinHeight` */ - height: Number, - /** Set offset of visible items. Should be the top of start item position */ - offset: Number, - onInnerResize: Function -}; -var Filler_default = Filter; - -// node_modules/ant-design-vue/es/vc-virtual-list/Item.js -var Item = (_ref, _ref2) => { - let { - setRef - } = _ref; - let { - slots - } = _ref2; - var _a2; - const children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - return children && children.length ? cloneVNode(children[0], { - ref: setRef - }) : children; -}; -Item.props = { - setRef: { - type: Function, - default: () => { - } - } -}; -var Item_default2 = Item; - -// node_modules/ant-design-vue/es/vc-virtual-list/ScrollBar.js -var MIN_SIZE = 20; -function getPageY(e3) { - return "touches" in e3 ? e3.touches[0].pageY : e3.pageY; -} -var ScrollBar_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ScrollBar", - inheritAttrs: false, - props: { - prefixCls: String, - scrollTop: Number, - scrollHeight: Number, - height: Number, - count: Number, - onScroll: { - type: Function - }, - onStartMove: { - type: Function - }, - onStopMove: { - type: Function - } - }, - setup() { - return { - moveRaf: null, - scrollbarRef: createRef_default(), - thumbRef: createRef_default(), - visibleTimeout: null, - state: reactive({ - dragging: false, - pageY: null, - startTop: null, - visible: false - }) - }; - }, - watch: { - scrollTop: { - handler() { - this.delayHidden(); - }, - flush: "post" - } - }, - mounted() { - var _a2, _b; - (_a2 = this.scrollbarRef.current) === null || _a2 === void 0 ? void 0 : _a2.addEventListener("touchstart", this.onScrollbarTouchStart, supportsPassive_default ? { - passive: false - } : false); - (_b = this.thumbRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener("touchstart", this.onMouseDown, supportsPassive_default ? { - passive: false - } : false); - }, - beforeUnmount() { - this.removeEvents(); - clearTimeout(this.visibleTimeout); - }, - methods: { - delayHidden() { - clearTimeout(this.visibleTimeout); - this.state.visible = true; - this.visibleTimeout = setTimeout(() => { - this.state.visible = false; - }, 2e3); - }, - onScrollbarTouchStart(e3) { - e3.preventDefault(); - }, - onContainerMouseDown(e3) { - e3.stopPropagation(); - e3.preventDefault(); - }, - // ======================= Clean ======================= - patchEvents() { - window.addEventListener("mousemove", this.onMouseMove); - window.addEventListener("mouseup", this.onMouseUp); - this.thumbRef.current.addEventListener("touchmove", this.onMouseMove, supportsPassive_default ? { - passive: false - } : false); - this.thumbRef.current.addEventListener("touchend", this.onMouseUp); - }, - removeEvents() { - window.removeEventListener("mousemove", this.onMouseMove); - window.removeEventListener("mouseup", this.onMouseUp); - this.scrollbarRef.current.removeEventListener("touchstart", this.onScrollbarTouchStart, supportsPassive_default ? { - passive: false - } : false); - if (this.thumbRef.current) { - this.thumbRef.current.removeEventListener("touchstart", this.onMouseDown, supportsPassive_default ? { - passive: false - } : false); - this.thumbRef.current.removeEventListener("touchmove", this.onMouseMove, supportsPassive_default ? { - passive: false - } : false); - this.thumbRef.current.removeEventListener("touchend", this.onMouseUp); - } - wrapperRaf.cancel(this.moveRaf); - }, - // ======================= Thumb ======================= - onMouseDown(e3) { - const { - onStartMove - } = this.$props; - _extends(this.state, { - dragging: true, - pageY: getPageY(e3), - startTop: this.getTop() - }); - onStartMove(); - this.patchEvents(); - e3.stopPropagation(); - e3.preventDefault(); - }, - onMouseMove(e3) { - const { - dragging, - pageY, - startTop - } = this.state; - const { - onScroll - } = this.$props; - wrapperRaf.cancel(this.moveRaf); - if (dragging) { - const offsetY = getPageY(e3) - pageY; - const newTop = startTop + offsetY; - const enableScrollRange = this.getEnableScrollRange(); - const enableHeightRange = this.getEnableHeightRange(); - const ptg = enableHeightRange ? newTop / enableHeightRange : 0; - const newScrollTop = Math.ceil(ptg * enableScrollRange); - this.moveRaf = wrapperRaf(() => { - onScroll(newScrollTop); - }); - } - }, - onMouseUp() { - const { - onStopMove - } = this.$props; - this.state.dragging = false; - onStopMove(); - this.removeEvents(); - }, - // ===================== Calculate ===================== - getSpinHeight() { - const { - height, - scrollHeight - } = this.$props; - let baseHeight = height / scrollHeight * 100; - baseHeight = Math.max(baseHeight, MIN_SIZE); - baseHeight = Math.min(baseHeight, height / 2); - return Math.floor(baseHeight); - }, - getEnableScrollRange() { - const { - scrollHeight, - height - } = this.$props; - return scrollHeight - height || 0; - }, - getEnableHeightRange() { - const { - height - } = this.$props; - const spinHeight = this.getSpinHeight(); - return height - spinHeight || 0; - }, - getTop() { - const { - scrollTop - } = this.$props; - const enableScrollRange = this.getEnableScrollRange(); - const enableHeightRange = this.getEnableHeightRange(); - if (scrollTop === 0 || enableScrollRange === 0) { - return 0; - } - const ptg = scrollTop / enableScrollRange; - return ptg * enableHeightRange; - }, - // Not show scrollbar when height is large than scrollHeight - showScroll() { - const { - height, - scrollHeight - } = this.$props; - return scrollHeight > height; - } - }, - render() { - const { - dragging, - visible - } = this.state; - const { - prefixCls - } = this.$props; - const spinHeight = this.getSpinHeight() + "px"; - const top = this.getTop() + "px"; - const canScroll = this.showScroll(); - const mergedVisible = canScroll && visible; - return createVNode("div", { - "ref": this.scrollbarRef, - "class": classNames_default(`${prefixCls}-scrollbar`, { - [`${prefixCls}-scrollbar-show`]: canScroll - }), - "style": { - width: "8px", - top: 0, - bottom: 0, - right: 0, - position: "absolute", - display: mergedVisible ? void 0 : "none" - }, - "onMousedown": this.onContainerMouseDown, - "onMousemove": this.delayHidden - }, [createVNode("div", { - "ref": this.thumbRef, - "class": classNames_default(`${prefixCls}-scrollbar-thumb`, { - [`${prefixCls}-scrollbar-thumb-moving`]: dragging - }), - "style": { - width: "100%", - height: spinHeight, - top, - left: 0, - position: "absolute", - background: "rgba(0, 0, 0, 0.5)", - borderRadius: "99px", - cursor: "pointer", - userSelect: "none" - }, - "onMousedown": this.onMouseDown - }, null)]); - } -}); - -// node_modules/ant-design-vue/es/vc-virtual-list/hooks/useHeights.js -function useHeights(mergedData, getKey4, onItemAdd, onItemRemove) { - const instance = /* @__PURE__ */ new Map(); - const heights = /* @__PURE__ */ new Map(); - const updatedMark = ref(Symbol("update")); - watch(mergedData, () => { - updatedMark.value = Symbol("update"); - }); - let collectRaf = void 0; - function cancelRaf() { - wrapperRaf.cancel(collectRaf); - } - function collectHeight() { - cancelRaf(); - collectRaf = wrapperRaf(() => { - instance.forEach((element, key2) => { - if (element && element.offsetParent) { - const { - offsetHeight - } = element; - if (heights.get(key2) !== offsetHeight) { - updatedMark.value = Symbol("update"); - heights.set(key2, element.offsetHeight); - } - } - }); - }); - } - function setInstance(item, ins) { - const key2 = getKey4(item); - const origin = instance.get(key2); - if (ins) { - instance.set(key2, ins.$el || ins); - collectHeight(); - } else { - instance.delete(key2); - } - if (!origin !== !ins) { - if (ins) { - onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item); - } else { - onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item); - } - } - } - onUnmounted(() => { - cancelRaf(); - }); - return [setInstance, collectHeight, heights, updatedMark]; -} - -// node_modules/ant-design-vue/es/vc-virtual-list/hooks/useScrollTo.js -function useScrollTo(containerRef, mergedData, heights, props4, getKey4, collectHeight, syncScrollTop, triggerFlash) { - let scroll; - return (arg) => { - if (arg === null || arg === void 0) { - triggerFlash(); - return; - } - wrapperRaf.cancel(scroll); - const data = mergedData.value; - const itemHeight = props4.itemHeight; - if (typeof arg === "number") { - syncScrollTop(arg); - } else if (arg && typeof arg === "object") { - let index3; - const { - align - } = arg; - if ("index" in arg) { - ({ - index: index3 - } = arg); - } else { - index3 = data.findIndex((item) => getKey4(item) === arg.key); - } - const { - offset: offset4 = 0 - } = arg; - const syncScroll = (times2, targetAlign) => { - if (times2 < 0 || !containerRef.value) return; - const height = containerRef.value.clientHeight; - let needCollectHeight = false; - let newTargetAlign = targetAlign; - if (height) { - const mergedAlign = targetAlign || align; - let stackTop = 0; - let itemTop = 0; - let itemBottom = 0; - const maxLen = Math.min(data.length, index3); - for (let i3 = 0; i3 <= maxLen; i3 += 1) { - const key2 = getKey4(data[i3]); - itemTop = stackTop; - const cacheHeight = heights.get(key2); - itemBottom = itemTop + (cacheHeight === void 0 ? itemHeight : cacheHeight); - stackTop = itemBottom; - if (i3 === index3 && cacheHeight === void 0) { - needCollectHeight = true; - } - } - const scrollTop = containerRef.value.scrollTop; - let targetTop = null; - switch (mergedAlign) { - case "top": - targetTop = itemTop - offset4; - break; - case "bottom": - targetTop = itemBottom - height + offset4; - break; - default: { - const scrollBottom = scrollTop + height; - if (itemTop < scrollTop) { - newTargetAlign = "top"; - } else if (itemBottom > scrollBottom) { - newTargetAlign = "bottom"; - } - } - } - if (targetTop !== null && targetTop !== scrollTop) { - syncScrollTop(targetTop); - } - } - scroll = wrapperRaf(() => { - if (needCollectHeight) { - collectHeight(); - } - syncScroll(times2 - 1, newTargetAlign); - }, 2); - }; - syncScroll(5); - } - }; -} - -// node_modules/ant-design-vue/es/vc-virtual-list/utils/isFirefox.js -var isFF = typeof navigator === "object" && /Firefox/i.test(navigator.userAgent); -var isFirefox_default = isFF; - -// node_modules/ant-design-vue/es/vc-virtual-list/hooks/useOriginScroll.js -var useOriginScroll_default = (isScrollAtTop, isScrollAtBottom) => { - let lock = false; - let lockTimeout = null; - function lockScroll() { - clearTimeout(lockTimeout); - lock = true; - lockTimeout = setTimeout(() => { - lock = false; - }, 50); - } - return function(deltaY) { - let smoothOffset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const originScroll = ( - // Pass origin wheel when on the top - deltaY < 0 && isScrollAtTop.value || // Pass origin wheel when on the bottom - deltaY > 0 && isScrollAtBottom.value - ); - if (smoothOffset && originScroll) { - clearTimeout(lockTimeout); - lock = false; - } else if (!originScroll || lock) { - lockScroll(); - } - return !lock && originScroll; - }; -}; - -// node_modules/ant-design-vue/es/vc-virtual-list/hooks/useFrameWheel.js -function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, onWheelDelta) { - let offsetRef = 0; - let nextFrame = null; - let wheelValue = null; - let isMouseScroll = false; - const originScroll = useOriginScroll_default(isScrollAtTop, isScrollAtBottom); - function onWheel(event) { - if (!inVirtual.value) return; - wrapperRaf.cancel(nextFrame); - const { - deltaY - } = event; - offsetRef += deltaY; - wheelValue = deltaY; - if (originScroll(deltaY)) return; - if (!isFirefox_default) { - event.preventDefault(); - } - nextFrame = wrapperRaf(() => { - const patchMultiple = isMouseScroll ? 10 : 1; - onWheelDelta(offsetRef * patchMultiple); - offsetRef = 0; - }); - } - function onFireFoxScroll(event) { - if (!inVirtual.value) return; - isMouseScroll = event.detail === wheelValue; - } - return [onWheel, onFireFoxScroll]; -} - -// node_modules/ant-design-vue/es/vc-virtual-list/hooks/useMobileTouchMove.js -var SMOOTH_PTG = 14 / 15; -function useMobileTouchMove(inVirtual, listRef, callback) { - let touched = false; - let touchY = 0; - let element = null; - let interval = null; - const cleanUpEvents = () => { - if (element) { - element.removeEventListener("touchmove", onTouchMove); - element.removeEventListener("touchend", onTouchEnd); - } - }; - const onTouchMove = (e3) => { - if (touched) { - const currentY = Math.ceil(e3.touches[0].pageY); - let offsetY = touchY - currentY; - touchY = currentY; - if (callback(offsetY)) { - e3.preventDefault(); - } - clearInterval(interval); - interval = setInterval(() => { - offsetY *= SMOOTH_PTG; - if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) { - clearInterval(interval); - } - }, 16); - } - }; - const onTouchEnd = () => { - touched = false; - cleanUpEvents(); - }; - const onTouchStart = (e3) => { - cleanUpEvents(); - if (e3.touches.length === 1 && !touched) { - touched = true; - touchY = Math.ceil(e3.touches[0].pageY); - element = e3.target; - element.addEventListener("touchmove", onTouchMove, { - passive: false - }); - element.addEventListener("touchend", onTouchEnd); - } - }; - const noop16 = () => { - }; - onMounted(() => { - document.addEventListener("touchmove", noop16, { - passive: false - }); - watch(inVirtual, (val) => { - listRef.value.removeEventListener("touchstart", onTouchStart); - cleanUpEvents(); - clearInterval(interval); - if (val) { - listRef.value.addEventListener("touchstart", onTouchStart, { - passive: false - }); - } - }, { - immediate: true - }); - }); - onBeforeUnmount(() => { - document.removeEventListener("touchmove", noop16); - }); -} - -// node_modules/ant-design-vue/es/vc-virtual-list/List.js -var __rest8 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var EMPTY_DATA = []; -var ScrollStyle = { - overflowY: "auto", - overflowAnchor: "none" -}; -function renderChildren(list, startIndex, endIndex, setNodeRef, renderFunc, _ref) { - let { - getKey: getKey4 - } = _ref; - return list.slice(startIndex, endIndex + 1).map((item, index3) => { - const eleIndex = startIndex + index3; - const node2 = renderFunc(item, eleIndex, { - // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {}, - }); - const key2 = getKey4(item); - return createVNode(Item_default2, { - "key": key2, - "setRef": (ele) => setNodeRef(item, ele) - }, { - default: () => [node2] - }); - }); -} -var List = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "List", - inheritAttrs: false, - props: { - prefixCls: String, - data: vue_types_default.array, - height: Number, - itemHeight: Number, - /** If not match virtual scroll condition, Set List still use height of container. */ - fullHeight: { - type: Boolean, - default: void 0 - }, - itemKey: { - type: [String, Number, Function], - required: true - }, - component: { - type: [String, Object] - }, - /** Set `false` will always use real scroll instead of virtual one */ - virtual: { - type: Boolean, - default: void 0 - }, - children: Function, - onScroll: Function, - onMousedown: Function, - onMouseenter: Function, - onVisibleChange: Function - }, - setup(props4, _ref2) { - let { - expose - } = _ref2; - const useVirtual = computed(() => { - const { - height, - itemHeight, - virtual - } = props4; - return !!(virtual !== false && height && itemHeight); - }); - const inVirtual = computed(() => { - const { - height, - itemHeight, - data: data2 - } = props4; - return useVirtual.value && data2 && itemHeight * data2.length > height; - }); - const state = reactive({ - scrollTop: 0, - scrollMoving: false - }); - const data = computed(() => { - return props4.data || EMPTY_DATA; - }); - const mergedData = shallowRef([]); - watch(data, () => { - mergedData.value = toRaw(data.value).slice(); - }, { - immediate: true - }); - const itemKey2 = shallowRef((_item) => void 0); - watch(() => props4.itemKey, (val) => { - if (typeof val === "function") { - itemKey2.value = val; - } else { - itemKey2.value = (item) => item === null || item === void 0 ? void 0 : item[val]; - } - }, { - immediate: true - }); - const componentRef = shallowRef(); - const fillerInnerRef = shallowRef(); - const scrollBarRef = shallowRef(); - const getKey4 = (item) => { - return itemKey2.value(item); - }; - const sharedConfig = { - getKey: getKey4 - }; - function syncScrollTop(newTop) { - let value; - if (typeof newTop === "function") { - value = newTop(state.scrollTop); - } else { - value = newTop; - } - const alignedTop = keepInRange(value); - if (componentRef.value) { - componentRef.value.scrollTop = alignedTop; - } - state.scrollTop = alignedTop; - } - const [setInstance, collectHeight, heights, updatedMark] = useHeights(mergedData, getKey4, null, null); - const calRes = reactive({ - scrollHeight: void 0, - start: 0, - end: 0, - offset: void 0 - }); - const offsetHeight = shallowRef(0); - onMounted(() => { - nextTick(() => { - var _a2; - offsetHeight.value = ((_a2 = fillerInnerRef.value) === null || _a2 === void 0 ? void 0 : _a2.offsetHeight) || 0; - }); - }); - onUpdated(() => { - nextTick(() => { - var _a2; - offsetHeight.value = ((_a2 = fillerInnerRef.value) === null || _a2 === void 0 ? void 0 : _a2.offsetHeight) || 0; - }); - }); - watch([useVirtual, mergedData], () => { - if (!useVirtual.value) { - _extends(calRes, { - scrollHeight: void 0, - start: 0, - end: mergedData.value.length - 1, - offset: void 0 - }); - } - }, { - immediate: true - }); - watch([useVirtual, mergedData, offsetHeight, inVirtual], () => { - if (useVirtual.value && !inVirtual.value) { - _extends(calRes, { - scrollHeight: offsetHeight.value, - start: 0, - end: mergedData.value.length - 1, - offset: void 0 - }); - } - if (componentRef.value) { - state.scrollTop = componentRef.value.scrollTop; - } - }, { - immediate: true - }); - watch([inVirtual, useVirtual, () => state.scrollTop, mergedData, updatedMark, () => props4.height, offsetHeight], () => { - if (!useVirtual.value || !inVirtual.value) { - return; - } - let itemTop = 0; - let startIndex; - let startOffset; - let endIndex; - const dataLen = mergedData.value.length; - const data2 = mergedData.value; - const scrollTop = state.scrollTop; - const { - itemHeight, - height - } = props4; - const scrollTopHeight = scrollTop + height; - for (let i3 = 0; i3 < dataLen; i3 += 1) { - const item = data2[i3]; - const key2 = getKey4(item); - let cacheHeight = heights.get(key2); - if (cacheHeight === void 0) { - cacheHeight = itemHeight; - } - const currentItemBottom = itemTop + cacheHeight; - if (startIndex === void 0 && currentItemBottom >= scrollTop) { - startIndex = i3; - startOffset = itemTop; - } - if (endIndex === void 0 && currentItemBottom > scrollTopHeight) { - endIndex = i3; - } - itemTop = currentItemBottom; - } - if (startIndex === void 0) { - startIndex = 0; - startOffset = 0; - endIndex = Math.ceil(height / itemHeight); - } - if (endIndex === void 0) { - endIndex = dataLen - 1; - } - endIndex = Math.min(endIndex + 1, dataLen); - _extends(calRes, { - scrollHeight: itemTop, - start: startIndex, - end: endIndex, - offset: startOffset - }); - }, { - immediate: true - }); - const maxScrollHeight = computed(() => calRes.scrollHeight - props4.height); - function keepInRange(newScrollTop) { - let newTop = newScrollTop; - if (!Number.isNaN(maxScrollHeight.value)) { - newTop = Math.min(newTop, maxScrollHeight.value); - } - newTop = Math.max(newTop, 0); - return newTop; - } - const isScrollAtTop = computed(() => state.scrollTop <= 0); - const isScrollAtBottom = computed(() => state.scrollTop >= maxScrollHeight.value); - const originScroll = useOriginScroll_default(isScrollAtTop, isScrollAtBottom); - function onScrollBar(newScrollTop) { - const newTop = newScrollTop; - syncScrollTop(newTop); - } - function onFallbackScroll(e3) { - var _a2; - const { - scrollTop: newScrollTop - } = e3.currentTarget; - if (newScrollTop !== state.scrollTop) { - syncScrollTop(newScrollTop); - } - (_a2 = props4.onScroll) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - } - const [onRawWheel, onFireFoxScroll] = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, (offsetY) => { - syncScrollTop((top) => { - const newTop = top + offsetY; - return newTop; - }); - }); - useMobileTouchMove(useVirtual, componentRef, (deltaY, smoothOffset) => { - if (originScroll(deltaY, smoothOffset)) { - return false; - } - onRawWheel({ - preventDefault() { - }, - deltaY - }); - return true; - }); - function onMozMousePixelScroll(e3) { - if (useVirtual.value) { - e3.preventDefault(); - } - } - const removeEventListener = () => { - if (componentRef.value) { - componentRef.value.removeEventListener("wheel", onRawWheel, supportsPassive_default ? { - passive: false - } : false); - componentRef.value.removeEventListener("DOMMouseScroll", onFireFoxScroll); - componentRef.value.removeEventListener("MozMousePixelScroll", onMozMousePixelScroll); - } - }; - watchEffect(() => { - nextTick(() => { - if (componentRef.value) { - removeEventListener(); - componentRef.value.addEventListener("wheel", onRawWheel, supportsPassive_default ? { - passive: false - } : false); - componentRef.value.addEventListener("DOMMouseScroll", onFireFoxScroll); - componentRef.value.addEventListener("MozMousePixelScroll", onMozMousePixelScroll); - } - }); - }); - onBeforeUnmount(() => { - removeEventListener(); - }); - const scrollTo3 = useScrollTo(componentRef, mergedData, heights, props4, getKey4, collectHeight, syncScrollTop, () => { - var _a2; - (_a2 = scrollBarRef.value) === null || _a2 === void 0 ? void 0 : _a2.delayHidden(); - }); - expose({ - scrollTo: scrollTo3 - }); - const componentStyle = computed(() => { - let cs = null; - if (props4.height) { - cs = _extends({ - [props4.fullHeight ? "height" : "maxHeight"]: props4.height + "px" - }, ScrollStyle); - if (useVirtual.value) { - cs.overflowY = "hidden"; - if (state.scrollMoving) { - cs.pointerEvents = "none"; - } - } - } - return cs; - }); - watch([() => calRes.start, () => calRes.end, mergedData], () => { - if (props4.onVisibleChange) { - const renderList = mergedData.value.slice(calRes.start, calRes.end + 1); - props4.onVisibleChange(renderList, mergedData.value); - } - }, { - flush: "post" - }); - const delayHideScrollBar = () => { - var _a2; - (_a2 = scrollBarRef.value) === null || _a2 === void 0 ? void 0 : _a2.delayHidden(); - }; - return { - state, - mergedData, - componentStyle, - onFallbackScroll, - onScrollBar, - componentRef, - useVirtual, - calRes, - collectHeight, - setInstance, - sharedConfig, - scrollBarRef, - fillerInnerRef, - delayHideScrollBar - }; - }, - render() { - const _a2 = _extends(_extends({}, this.$props), this.$attrs), { - prefixCls = "rc-virtual-list", - height, - itemHeight, - // eslint-disable-next-line no-unused-vars - fullHeight, - data, - itemKey: itemKey2, - virtual, - component: Component = "div", - onScroll, - children = this.$slots.default, - style, - class: className - } = _a2, restProps = __rest8(_a2, ["prefixCls", "height", "itemHeight", "fullHeight", "data", "itemKey", "virtual", "component", "onScroll", "children", "style", "class"]); - const mergedClassName = classNames_default(prefixCls, className); - const { - scrollTop - } = this.state; - const { - scrollHeight, - offset: offset4, - start, - end - } = this.calRes; - const { - componentStyle, - onFallbackScroll, - onScrollBar, - useVirtual, - collectHeight, - sharedConfig, - setInstance, - mergedData, - delayHideScrollBar - } = this; - return createVNode("div", _objectSpread2({ - "style": _extends(_extends({}, style), { - position: "relative" - }), - "class": mergedClassName - }, restProps), [createVNode(Component, { - "class": `${prefixCls}-holder`, - "style": componentStyle, - "ref": "componentRef", - "onScroll": onFallbackScroll, - "onMouseenter": delayHideScrollBar - }, { - default: () => [createVNode(Filler_default, { - "prefixCls": prefixCls, - "height": scrollHeight, - "offset": offset4, - "onInnerResize": collectHeight, - "ref": "fillerInnerRef" - }, { - default: () => renderChildren(mergedData, start, end, setInstance, children, sharedConfig) - })] - }), useVirtual && createVNode(ScrollBar_default, { - "ref": "scrollBarRef", - "prefixCls": prefixCls, - "scrollTop": scrollTop, - "height": height, - "scrollHeight": scrollHeight, - "count": mergedData.length, - "onScroll": onScrollBar, - "onStartMove": () => { - this.state.scrollMoving = true; - }, - "onStopMove": () => { - this.state.scrollMoving = false; - } - }, null)]); - } -}); -var List_default = List; - -// node_modules/ant-design-vue/es/vc-virtual-list/index.js -var vc_virtual_list_default = List_default; - -// node_modules/ant-design-vue/es/_util/hooks/useMemo.js -function useMemo(getValue5, condition, shouldUpdate) { - const cacheRef = ref(getValue5()); - watch(condition, (next2, pre) => { - if (shouldUpdate) { - if (shouldUpdate(next2, pre)) { - cacheRef.value = getValue5(); - } - } else { - cacheRef.value = getValue5(); - } - }); - return cacheRef; -} - -// node_modules/ant-design-vue/es/vc-select/utils/platformUtil.js -function isPlatformMac() { - return /(mac\sos|macintosh)/i.test(navigator.appVersion); -} - -// node_modules/ant-design-vue/es/vc-select/SelectContext.js -var SelectContextKey = Symbol("SelectContextKey"); -function useProvideSelectProps(props4) { - return provide(SelectContextKey, props4); -} -function useSelectProps() { - return inject(SelectContextKey, {}); -} - -// node_modules/ant-design-vue/es/vc-select/OptionList.js -var __rest9 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function isTitleType(content) { - return typeof content === "string" || typeof content === "number"; -} -var OptionList = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "OptionList", - inheritAttrs: false, - setup(_2, _ref) { - let { - expose, - slots - } = _ref; - const baseProps3 = useBaseProps(); - const props4 = useSelectProps(); - const itemPrefixCls = computed(() => `${baseProps3.prefixCls}-item`); - const memoFlattenOptions = useMemo(() => props4.flattenOptions, [() => baseProps3.open, () => props4.flattenOptions], (next2) => next2[0]); - const listRef = createRef_default(); - const onListMouseDown = (event) => { - event.preventDefault(); - }; - const scrollIntoView2 = (args) => { - if (listRef.current) { - listRef.current.scrollTo(typeof args === "number" ? { - index: args - } : args); - } - }; - const getEnabledActiveIndex = function(index3) { - let offset4 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; - const len = memoFlattenOptions.value.length; - for (let i3 = 0; i3 < len; i3 += 1) { - const current = (index3 + i3 * offset4 + len) % len; - const { - group, - data - } = memoFlattenOptions.value[current]; - if (!group && !data.disabled) { - return current; - } - } - return -1; - }; - const state = reactive({ - activeIndex: getEnabledActiveIndex(0) - }); - const setActive = function(index3) { - let fromKeyboard = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - state.activeIndex = index3; - const info = { - source: fromKeyboard ? "keyboard" : "mouse" - }; - const flattenItem = memoFlattenOptions.value[index3]; - if (!flattenItem) { - props4.onActiveValue(null, -1, info); - return; - } - props4.onActiveValue(flattenItem.value, index3, info); - }; - watch([() => memoFlattenOptions.value.length, () => baseProps3.searchValue], () => { - setActive(props4.defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1); - }, { - immediate: true - }); - const isSelected = (value) => props4.rawValues.has(value) && baseProps3.mode !== "combobox"; - watch([() => baseProps3.open, () => baseProps3.searchValue], () => { - if (!baseProps3.multiple && baseProps3.open && props4.rawValues.size === 1) { - const value = Array.from(props4.rawValues)[0]; - const index3 = toRaw(memoFlattenOptions.value).findIndex((_ref2) => { - let { - data - } = _ref2; - return data[props4.fieldNames.value] === value; - }); - if (index3 !== -1) { - setActive(index3); - nextTick(() => { - scrollIntoView2(index3); - }); - } - } - if (baseProps3.open) { - nextTick(() => { - var _a2; - (_a2 = listRef.current) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(void 0); - }); - } - }, { - immediate: true, - flush: "post" - }); - const onSelectValue = (value) => { - if (value !== void 0) { - props4.onSelect(value, { - selected: !props4.rawValues.has(value) - }); - } - if (!baseProps3.multiple) { - baseProps3.toggleOpen(false); - } - }; - const getLabel = (item) => typeof item.label === "function" ? item.label() : item.label; - function renderItem(index3) { - const item = memoFlattenOptions.value[index3]; - if (!item) return null; - const itemData = item.data || {}; - const { - value - } = itemData; - const { - group - } = item; - const attrs = pickAttrs(itemData, true); - const mergedLabel = getLabel(item); - return item ? createVNode("div", _objectSpread2(_objectSpread2({ - "aria-label": typeof mergedLabel === "string" && !group ? mergedLabel : null - }, attrs), {}, { - "key": index3, - "role": group ? "presentation" : "option", - "id": `${baseProps3.id}_list_${index3}`, - "aria-selected": isSelected(value) - }), [value]) : null; - } - const onKeydown = (event) => { - const { - which, - ctrlKey - } = event; - switch (which) { - case KeyCode_default.N: - case KeyCode_default.P: - case KeyCode_default.UP: - case KeyCode_default.DOWN: { - let offset4 = 0; - if (which === KeyCode_default.UP) { - offset4 = -1; - } else if (which === KeyCode_default.DOWN) { - offset4 = 1; - } else if (isPlatformMac() && ctrlKey) { - if (which === KeyCode_default.N) { - offset4 = 1; - } else if (which === KeyCode_default.P) { - offset4 = -1; - } - } - if (offset4 !== 0) { - const nextActiveIndex = getEnabledActiveIndex(state.activeIndex + offset4, offset4); - scrollIntoView2(nextActiveIndex); - setActive(nextActiveIndex, true); - } - break; - } - case KeyCode_default.ENTER: { - const item = memoFlattenOptions.value[state.activeIndex]; - if (item && !item.data.disabled) { - onSelectValue(item.value); - } else { - onSelectValue(void 0); - } - if (baseProps3.open) { - event.preventDefault(); - } - break; - } - case KeyCode_default.ESC: { - baseProps3.toggleOpen(false); - if (baseProps3.open) { - event.stopPropagation(); - } - } - } - }; - const onKeyup = () => { - }; - const scrollTo3 = (index3) => { - scrollIntoView2(index3); - }; - expose({ - onKeydown, - onKeyup, - scrollTo: scrollTo3 - }); - return () => { - const { - id, - notFoundContent, - onPopupScroll - } = baseProps3; - const { - menuItemSelectedIcon, - fieldNames, - virtual, - listHeight, - listItemHeight - } = props4; - const renderOption = slots.option; - const { - activeIndex - } = state; - const omitFieldNameList = Object.keys(fieldNames).map((key2) => fieldNames[key2]); - if (memoFlattenOptions.value.length === 0) { - return createVNode("div", { - "role": "listbox", - "id": `${id}_list`, - "class": `${itemPrefixCls.value}-empty`, - "onMousedown": onListMouseDown - }, [notFoundContent]); - } - return createVNode(Fragment, null, [createVNode("div", { - "role": "listbox", - "id": `${id}_list`, - "style": { - height: 0, - width: 0, - overflow: "hidden" - } - }, [renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)]), createVNode(vc_virtual_list_default, { - "itemKey": "key", - "ref": listRef, - "data": memoFlattenOptions.value, - "height": listHeight, - "itemHeight": listItemHeight, - "fullHeight": false, - "onMousedown": onListMouseDown, - "onScroll": onPopupScroll, - "virtual": virtual - }, { - default: (item, itemIndex) => { - var _a2; - const { - group, - groupOption, - data, - value - } = item; - const { - key: key2 - } = data; - const label = typeof item.label === "function" ? item.label() : item.label; - if (group) { - const groupTitle = (_a2 = data.title) !== null && _a2 !== void 0 ? _a2 : isTitleType(label) && label; - return createVNode("div", { - "class": classNames_default(itemPrefixCls.value, `${itemPrefixCls.value}-group`), - "title": groupTitle - }, [renderOption ? renderOption(data) : label !== void 0 ? label : key2]); - } - const { - disabled, - title, - children, - style, - class: cls, - className - } = data, otherProps = __rest9(data, ["disabled", "title", "children", "style", "class", "className"]); - const passedProps = omit_default(otherProps, omitFieldNameList); - const selected = isSelected(value); - const optionPrefixCls = `${itemPrefixCls.value}-option`; - const optionClassName = classNames_default(itemPrefixCls.value, optionPrefixCls, cls, className, { - [`${optionPrefixCls}-grouped`]: groupOption, - [`${optionPrefixCls}-active`]: activeIndex === itemIndex && !disabled, - [`${optionPrefixCls}-disabled`]: disabled, - [`${optionPrefixCls}-selected`]: selected - }); - const mergedLabel = getLabel(item); - const iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === "function" || selected; - const content = typeof mergedLabel === "number" ? mergedLabel : mergedLabel || value; - let optionTitle = isTitleType(content) ? content.toString() : void 0; - if (title !== void 0) { - optionTitle = title; - } - return createVNode("div", _objectSpread2(_objectSpread2({}, passedProps), {}, { - "aria-selected": selected, - "class": optionClassName, - "title": optionTitle, - "onMousemove": (e3) => { - if (otherProps.onMousemove) { - otherProps.onMousemove(e3); - } - if (activeIndex === itemIndex || disabled) { - return; - } - setActive(itemIndex); - }, - "onClick": (e3) => { - if (!disabled) { - onSelectValue(value); - } - if (otherProps.onClick) { - otherProps.onClick(e3); - } - }, - "style": style - }), [createVNode("div", { - "class": `${optionPrefixCls}-content` - }, [renderOption ? renderOption(data) : content]), isValidElement(menuItemSelectedIcon) || selected, iconVisible && createVNode(TransBtn_default, { - "class": `${itemPrefixCls.value}-option-state`, - "customizeIcon": menuItemSelectedIcon, - "customizeIconProps": { - isSelected: selected - } - }, { - default: () => [selected ? "✓" : null] - })]); - } - })]); - }; - } -}); -var OptionList_default = OptionList; - -// node_modules/ant-design-vue/es/vc-select/utils/legacyUtil.js -var __rest10 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function convertNodeToOption(node2) { - const _a2 = node2, { - key: key2, - children - } = _a2, _b = _a2.props, { - value, - disabled - } = _b, restProps = __rest10(_b, ["value", "disabled"]); - const child = children === null || children === void 0 ? void 0 : children.default; - return _extends({ - key: key2, - value: value !== void 0 ? value : key2, - children: child, - disabled: disabled || disabled === "" - }, restProps); -} -function convertChildrenToData(nodes) { - let optionOnly = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const dd = flattenChildren(nodes).map((node2, index3) => { - var _a2; - if (!isValidElement(node2) || !node2.type) { - return null; - } - const { - type: { - isSelectOptGroup - }, - key: key2, - children, - props: props4 - } = node2; - if (optionOnly || !isSelectOptGroup) { - return convertNodeToOption(node2); - } - const child = children && children.default ? children.default() : void 0; - const label = (props4 === null || props4 === void 0 ? void 0 : props4.label) || ((_a2 = children.label) === null || _a2 === void 0 ? void 0 : _a2.call(children)) || key2; - return _extends(_extends({ - key: `__RC_SELECT_GRP__${key2 === null ? index3 : String(key2)}__` - }, props4), { - label, - options: convertChildrenToData(child || []) - }); - }).filter((data) => data); - return dd; -} - -// node_modules/ant-design-vue/es/vc-select/hooks/useOptions.js -function useOptions(options, children, fieldNames) { - const mergedOptions = shallowRef(); - const valueOptions = shallowRef(); - const labelOptions = shallowRef(); - const tempMergedOptions = shallowRef([]); - watch([options, children], () => { - if (options.value) { - tempMergedOptions.value = toRaw(options.value).slice(); - } else { - tempMergedOptions.value = convertChildrenToData(children.value); - } - }, { - immediate: true, - deep: true - }); - watchEffect(() => { - const newOptions = tempMergedOptions.value; - const newValueOptions = /* @__PURE__ */ new Map(); - const newLabelOptions = /* @__PURE__ */ new Map(); - const fieldNamesValue = fieldNames.value; - function dig(optionList) { - let isChildren = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - for (let i3 = 0; i3 < optionList.length; i3 += 1) { - const option = optionList[i3]; - if (!option[fieldNamesValue.options] || isChildren) { - newValueOptions.set(option[fieldNamesValue.value], option); - newLabelOptions.set(option[fieldNamesValue.label], option); - } else { - dig(option[fieldNamesValue.options], true); - } - } - } - dig(newOptions); - mergedOptions.value = newOptions; - valueOptions.value = newValueOptions; - labelOptions.value = newLabelOptions; - }); - return { - options: mergedOptions, - valueOptions, - labelOptions - }; -} - -// node_modules/ant-design-vue/es/vc-select/hooks/useId.js -var uuid3 = 0; -var isBrowserClient = canUseDom_default(); -function getUUID() { - let retId; - if (isBrowserClient) { - retId = uuid3; - uuid3 += 1; - } else { - retId = "TEST_OR_SSR"; - } - return retId; -} -function useId() { - let id = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ref(""); - const innerId = `rc_select_${getUUID()}`; - return id.value || innerId; -} - -// node_modules/ant-design-vue/es/vc-select/utils/commonUtil.js -function toArray(value) { - if (Array.isArray(value)) { - return value; - } - return value !== void 0 ? [value] : []; -} -var isClient = typeof window !== "undefined" && window.document && window.document.documentElement; - -// node_modules/ant-design-vue/es/vc-select/utils/warningPropsUtil.js -function warningProps(props4) { - const { - mode, - options, - children, - backfill, - allowClear, - placeholder, - getInputElement, - showSearch, - onSearch, - defaultOpen, - autofocus, - labelInValue, - value, - inputValue, - optionLabelProp - } = props4; - const multiple = isMultiple(mode); - const mergedShowSearch = showSearch !== void 0 ? showSearch : multiple || mode === "combobox"; - const mergedOptions = options || convertChildrenToData(children); - warning_default(mode !== "tags" || mergedOptions.every((opt) => !opt.disabled), "Please avoid setting option to disabled in tags mode since user can always type text as tag."); - warning_default(mode !== "combobox" || !optionLabelProp, "`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly."); - warning_default(mode === "combobox" || !backfill, "`backfill` only works with `combobox` mode."); - warning_default(mode === "combobox" || !getInputElement, "`getInputElement` only work with `combobox` mode."); - noteOnce(mode !== "combobox" || !getInputElement || !allowClear || !placeholder, "Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`."); - if (onSearch && !mergedShowSearch && mode !== "combobox" && mode !== "tags") { - warning_default(false, "`onSearch` should work with `showSearch` instead of use alone."); - } - noteOnce(!defaultOpen || autofocus, "`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autofocus` if needed."); - if (value !== void 0 && value !== null) { - const values2 = toArray(value); - warning_default(!labelInValue || values2.every((val) => typeof val === "object" && ("key" in val || "value" in val)), "`value` should in shape of `{ value: string | number, label?: any }` when you set `labelInValue` to `true`"); - warning_default(!multiple || Array.isArray(value), "`value` should be array when `mode` is `multiple` or `tags`"); - } - if (children) { - let invalidateChildType = null; - children.some((node2) => { - var _a2; - if (!isValidElement(node2) || !node2.type) { - return false; - } - const { - type: type4 - } = node2; - if (type4.isSelectOption) { - return false; - } - if (type4.isSelectOptGroup) { - const childs = ((_a2 = node2.children) === null || _a2 === void 0 ? void 0 : _a2.default()) || []; - const allChildrenValid = childs.every((subNode) => { - if (!isValidElement(subNode) || !node2.type || subNode.type.isSelectOption) { - return true; - } - invalidateChildType = subNode.type; - return false; - }); - if (allChildrenValid) { - return false; - } - return true; - } - invalidateChildType = type4; - return true; - }); - if (invalidateChildType) { - warning_default(false, `\`children\` should be \`Select.Option\` or \`Select.OptGroup\` instead of \`${invalidateChildType.displayName || invalidateChildType.name || invalidateChildType}\`.`); - } - warning_default(inputValue === void 0, "`inputValue` is deprecated, please use `searchValue` instead."); - } -} -var warningPropsUtil_default = warningProps; - -// node_modules/ant-design-vue/es/vc-select/hooks/useFilterOptions.js -function includes(test, search) { - return toArray(test).join("").toUpperCase().includes(search); -} -var useFilterOptions_default = (options, fieldNames, searchValue, filterOption2, optionFilterProp) => computed(() => { - const searchValueVal = searchValue.value; - const optionFilterPropValue = optionFilterProp === null || optionFilterProp === void 0 ? void 0 : optionFilterProp.value; - const filterOptionValue = filterOption2 === null || filterOption2 === void 0 ? void 0 : filterOption2.value; - if (!searchValueVal || filterOptionValue === false) { - return options.value; - } - const { - options: fieldOptions, - label: fieldLabel, - value: fieldValue - } = fieldNames.value; - const filteredOptions = []; - const customizeFilter = typeof filterOptionValue === "function"; - const upperSearch = searchValueVal.toUpperCase(); - const filterFunc = customizeFilter ? filterOptionValue : (_2, option) => { - if (optionFilterPropValue) { - return includes(option[optionFilterPropValue], upperSearch); - } - if (option[fieldOptions]) { - return includes(option[fieldLabel !== "children" ? fieldLabel : "label"], upperSearch); - } - return includes(option[fieldValue], upperSearch); - }; - const wrapOption = customizeFilter ? (opt) => injectPropsWithOption(opt) : (opt) => opt; - options.value.forEach((item) => { - if (item[fieldOptions]) { - const matchGroup = filterFunc(searchValueVal, wrapOption(item)); - if (matchGroup) { - filteredOptions.push(item); - } else { - const subOptions = item[fieldOptions].filter((subItem) => filterFunc(searchValueVal, wrapOption(subItem))); - if (subOptions.length) { - filteredOptions.push(_extends(_extends({}, item), { - [fieldOptions]: subOptions - })); - } - } - return; - } - if (filterFunc(searchValueVal, wrapOption(item))) { - filteredOptions.push(item); - } - }); - return filteredOptions; -}); - -// node_modules/ant-design-vue/es/vc-select/hooks/useCache.js -var useCache_default = (labeledValues, valueOptions) => { - const cacheRef = shallowRef({ - values: /* @__PURE__ */ new Map(), - options: /* @__PURE__ */ new Map() - }); - const filledLabeledValues = computed(() => { - const { - values: prevValueCache, - options: prevOptionCache - } = cacheRef.value; - const patchedValues = labeledValues.value.map((item) => { - var _a2; - if (item.label === void 0) { - return _extends(_extends({}, item), { - label: (_a2 = prevValueCache.get(item.value)) === null || _a2 === void 0 ? void 0 : _a2.label - }); - } - return item; - }); - const valueCache = /* @__PURE__ */ new Map(); - const optionCache = /* @__PURE__ */ new Map(); - patchedValues.forEach((item) => { - valueCache.set(item.value, item); - optionCache.set(item.value, valueOptions.value.get(item.value) || prevOptionCache.get(item.value)); - }); - cacheRef.value.values = valueCache; - cacheRef.value.options = optionCache; - return patchedValues; - }); - const getOption = (val) => valueOptions.value.get(val) || cacheRef.value.options.get(val); - return [filledLabeledValues, getOption]; -}; - -// node_modules/ant-design-vue/es/_util/hooks/useMergedState.js -function useMergedState(defaultStateValue, option) { - const { - defaultValue, - value = ref() - } = option || {}; - let initValue = typeof defaultStateValue === "function" ? defaultStateValue() : defaultStateValue; - if (value.value !== void 0) { - initValue = unref(value); - } - if (defaultValue !== void 0) { - initValue = typeof defaultValue === "function" ? defaultValue() : defaultValue; - } - const innerValue = ref(initValue); - const mergedValue = ref(initValue); - watchEffect(() => { - let val = value.value !== void 0 ? value.value : innerValue.value; - if (option.postState) { - val = option.postState(val); - } - mergedValue.value = val; - }); - function triggerChange(newValue) { - const preVal = mergedValue.value; - innerValue.value = newValue; - if (toRaw(mergedValue.value) !== newValue && option.onChange) { - option.onChange(newValue, preVal); - } - } - watch(value, () => { - innerValue.value = value.value; - }); - return [mergedValue, triggerChange]; -} - -// node_modules/ant-design-vue/es/_util/hooks/useState.js -function useState(defaultStateValue) { - const initValue = typeof defaultStateValue === "function" ? defaultStateValue() : defaultStateValue; - const innerValue = ref(initValue); - function triggerChange(newValue) { - innerValue.value = newValue; - } - return [innerValue, triggerChange]; -} - -// node_modules/ant-design-vue/es/vc-select/Select.js -var OMIT_DOM_PROPS = ["inputValue"]; -function selectProps() { - return _extends(_extends({}, baseSelectPropsWithoutPrivate()), { - prefixCls: String, - id: String, - backfill: { - type: Boolean, - default: void 0 - }, - // >>> Field Names - fieldNames: Object, - // >>> Search - /** @deprecated Use `searchValue` instead */ - inputValue: String, - searchValue: String, - onSearch: Function, - autoClearSearchValue: { - type: Boolean, - default: void 0 - }, - // >>> Select - onSelect: Function, - onDeselect: Function, - // >>> Options - /** - * In Select, `false` means do nothing. - * In TreeSelect, `false` will highlight match item. - * It's by design. - */ - filterOption: { - type: [Boolean, Function], - default: void 0 - }, - filterSort: Function, - optionFilterProp: String, - optionLabelProp: String, - options: Array, - defaultActiveFirstOption: { - type: Boolean, - default: void 0 - }, - virtual: { - type: Boolean, - default: void 0 - }, - listHeight: Number, - listItemHeight: Number, - // >>> Icon - menuItemSelectedIcon: vue_types_default.any, - mode: String, - labelInValue: { - type: Boolean, - default: void 0 - }, - value: vue_types_default.any, - defaultValue: vue_types_default.any, - onChange: Function, - children: Array - }); -} -function isRawValue(value) { - return !value || typeof value !== "object"; -} -var Select_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "VcSelect", - inheritAttrs: false, - props: initDefaultProps_default(selectProps(), { - prefixCls: "vc-select", - autoClearSearchValue: true, - listHeight: 200, - listItemHeight: 20, - dropdownMatchSelectWidth: true - }), - setup(props4, _ref) { - let { - expose, - attrs, - slots - } = _ref; - const mergedId = useId(toRef(props4, "id")); - const multiple = computed(() => isMultiple(props4.mode)); - const childrenAsData = computed(() => !!(!props4.options && props4.children)); - const mergedFilterOption = computed(() => { - if (props4.filterOption === void 0 && props4.mode === "combobox") { - return false; - } - return props4.filterOption; - }); - const mergedFieldNames = computed(() => fillFieldNames(props4.fieldNames, childrenAsData.value)); - const [mergedSearchValue, setSearchValue] = useMergedState("", { - value: computed(() => props4.searchValue !== void 0 ? props4.searchValue : props4.inputValue), - postState: (search) => search || "" - }); - const parsedOptions = useOptions(toRef(props4, "options"), toRef(props4, "children"), mergedFieldNames); - const { - valueOptions, - labelOptions, - options: mergedOptions - } = parsedOptions; - const convert2LabelValues = (draftValues) => { - const valueList = toArray(draftValues); - return valueList.map((val) => { - var _a2, _b; - let rawValue; - let rawLabel; - let rawKey; - let rawDisabled; - if (isRawValue(val)) { - rawValue = val; - } else { - rawKey = val.key; - rawLabel = val.label; - rawValue = (_a2 = val.value) !== null && _a2 !== void 0 ? _a2 : rawKey; - } - const option = valueOptions.value.get(rawValue); - if (option) { - if (rawLabel === void 0) rawLabel = option === null || option === void 0 ? void 0 : option[props4.optionLabelProp || mergedFieldNames.value.label]; - if (rawKey === void 0) rawKey = (_b = option === null || option === void 0 ? void 0 : option.key) !== null && _b !== void 0 ? _b : rawValue; - rawDisabled = option === null || option === void 0 ? void 0 : option.disabled; - } - return { - label: rawLabel, - value: rawValue, - key: rawKey, - disabled: rawDisabled, - option - }; - }); - }; - const [internalValue, setInternalValue] = useMergedState(props4.defaultValue, { - value: toRef(props4, "value") - }); - const rawLabeledValues = computed(() => { - var _a2; - const values2 = convert2LabelValues(internalValue.value); - if (props4.mode === "combobox" && !((_a2 = values2[0]) === null || _a2 === void 0 ? void 0 : _a2.value)) { - return []; - } - return values2; - }); - const [mergedValues, getMixedOption] = useCache_default(rawLabeledValues, valueOptions); - const displayValues = computed(() => { - if (!props4.mode && mergedValues.value.length === 1) { - const firstValue = mergedValues.value[0]; - if (firstValue.value === null && (firstValue.label === null || firstValue.label === void 0)) { - return []; - } - } - return mergedValues.value.map((item) => { - var _a2; - return _extends(_extends({}, item), { - label: (_a2 = typeof item.label === "function" ? item.label() : item.label) !== null && _a2 !== void 0 ? _a2 : item.value - }); - }); - }); - const rawValues = computed(() => new Set(mergedValues.value.map((val) => val.value))); - watchEffect(() => { - var _a2; - if (props4.mode === "combobox") { - const strValue = (_a2 = mergedValues.value[0]) === null || _a2 === void 0 ? void 0 : _a2.value; - if (strValue !== void 0 && strValue !== null) { - setSearchValue(String(strValue)); - } - } - }, { - flush: "post" - }); - const createTagOption = (val, label) => { - const mergedLabel = label !== null && label !== void 0 ? label : val; - return { - [mergedFieldNames.value.value]: val, - [mergedFieldNames.value.label]: mergedLabel - }; - }; - const filledTagOptions = shallowRef(); - watchEffect(() => { - if (props4.mode !== "tags") { - filledTagOptions.value = mergedOptions.value; - return; - } - const cloneOptions = mergedOptions.value.slice(); - const existOptions = (val) => valueOptions.value.has(val); - [...mergedValues.value].sort((a2, b2) => a2.value < b2.value ? -1 : 1).forEach((item) => { - const val = item.value; - if (!existOptions(val)) { - cloneOptions.push(createTagOption(val, item.label)); - } - }); - filledTagOptions.value = cloneOptions; - }); - const filteredOptions = useFilterOptions_default(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, toRef(props4, "optionFilterProp")); - const filledSearchOptions = computed(() => { - if (props4.mode !== "tags" || !mergedSearchValue.value || filteredOptions.value.some((item) => item[props4.optionFilterProp || "value"] === mergedSearchValue.value)) { - return filteredOptions.value; - } - return [createTagOption(mergedSearchValue.value), ...filteredOptions.value]; - }); - const orderedFilteredOptions = computed(() => { - if (!props4.filterSort) { - return filledSearchOptions.value; - } - return [...filledSearchOptions.value].sort((a2, b2) => props4.filterSort(a2, b2)); - }); - const displayOptions = computed(() => flattenOptions(orderedFilteredOptions.value, { - fieldNames: mergedFieldNames.value, - childrenAsData: childrenAsData.value - })); - const triggerChange = (values2) => { - const labeledValues = convert2LabelValues(values2); - setInternalValue(labeledValues); - if (props4.onChange && // Trigger event only when value changed - (labeledValues.length !== mergedValues.value.length || labeledValues.some((newVal, index3) => { - var _a2; - return ((_a2 = mergedValues.value[index3]) === null || _a2 === void 0 ? void 0 : _a2.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value); - }))) { - const returnValues = props4.labelInValue ? labeledValues.map((v2) => { - return _extends(_extends({}, v2), { - originLabel: v2.label, - label: typeof v2.label === "function" ? v2.label() : v2.label - }); - }) : labeledValues.map((v2) => v2.value); - const returnOptions = labeledValues.map((v2) => injectPropsWithOption(getMixedOption(v2.value))); - props4.onChange( - // Value - multiple.value ? returnValues : returnValues[0], - // Option - multiple.value ? returnOptions : returnOptions[0] - ); - } - }; - const [activeValue, setActiveValue] = useState(null); - const [accessibilityIndex, setAccessibilityIndex] = useState(0); - const mergedDefaultActiveFirstOption = computed(() => props4.defaultActiveFirstOption !== void 0 ? props4.defaultActiveFirstOption : props4.mode !== "combobox"); - const onActiveValue = function(active, index3) { - let { - source = "keyboard" - } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - setAccessibilityIndex(index3); - if (props4.backfill && props4.mode === "combobox" && active !== null && source === "keyboard") { - setActiveValue(String(active)); - } - }; - const triggerSelect = (val, selected) => { - const getSelectEnt = () => { - var _a2; - const option = getMixedOption(val); - const originLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.value.label]; - return [props4.labelInValue ? { - label: typeof originLabel === "function" ? originLabel() : originLabel, - originLabel, - value: val, - key: (_a2 = option === null || option === void 0 ? void 0 : option.key) !== null && _a2 !== void 0 ? _a2 : val - } : val, injectPropsWithOption(option)]; - }; - if (selected && props4.onSelect) { - const [wrappedValue, option] = getSelectEnt(); - props4.onSelect(wrappedValue, option); - } else if (!selected && props4.onDeselect) { - const [wrappedValue, option] = getSelectEnt(); - props4.onDeselect(wrappedValue, option); - } - }; - const onInternalSelect = (val, info) => { - let cloneValues; - const mergedSelect = multiple.value ? info.selected : true; - if (mergedSelect) { - cloneValues = multiple.value ? [...mergedValues.value, val] : [val]; - } else { - cloneValues = mergedValues.value.filter((v2) => v2.value !== val); - } - triggerChange(cloneValues); - triggerSelect(val, mergedSelect); - if (props4.mode === "combobox") { - setActiveValue(""); - } else if (!multiple.value || props4.autoClearSearchValue) { - setSearchValue(""); - setActiveValue(""); - } - }; - const onDisplayValuesChange = (nextValues, info) => { - triggerChange(nextValues); - if (info.type === "remove" || info.type === "clear") { - info.values.forEach((item) => { - triggerSelect(item.value, false); - }); - } - }; - const onInternalSearch = (searchText, info) => { - var _a2; - setSearchValue(searchText); - setActiveValue(null); - if (info.source === "submit") { - const formatted = (searchText || "").trim(); - if (formatted) { - const newRawValues = Array.from(/* @__PURE__ */ new Set([...rawValues.value, formatted])); - triggerChange(newRawValues); - triggerSelect(formatted, true); - setSearchValue(""); - } - return; - } - if (info.source !== "blur") { - if (props4.mode === "combobox") { - triggerChange(searchText); - } - (_a2 = props4.onSearch) === null || _a2 === void 0 ? void 0 : _a2.call(props4, searchText); - } - }; - const onInternalSearchSplit = (words2) => { - let patchValues = words2; - if (props4.mode !== "tags") { - patchValues = words2.map((word) => { - const opt = labelOptions.value.get(word); - return opt === null || opt === void 0 ? void 0 : opt.value; - }).filter((val) => val !== void 0); - } - const newRawValues = Array.from(/* @__PURE__ */ new Set([...rawValues.value, ...patchValues])); - triggerChange(newRawValues); - newRawValues.forEach((newRawValue) => { - triggerSelect(newRawValue, true); - }); - }; - const realVirtual = computed(() => props4.virtual !== false && props4.dropdownMatchSelectWidth !== false); - useProvideSelectProps(toReactive(_extends(_extends({}, parsedOptions), { - flattenOptions: displayOptions, - onActiveValue, - defaultActiveFirstOption: mergedDefaultActiveFirstOption, - onSelect: onInternalSelect, - menuItemSelectedIcon: toRef(props4, "menuItemSelectedIcon"), - rawValues, - fieldNames: mergedFieldNames, - virtual: realVirtual, - listHeight: toRef(props4, "listHeight"), - listItemHeight: toRef(props4, "listItemHeight"), - childrenAsData - }))); - if (true) { - watchEffect(() => { - warningPropsUtil_default(props4); - }, { - flush: "post" - }); - } - const selectRef = ref(); - expose({ - focus() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }, - scrollTo(arg) { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(arg); - } - }); - const pickProps = computed(() => { - return omit_default(props4, [ - "id", - "mode", - "prefixCls", - "backfill", - "fieldNames", - // Search - "inputValue", - "searchValue", - "onSearch", - "autoClearSearchValue", - // Select - "onSelect", - "onDeselect", - "dropdownMatchSelectWidth", - // Options - "filterOption", - "filterSort", - "optionFilterProp", - "optionLabelProp", - "options", - "children", - "defaultActiveFirstOption", - "menuItemSelectedIcon", - "virtual", - "listHeight", - "listItemHeight", - // Value - "value", - "defaultValue", - "labelInValue", - "onChange" - ]); - }); - return () => { - return createVNode(BaseSelect_default, _objectSpread2(_objectSpread2(_objectSpread2({}, pickProps.value), attrs), {}, { - "id": mergedId, - "prefixCls": props4.prefixCls, - "ref": selectRef, - "omitDomProps": OMIT_DOM_PROPS, - "mode": props4.mode, - "displayValues": displayValues.value, - "onDisplayValuesChange": onDisplayValuesChange, - "searchValue": mergedSearchValue.value, - "onSearch": onInternalSearch, - "onSearchSplit": onInternalSearchSplit, - "dropdownMatchSelectWidth": props4.dropdownMatchSelectWidth, - "OptionList": OptionList_default, - "emptyOptions": !displayOptions.value.length, - "activeValue": activeValue.value, - "activeDescendantId": `${mergedId}_list_${accessibilityIndex.value}` - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-select/Option.js -var Option = () => null; -Option.isSelectOption = true; -Option.displayName = "ASelectOption"; -var Option_default = Option; - -// node_modules/ant-design-vue/es/vc-select/OptGroup.js -var OptGroup = () => null; -OptGroup.isSelectOptGroup = true; -OptGroup.displayName = "ASelectOptGroup"; -var OptGroup_default = OptGroup; - -// node_modules/ant-design-vue/es/vc-select/index.js -var vc_select_default = Select_default; - -// node_modules/ant-design-vue/es/select/utils/iconUtil.js -function getIcons(props4) { - let slots = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const { - loading, - multiple, - prefixCls, - hasFeedback, - feedbackIcon, - showArrow - } = props4; - const suffixIcon = props4.suffixIcon || slots.suffixIcon && slots.suffixIcon(); - const clearIcon = props4.clearIcon || slots.clearIcon && slots.clearIcon(); - const menuItemSelectedIcon = props4.menuItemSelectedIcon || slots.menuItemSelectedIcon && slots.menuItemSelectedIcon(); - const removeIcon = props4.removeIcon || slots.removeIcon && slots.removeIcon(); - const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : createVNode(CloseCircleFilled_default, null, null); - const getSuffixIconNode = (arrowIcon) => createVNode(Fragment, null, [showArrow !== false && arrowIcon, hasFeedback && feedbackIcon]); - let mergedSuffixIcon = null; - if (suffixIcon !== void 0) { - mergedSuffixIcon = getSuffixIconNode(suffixIcon); - } else if (loading) { - mergedSuffixIcon = getSuffixIconNode(createVNode(LoadingOutlined_default, { - "spin": true - }, null)); - } else { - const iconCls = `${prefixCls}-suffix`; - mergedSuffixIcon = (_ref) => { - let { - open: open2, - showSearch - } = _ref; - if (open2 && showSearch) { - return getSuffixIconNode(createVNode(SearchOutlined_default, { - "class": iconCls - }, null)); - } - return getSuffixIconNode(createVNode(DownOutlined_default, { - "class": iconCls - }, null)); - }; - } - let mergedItemIcon = null; - if (menuItemSelectedIcon !== void 0) { - mergedItemIcon = menuItemSelectedIcon; - } else if (multiple) { - mergedItemIcon = createVNode(CheckOutlined_default, null, null); - } else { - mergedItemIcon = null; - } - let mergedRemoveIcon = null; - if (removeIcon !== void 0) { - mergedRemoveIcon = removeIcon; - } else { - mergedRemoveIcon = createVNode(CloseOutlined_default, null, null); - } - return { - clearIcon: mergedClearIcon, - suffixIcon: mergedSuffixIcon, - itemIcon: mergedItemIcon, - removeIcon: mergedRemoveIcon - }; -} - -// node_modules/ant-design-vue/es/_util/createContext.js -function createContext(defaultValue) { - const contextKey2 = Symbol("contextKey"); - const useProvide = (props4, newProps) => { - const mergedProps = reactive({}); - provide(contextKey2, mergedProps); - watchEffect(() => { - _extends(mergedProps, props4, newProps || {}); - }); - return mergedProps; - }; - const useInject = () => { - return inject(contextKey2, defaultValue) || {}; - }; - return { - useProvide, - useInject - }; -} -var createContext_default = createContext; - -// node_modules/ant-design-vue/es/form/FormItemContext.js -var ContextKey = Symbol("ContextProps"); -var InternalContextKey = Symbol("InternalContextProps"); -var useProvideFormItemContext = function(props4) { - let useValidation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : computed(() => true); - const formItemFields = ref(/* @__PURE__ */ new Map()); - const addFormItemField = (key2, type4) => { - formItemFields.value.set(key2, type4); - formItemFields.value = new Map(formItemFields.value); - }; - const removeFormItemField = (key2) => { - formItemFields.value.delete(key2); - formItemFields.value = new Map(formItemFields.value); - }; - const instance = getCurrentInstance(); - watch([useValidation, formItemFields], () => { - if (true) { - if (useValidation.value && formItemFields.value.size > 1) { - devWarning_default(false, "Form.Item", `FormItem can only collect one field item, you haved set ${[...formItemFields.value.values()].map((v2) => `\`${v2.name}\``).join(", ")} ${formItemFields.value.size} field items. - You can set not need to be collected fields into \`a-form-item-rest\``); - let cur = instance; - while (cur.parent) { - console.warn("at", cur.type); - cur = cur.parent; - } - } - } - }); - provide(ContextKey, props4); - provide(InternalContextKey, { - addFormItemField, - removeFormItemField - }); -}; -var defaultContext = { - id: computed(() => void 0), - onFieldBlur: () => { - }, - onFieldChange: () => { - }, - clearValidate: () => { - } -}; -var defaultInternalContext = { - addFormItemField: () => { - }, - removeFormItemField: () => { - } -}; -var useInjectFormItemContext = () => { - const internalContext = inject(InternalContextKey, defaultInternalContext); - const formItemFieldKey = Symbol("FormItemFieldKey"); - const instance = getCurrentInstance(); - internalContext.addFormItemField(formItemFieldKey, instance.type); - onBeforeUnmount(() => { - internalContext.removeFormItemField(formItemFieldKey); - }); - provide(InternalContextKey, defaultInternalContext); - provide(ContextKey, defaultContext); - return inject(ContextKey, defaultContext); -}; -var FormItemContext_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AFormItemRest", - setup(_2, _ref) { - let { - slots - } = _ref; - provide(InternalContextKey, defaultInternalContext); - provide(ContextKey, defaultContext); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var FormItemInputContext = createContext_default({}); -var NoFormStatus = defineComponent({ - name: "NoFormStatus", - setup(_2, _ref2) { - let { - slots - } = _ref2; - FormItemInputContext.useProvide({}); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); - -// node_modules/ant-design-vue/es/_util/statusUtils.js -function getStatusClassNames(prefixCls, status, hasFeedback) { - return classNames_default({ - [`${prefixCls}-status-success`]: status === "success", - [`${prefixCls}-status-warning`]: status === "warning", - [`${prefixCls}-status-error`]: status === "error", - [`${prefixCls}-status-validating`]: status === "validating", - [`${prefixCls}-has-feedback`]: hasFeedback - }); -} -var getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus; - -// node_modules/ant-design-vue/es/space/style/compact.js -var genSpaceCompactStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - display: "inline-flex", - "&-block": { - display: "flex", - width: "100%" - }, - "&-vertical": { - flexDirection: "column" - } - } - }; -}; -var compact_default = genSpaceCompactStyle; - -// node_modules/ant-design-vue/es/space/style/index.js -var genSpaceStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - display: "inline-flex", - "&-rtl": { - direction: "rtl" - }, - "&-vertical": { - flexDirection: "column" - }, - "&-align": { - flexDirection: "column", - "&-center": { - alignItems: "center" - }, - "&-start": { - alignItems: "flex-start" - }, - "&-end": { - alignItems: "flex-end" - }, - "&-baseline": { - alignItems: "baseline" - } - }, - [`${componentCls}-space-item`]: { - "&:empty": { - display: "none" - } - } - } - }; -}; -var style_default4 = genComponentStyleHook("Space", (token2) => [genSpaceStyle(token2), compact_default(token2)]); - -// node_modules/lodash-es/isSymbol.js -var symbolTag2 = "[object Symbol]"; -function isSymbol(value) { - return typeof value == "symbol" || isObjectLike_default(value) && baseGetTag_default(value) == symbolTag2; -} -var isSymbol_default = isSymbol; - -// node_modules/lodash-es/_baseToNumber.js -var NAN = 0 / 0; -function baseToNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol_default(value)) { - return NAN; - } - return +value; -} -var baseToNumber_default = baseToNumber; - -// node_modules/lodash-es/_arrayMap.js -function arrayMap(array4, iteratee2) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length, result2 = Array(length2); - while (++index3 < length2) { - result2[index3] = iteratee2(array4[index3], index3, array4); - } - return result2; -} -var arrayMap_default = arrayMap; - -// node_modules/lodash-es/_baseToString.js -var INFINITY = 1 / 0; -var symbolProto2 = Symbol_default ? Symbol_default.prototype : void 0; -var symbolToString = symbolProto2 ? symbolProto2.toString : void 0; -function baseToString(value) { - if (typeof value == "string") { - return value; - } - if (isArray_default(value)) { - return arrayMap_default(value, baseToString) + ""; - } - if (isSymbol_default(value)) { - return symbolToString ? symbolToString.call(value) : ""; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; -} -var baseToString_default = baseToString; - -// node_modules/lodash-es/_createMathOperation.js -function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result2; - if (value === void 0 && other === void 0) { - return defaultValue; - } - if (value !== void 0) { - result2 = value; - } - if (other !== void 0) { - if (result2 === void 0) { - return other; - } - if (typeof value == "string" || typeof other == "string") { - value = baseToString_default(value); - other = baseToString_default(other); - } else { - value = baseToNumber_default(value); - other = baseToNumber_default(other); - } - result2 = operator(value, other); - } - return result2; - }; -} -var createMathOperation_default = createMathOperation; - -// node_modules/lodash-es/add.js -var add = createMathOperation_default(function(augend, addend) { - return augend + addend; -}, 0); -var add_default = add; - -// node_modules/lodash-es/_trimmedEndIndex.js -var reWhitespace = /\s/; -function trimmedEndIndex(string3) { - var index3 = string3.length; - while (index3-- && reWhitespace.test(string3.charAt(index3))) { - } - return index3; -} -var trimmedEndIndex_default = trimmedEndIndex; - -// node_modules/lodash-es/_baseTrim.js -var reTrimStart = /^\s+/; -function baseTrim(string3) { - return string3 ? string3.slice(0, trimmedEndIndex_default(string3) + 1).replace(reTrimStart, "") : string3; -} -var baseTrim_default = baseTrim; - -// node_modules/lodash-es/toNumber.js -var NAN2 = 0 / 0; -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; -var reIsBinary = /^0b[01]+$/i; -var reIsOctal = /^0o[0-7]+$/i; -var freeParseInt = parseInt; -function toNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol_default(value)) { - return NAN2; - } - if (isObject_default(value)) { - var other = typeof value.valueOf == "function" ? value.valueOf() : value; - value = isObject_default(other) ? other + "" : other; - } - if (typeof value != "string") { - return value === 0 ? value : +value; - } - value = baseTrim_default(value); - var isBinary = reIsBinary.test(value); - return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN2 : +value; -} -var toNumber_default = toNumber; - -// node_modules/lodash-es/toFinite.js -var INFINITY2 = 1 / 0; -var MAX_INTEGER = 17976931348623157e292; -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber_default(value); - if (value === INFINITY2 || value === -INFINITY2) { - var sign = value < 0 ? -1 : 1; - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} -var toFinite_default = toFinite; - -// node_modules/lodash-es/toInteger.js -function toInteger(value) { - var result2 = toFinite_default(value), remainder = result2 % 1; - return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; -} -var toInteger_default = toInteger; - -// node_modules/lodash-es/after.js -var FUNC_ERROR_TEXT = "Expected a function"; -function after(n3, func) { - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT); - } - n3 = toInteger_default(n3); - return function() { - if (--n3 < 1) { - return func.apply(this, arguments); - } - }; -} -var after_default = after; - -// node_modules/lodash-es/identity.js -function identity(value) { - return value; -} -var identity_default = identity; - -// node_modules/lodash-es/_metaMap.js -var metaMap = WeakMap_default && new WeakMap_default(); -var metaMap_default = metaMap; - -// node_modules/lodash-es/_baseSetData.js -var baseSetData = !metaMap_default ? identity_default : function(func, data) { - metaMap_default.set(func, data); - return func; -}; -var baseSetData_default = baseSetData; - -// node_modules/lodash-es/_baseCreate.js -var objectCreate = Object.create; -var baseCreate = /* @__PURE__ */ function() { - function object4() { - } - return function(proto) { - if (!isObject_default(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object4.prototype = proto; - var result2 = new object4(); - object4.prototype = void 0; - return result2; - }; -}(); -var baseCreate_default = baseCreate; - -// node_modules/lodash-es/_createCtor.js -function createCtor(Ctor) { - return function() { - var args = arguments; - switch (args.length) { - case 0: - return new Ctor(); - case 1: - return new Ctor(args[0]); - case 2: - return new Ctor(args[0], args[1]); - case 3: - return new Ctor(args[0], args[1], args[2]); - case 4: - return new Ctor(args[0], args[1], args[2], args[3]); - case 5: - return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate_default(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); - return isObject_default(result2) ? result2 : thisBinding; - }; -} -var createCtor_default = createCtor; - -// node_modules/lodash-es/_createBind.js -var WRAP_BIND_FLAG = 1; -function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor_default(func); - function wrapper() { - var fn = this && this !== root_default && this instanceof wrapper ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; -} -var createBind_default = createBind; - -// node_modules/lodash-es/_apply.js -function apply(func, thisArg, args) { - switch (args.length) { - case 0: - return func.call(thisArg); - case 1: - return func.call(thisArg, args[0]); - case 2: - return func.call(thisArg, args[0], args[1]); - case 3: - return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} -var apply_default = apply; - -// node_modules/lodash-es/_composeArgs.js -var nativeMax = Math.max; -function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array(leftLength + rangeLength), isUncurried = !isCurried; - while (++leftIndex < leftLength) { - result2[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result2[leftIndex++] = args[argsIndex++]; - } - return result2; -} -var composeArgs_default = composeArgs; - -// node_modules/lodash-es/_composeArgsRight.js -var nativeMax2 = Math.max; -function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax2(argsLength - holdersLength, 0), result2 = Array(rangeLength + rightLength), isUncurried = !isCurried; - while (++argsIndex < rangeLength) { - result2[argsIndex] = args[argsIndex]; - } - var offset4 = argsIndex; - while (++rightIndex < rightLength) { - result2[offset4 + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[offset4 + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result2; -} -var composeArgsRight_default = composeArgsRight; - -// node_modules/lodash-es/_countHolders.js -function countHolders(array4, placeholder) { - var length2 = array4.length, result2 = 0; - while (length2--) { - if (array4[length2] === placeholder) { - ++result2; - } - } - return result2; -} -var countHolders_default = countHolders; - -// node_modules/lodash-es/_baseLodash.js -function baseLodash() { -} -var baseLodash_default = baseLodash; - -// node_modules/lodash-es/_LazyWrapper.js -var MAX_ARRAY_LENGTH = 4294967295; -function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; -} -LazyWrapper.prototype = baseCreate_default(baseLodash_default.prototype); -LazyWrapper.prototype.constructor = LazyWrapper; -var LazyWrapper_default = LazyWrapper; - -// node_modules/lodash-es/noop.js -function noop5() { -} -var noop_default = noop5; - -// node_modules/lodash-es/_getData.js -var getData = !metaMap_default ? noop_default : function(func) { - return metaMap_default.get(func); -}; -var getData_default = getData; - -// node_modules/lodash-es/_realNames.js -var realNames = {}; -var realNames_default = realNames; - -// node_modules/lodash-es/_getFuncName.js -var objectProto13 = Object.prototype; -var hasOwnProperty11 = objectProto13.hasOwnProperty; -function getFuncName(func) { - var result2 = func.name + "", array4 = realNames_default[result2], length2 = hasOwnProperty11.call(realNames_default, result2) ? array4.length : 0; - while (length2--) { - var data = array4[length2], otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result2; -} -var getFuncName_default = getFuncName; - -// node_modules/lodash-es/_LodashWrapper.js -function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = void 0; -} -LodashWrapper.prototype = baseCreate_default(baseLodash_default.prototype); -LodashWrapper.prototype.constructor = LodashWrapper; -var LodashWrapper_default = LodashWrapper; - -// node_modules/lodash-es/_copyArray.js -function copyArray(source, array4) { - var index3 = -1, length2 = source.length; - array4 || (array4 = Array(length2)); - while (++index3 < length2) { - array4[index3] = source[index3]; - } - return array4; -} -var copyArray_default = copyArray; - -// node_modules/lodash-es/_wrapperClone.js -function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper_default) { - return wrapper.clone(); - } - var result2 = new LodashWrapper_default(wrapper.__wrapped__, wrapper.__chain__); - result2.__actions__ = copyArray_default(wrapper.__actions__); - result2.__index__ = wrapper.__index__; - result2.__values__ = wrapper.__values__; - return result2; -} -var wrapperClone_default = wrapperClone; - -// node_modules/lodash-es/wrapperLodash.js -var objectProto14 = Object.prototype; -var hasOwnProperty12 = objectProto14.hasOwnProperty; -function lodash(value) { - if (isObjectLike_default(value) && !isArray_default(value) && !(value instanceof LazyWrapper_default)) { - if (value instanceof LodashWrapper_default) { - return value; - } - if (hasOwnProperty12.call(value, "__wrapped__")) { - return wrapperClone_default(value); - } - } - return new LodashWrapper_default(value); -} -lodash.prototype = baseLodash_default.prototype; -lodash.prototype.constructor = lodash; -var wrapperLodash_default = lodash; - -// node_modules/lodash-es/_isLaziable.js -function isLaziable(func) { - var funcName = getFuncName_default(func), other = wrapperLodash_default[funcName]; - if (typeof other != "function" || !(funcName in LazyWrapper_default.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData_default(other); - return !!data && func === data[0]; -} -var isLaziable_default = isLaziable; - -// node_modules/lodash-es/_shortOut.js -var HOT_COUNT = 800; -var HOT_SPAN = 16; -var nativeNow = Date.now; -function shortOut(func) { - var count = 0, lastCalled = 0; - return function() { - var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(void 0, arguments); - }; -} -var shortOut_default = shortOut; - -// node_modules/lodash-es/_setData.js -var setData = shortOut_default(baseSetData_default); -var setData_default = setData; - -// node_modules/lodash-es/_getWrapDetails.js -var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/; -var reSplitDetails = /,? & /; -function getWrapDetails(source) { - var match3 = source.match(reWrapDetails); - return match3 ? match3[1].split(reSplitDetails) : []; -} -var getWrapDetails_default = getWrapDetails; - -// node_modules/lodash-es/_insertWrapDetails.js -var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; -function insertWrapDetails(source, details) { - var length2 = details.length; - if (!length2) { - return source; - } - var lastIndex = length2 - 1; - details[lastIndex] = (length2 > 1 ? "& " : "") + details[lastIndex]; - details = details.join(length2 > 2 ? ", " : " "); - return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); -} -var insertWrapDetails_default = insertWrapDetails; - -// node_modules/lodash-es/constant.js -function constant(value) { - return function() { - return value; - }; -} -var constant_default = constant; - -// node_modules/lodash-es/_defineProperty.js -var defineProperty = function() { - try { - var func = getNative_default(Object, "defineProperty"); - func({}, "", {}); - return func; - } catch (e3) { - } -}(); -var defineProperty_default = defineProperty; - -// node_modules/lodash-es/_baseSetToString.js -var baseSetToString = !defineProperty_default ? identity_default : function(func, string3) { - return defineProperty_default(func, "toString", { - "configurable": true, - "enumerable": false, - "value": constant_default(string3), - "writable": true - }); -}; -var baseSetToString_default = baseSetToString; - -// node_modules/lodash-es/_setToString.js -var setToString = shortOut_default(baseSetToString_default); -var setToString_default = setToString; - -// node_modules/lodash-es/_arrayEach.js -function arrayEach(array4, iteratee2) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - while (++index3 < length2) { - if (iteratee2(array4[index3], index3, array4) === false) { - break; - } - } - return array4; -} -var arrayEach_default = arrayEach; - -// node_modules/lodash-es/_baseFindIndex.js -function baseFindIndex(array4, predicate, fromIndex, fromRight) { - var length2 = array4.length, index3 = fromIndex + (fromRight ? 1 : -1); - while (fromRight ? index3-- : ++index3 < length2) { - if (predicate(array4[index3], index3, array4)) { - return index3; - } - } - return -1; -} -var baseFindIndex_default = baseFindIndex; - -// node_modules/lodash-es/_baseIsNaN.js -function baseIsNaN(value) { - return value !== value; -} -var baseIsNaN_default = baseIsNaN; - -// node_modules/lodash-es/_strictIndexOf.js -function strictIndexOf(array4, value, fromIndex) { - var index3 = fromIndex - 1, length2 = array4.length; - while (++index3 < length2) { - if (array4[index3] === value) { - return index3; - } - } - return -1; -} -var strictIndexOf_default = strictIndexOf; - -// node_modules/lodash-es/_baseIndexOf.js -function baseIndexOf(array4, value, fromIndex) { - return value === value ? strictIndexOf_default(array4, value, fromIndex) : baseFindIndex_default(array4, baseIsNaN_default, fromIndex); -} -var baseIndexOf_default = baseIndexOf; - -// node_modules/lodash-es/_arrayIncludes.js -function arrayIncludes(array4, value) { - var length2 = array4 == null ? 0 : array4.length; - return !!length2 && baseIndexOf_default(array4, value, 0) > -1; -} -var arrayIncludes_default = arrayIncludes; - -// node_modules/lodash-es/_updateWrapDetails.js -var WRAP_BIND_FLAG2 = 1; -var WRAP_BIND_KEY_FLAG = 2; -var WRAP_CURRY_FLAG = 8; -var WRAP_CURRY_RIGHT_FLAG = 16; -var WRAP_PARTIAL_FLAG = 32; -var WRAP_PARTIAL_RIGHT_FLAG = 64; -var WRAP_ARY_FLAG = 128; -var WRAP_REARG_FLAG = 256; -var WRAP_FLIP_FLAG = 512; -var wrapFlags = [ - ["ary", WRAP_ARY_FLAG], - ["bind", WRAP_BIND_FLAG2], - ["bindKey", WRAP_BIND_KEY_FLAG], - ["curry", WRAP_CURRY_FLAG], - ["curryRight", WRAP_CURRY_RIGHT_FLAG], - ["flip", WRAP_FLIP_FLAG], - ["partial", WRAP_PARTIAL_FLAG], - ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], - ["rearg", WRAP_REARG_FLAG] -]; -function updateWrapDetails(details, bitmask) { - arrayEach_default(wrapFlags, function(pair) { - var value = "_." + pair[0]; - if (bitmask & pair[1] && !arrayIncludes_default(details, value)) { - details.push(value); - } - }); - return details.sort(); -} -var updateWrapDetails_default = updateWrapDetails; - -// node_modules/lodash-es/_setWrapToString.js -function setWrapToString(wrapper, reference, bitmask) { - var source = reference + ""; - return setToString_default(wrapper, insertWrapDetails_default(source, updateWrapDetails_default(getWrapDetails_default(source), bitmask))); -} -var setWrapToString_default = setWrapToString; - -// node_modules/lodash-es/_createRecurry.js -var WRAP_BIND_FLAG3 = 1; -var WRAP_BIND_KEY_FLAG2 = 2; -var WRAP_CURRY_BOUND_FLAG = 4; -var WRAP_CURRY_FLAG2 = 8; -var WRAP_PARTIAL_FLAG2 = 32; -var WRAP_PARTIAL_RIGHT_FLAG2 = 64; -function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG2, newHolders = isCurry ? holders : void 0, newHoldersRight = isCurry ? void 0 : holders, newPartials = isCurry ? partials : void 0, newPartialsRight = isCurry ? void 0 : partials; - bitmask |= isCurry ? WRAP_PARTIAL_FLAG2 : WRAP_PARTIAL_RIGHT_FLAG2; - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG2 : WRAP_PARTIAL_FLAG2); - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG3 | WRAP_BIND_KEY_FLAG2); - } - var newData = [ - func, - bitmask, - thisArg, - newPartials, - newHolders, - newPartialsRight, - newHoldersRight, - argPos, - ary2, - arity - ]; - var result2 = wrapFunc.apply(void 0, newData); - if (isLaziable_default(func)) { - setData_default(result2, newData); - } - result2.placeholder = placeholder; - return setWrapToString_default(result2, func, bitmask); -} -var createRecurry_default = createRecurry; - -// node_modules/lodash-es/_getHolder.js -function getHolder(func) { - var object4 = func; - return object4.placeholder; -} -var getHolder_default = getHolder; - -// node_modules/lodash-es/_reorder.js -var nativeMin = Math.min; -function reorder(array4, indexes) { - var arrLength = array4.length, length2 = nativeMin(indexes.length, arrLength), oldArray = copyArray_default(array4); - while (length2--) { - var index3 = indexes[length2]; - array4[length2] = isIndex_default(index3, arrLength) ? oldArray[index3] : void 0; - } - return array4; -} -var reorder_default = reorder; - -// node_modules/lodash-es/_replaceHolders.js -var PLACEHOLDER = "__lodash_placeholder__"; -function replaceHolders(array4, placeholder) { - var index3 = -1, length2 = array4.length, resIndex = 0, result2 = []; - while (++index3 < length2) { - var value = array4[index3]; - if (value === placeholder || value === PLACEHOLDER) { - array4[index3] = PLACEHOLDER; - result2[resIndex++] = index3; - } - } - return result2; -} -var replaceHolders_default = replaceHolders; - -// node_modules/lodash-es/_createHybrid.js -var WRAP_BIND_FLAG4 = 1; -var WRAP_BIND_KEY_FLAG3 = 2; -var WRAP_CURRY_FLAG3 = 8; -var WRAP_CURRY_RIGHT_FLAG2 = 16; -var WRAP_ARY_FLAG2 = 128; -var WRAP_FLIP_FLAG2 = 512; -function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { - var isAry = bitmask & WRAP_ARY_FLAG2, isBind = bitmask & WRAP_BIND_FLAG4, isBindKey = bitmask & WRAP_BIND_KEY_FLAG3, isCurried = bitmask & (WRAP_CURRY_FLAG3 | WRAP_CURRY_RIGHT_FLAG2), isFlip = bitmask & WRAP_FLIP_FLAG2, Ctor = isBindKey ? void 0 : createCtor_default(func); - function wrapper() { - var length2 = arguments.length, args = Array(length2), index3 = length2; - while (index3--) { - args[index3] = arguments[index3]; - } - if (isCurried) { - var placeholder = getHolder_default(wrapper), holdersCount = countHolders_default(args, placeholder); - } - if (partials) { - args = composeArgs_default(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight_default(args, partialsRight, holdersRight, isCurried); - } - length2 -= holdersCount; - if (isCurried && length2 < arity) { - var newHolders = replaceHolders_default(args, placeholder); - return createRecurry_default( - func, - bitmask, - createHybrid, - wrapper.placeholder, - thisArg, - args, - newHolders, - argPos, - ary2, - arity - length2 - ); - } - var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; - length2 = args.length; - if (argPos) { - args = reorder_default(args, argPos); - } else if (isFlip && length2 > 1) { - args.reverse(); - } - if (isAry && ary2 < length2) { - args.length = ary2; - } - if (this && this !== root_default && this instanceof wrapper) { - fn = Ctor || createCtor_default(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; -} -var createHybrid_default = createHybrid; - -// node_modules/lodash-es/_createCurry.js -function createCurry(func, bitmask, arity) { - var Ctor = createCtor_default(func); - function wrapper() { - var length2 = arguments.length, args = Array(length2), index3 = length2, placeholder = getHolder_default(wrapper); - while (index3--) { - args[index3] = arguments[index3]; - } - var holders = length2 < 3 && args[0] !== placeholder && args[length2 - 1] !== placeholder ? [] : replaceHolders_default(args, placeholder); - length2 -= holders.length; - if (length2 < arity) { - return createRecurry_default( - func, - bitmask, - createHybrid_default, - wrapper.placeholder, - void 0, - args, - holders, - void 0, - void 0, - arity - length2 - ); - } - var fn = this && this !== root_default && this instanceof wrapper ? Ctor : func; - return apply_default(fn, this, args); - } - return wrapper; -} -var createCurry_default = createCurry; - -// node_modules/lodash-es/_createPartial.js -var WRAP_BIND_FLAG5 = 1; -function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG5, Ctor = createCtor_default(func); - function wrapper() { - var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength), fn = this && this !== root_default && this instanceof wrapper ? Ctor : func; - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply_default(fn, isBind ? thisArg : this, args); - } - return wrapper; -} -var createPartial_default = createPartial; - -// node_modules/lodash-es/_mergeData.js -var PLACEHOLDER2 = "__lodash_placeholder__"; -var WRAP_BIND_FLAG6 = 1; -var WRAP_BIND_KEY_FLAG4 = 2; -var WRAP_CURRY_BOUND_FLAG2 = 4; -var WRAP_CURRY_FLAG4 = 8; -var WRAP_ARY_FLAG3 = 128; -var WRAP_REARG_FLAG2 = 256; -var nativeMin2 = Math.min; -function mergeData(data, source) { - var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG6 | WRAP_BIND_KEY_FLAG4 | WRAP_ARY_FLAG3); - var isCombo = srcBitmask == WRAP_ARY_FLAG3 && bitmask == WRAP_CURRY_FLAG4 || srcBitmask == WRAP_ARY_FLAG3 && bitmask == WRAP_REARG_FLAG2 && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG3 | WRAP_REARG_FLAG2) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG4; - if (!(isCommon || isCombo)) { - return data; - } - if (srcBitmask & WRAP_BIND_FLAG6) { - data[2] = source[2]; - newBitmask |= bitmask & WRAP_BIND_FLAG6 ? 0 : WRAP_CURRY_BOUND_FLAG2; - } - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs_default(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders_default(data[3], PLACEHOLDER2) : source[4]; - } - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight_default(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders_default(data[5], PLACEHOLDER2) : source[6]; - } - value = source[7]; - if (value) { - data[7] = value; - } - if (srcBitmask & WRAP_ARY_FLAG3) { - data[8] = data[8] == null ? source[8] : nativeMin2(data[8], source[8]); - } - if (data[9] == null) { - data[9] = source[9]; - } - data[0] = source[0]; - data[1] = newBitmask; - return data; -} -var mergeData_default = mergeData; - -// node_modules/lodash-es/_createWrap.js -var FUNC_ERROR_TEXT2 = "Expected a function"; -var WRAP_BIND_FLAG7 = 1; -var WRAP_BIND_KEY_FLAG5 = 2; -var WRAP_CURRY_FLAG5 = 8; -var WRAP_CURRY_RIGHT_FLAG3 = 16; -var WRAP_PARTIAL_FLAG3 = 32; -var WRAP_PARTIAL_RIGHT_FLAG3 = 64; -var nativeMax3 = Math.max; -function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG5; - if (!isBindKey && typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT2); - } - var length2 = partials ? partials.length : 0; - if (!length2) { - bitmask &= ~(WRAP_PARTIAL_FLAG3 | WRAP_PARTIAL_RIGHT_FLAG3); - partials = holders = void 0; - } - ary2 = ary2 === void 0 ? ary2 : nativeMax3(toInteger_default(ary2), 0); - arity = arity === void 0 ? arity : toInteger_default(arity); - length2 -= holders ? holders.length : 0; - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG3) { - var partialsRight = partials, holdersRight = holders; - partials = holders = void 0; - } - var data = isBindKey ? void 0 : getData_default(func); - var newData = [ - func, - bitmask, - thisArg, - partials, - holders, - partialsRight, - holdersRight, - argPos, - ary2, - arity - ]; - if (data) { - mergeData_default(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === void 0 ? isBindKey ? 0 : func.length : nativeMax3(newData[9] - length2, 0); - if (!arity && bitmask & (WRAP_CURRY_FLAG5 | WRAP_CURRY_RIGHT_FLAG3)) { - bitmask &= ~(WRAP_CURRY_FLAG5 | WRAP_CURRY_RIGHT_FLAG3); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG7) { - var result2 = createBind_default(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG5 || bitmask == WRAP_CURRY_RIGHT_FLAG3) { - result2 = createCurry_default(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG3 || bitmask == (WRAP_BIND_FLAG7 | WRAP_PARTIAL_FLAG3)) && !holders.length) { - result2 = createPartial_default(func, bitmask, thisArg, partials); - } else { - result2 = createHybrid_default.apply(void 0, newData); - } - var setter = data ? baseSetData_default : setData_default; - return setWrapToString_default(setter(result2, newData), func, bitmask); -} -var createWrap_default = createWrap; - -// node_modules/lodash-es/ary.js -var WRAP_ARY_FLAG4 = 128; -function ary(func, n3, guard) { - n3 = guard ? void 0 : n3; - n3 = func && n3 == null ? func.length : n3; - return createWrap_default(func, WRAP_ARY_FLAG4, void 0, void 0, void 0, void 0, n3); -} -var ary_default = ary; - -// node_modules/lodash-es/_baseAssignValue.js -function baseAssignValue(object4, key2, value) { - if (key2 == "__proto__" && defineProperty_default) { - defineProperty_default(object4, key2, { - "configurable": true, - "enumerable": true, - "value": value, - "writable": true - }); - } else { - object4[key2] = value; - } -} -var baseAssignValue_default = baseAssignValue; - -// node_modules/lodash-es/_assignValue.js -var objectProto15 = Object.prototype; -var hasOwnProperty13 = objectProto15.hasOwnProperty; -function assignValue(object4, key2, value) { - var objValue = object4[key2]; - if (!(hasOwnProperty13.call(object4, key2) && eq_default(objValue, value)) || value === void 0 && !(key2 in object4)) { - baseAssignValue_default(object4, key2, value); - } -} -var assignValue_default = assignValue; - -// node_modules/lodash-es/_copyObject.js -function copyObject(source, props4, object4, customizer) { - var isNew = !object4; - object4 || (object4 = {}); - var index3 = -1, length2 = props4.length; - while (++index3 < length2) { - var key2 = props4[index3]; - var newValue = customizer ? customizer(object4[key2], source[key2], key2, object4, source) : void 0; - if (newValue === void 0) { - newValue = source[key2]; - } - if (isNew) { - baseAssignValue_default(object4, key2, newValue); - } else { - assignValue_default(object4, key2, newValue); - } - } - return object4; -} -var copyObject_default = copyObject; - -// node_modules/lodash-es/_overRest.js -var nativeMax4 = Math.max; -function overRest(func, start, transform4) { - start = nativeMax4(start === void 0 ? func.length - 1 : start, 0); - return function() { - var args = arguments, index3 = -1, length2 = nativeMax4(args.length - start, 0), array4 = Array(length2); - while (++index3 < length2) { - array4[index3] = args[start + index3]; - } - index3 = -1; - var otherArgs = Array(start + 1); - while (++index3 < start) { - otherArgs[index3] = args[index3]; - } - otherArgs[start] = transform4(array4); - return apply_default(func, this, otherArgs); - }; -} -var overRest_default = overRest; - -// node_modules/lodash-es/_baseRest.js -function baseRest(func, start) { - return setToString_default(overRest_default(func, start, identity_default), func + ""); -} -var baseRest_default = baseRest; - -// node_modules/lodash-es/_isIterateeCall.js -function isIterateeCall(value, index3, object4) { - if (!isObject_default(object4)) { - return false; - } - var type4 = typeof index3; - if (type4 == "number" ? isArrayLike_default(object4) && isIndex_default(index3, object4.length) : type4 == "string" && index3 in object4) { - return eq_default(object4[index3], value); - } - return false; -} -var isIterateeCall_default = isIterateeCall; - -// node_modules/lodash-es/_createAssigner.js -function createAssigner(assigner) { - return baseRest_default(function(object4, sources) { - var index3 = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : void 0, guard = length2 > 2 ? sources[2] : void 0; - customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : void 0; - if (guard && isIterateeCall_default(sources[0], sources[1], guard)) { - customizer = length2 < 3 ? void 0 : customizer; - length2 = 1; - } - object4 = Object(object4); - while (++index3 < length2) { - var source = sources[index3]; - if (source) { - assigner(object4, source, index3, customizer); - } - } - return object4; - }); -} -var createAssigner_default = createAssigner; - -// node_modules/lodash-es/assign.js -var objectProto16 = Object.prototype; -var hasOwnProperty14 = objectProto16.hasOwnProperty; -var assign2 = createAssigner_default(function(object4, source) { - if (isPrototype_default(source) || isArrayLike_default(source)) { - copyObject_default(source, keys_default(source), object4); - return; - } - for (var key2 in source) { - if (hasOwnProperty14.call(source, key2)) { - assignValue_default(object4, key2, source[key2]); - } - } -}); -var assign_default = assign2; - -// node_modules/lodash-es/_nativeKeysIn.js -function nativeKeysIn(object4) { - var result2 = []; - if (object4 != null) { - for (var key2 in Object(object4)) { - result2.push(key2); - } - } - return result2; -} -var nativeKeysIn_default = nativeKeysIn; - -// node_modules/lodash-es/_baseKeysIn.js -var objectProto17 = Object.prototype; -var hasOwnProperty15 = objectProto17.hasOwnProperty; -function baseKeysIn(object4) { - if (!isObject_default(object4)) { - return nativeKeysIn_default(object4); - } - var isProto = isPrototype_default(object4), result2 = []; - for (var key2 in object4) { - if (!(key2 == "constructor" && (isProto || !hasOwnProperty15.call(object4, key2)))) { - result2.push(key2); - } - } - return result2; -} -var baseKeysIn_default = baseKeysIn; - -// node_modules/lodash-es/keysIn.js -function keysIn(object4) { - return isArrayLike_default(object4) ? arrayLikeKeys_default(object4, true) : baseKeysIn_default(object4); -} -var keysIn_default = keysIn; - -// node_modules/lodash-es/assignIn.js -var assignIn = createAssigner_default(function(object4, source) { - copyObject_default(source, keysIn_default(source), object4); -}); -var assignIn_default = assignIn; - -// node_modules/lodash-es/assignInWith.js -var assignInWith = createAssigner_default(function(object4, source, srcIndex, customizer) { - copyObject_default(source, keysIn_default(source), object4, customizer); -}); -var assignInWith_default = assignInWith; - -// node_modules/lodash-es/assignWith.js -var assignWith = createAssigner_default(function(object4, source, srcIndex, customizer) { - copyObject_default(source, keys_default(source), object4, customizer); -}); -var assignWith_default = assignWith; - -// node_modules/lodash-es/_isKey.js -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/; -var reIsPlainProp = /^\w*$/; -function isKey(value, object4) { - if (isArray_default(value)) { - return false; - } - var type4 = typeof value; - if (type4 == "number" || type4 == "symbol" || type4 == "boolean" || value == null || isSymbol_default(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object4 != null && value in Object(object4); -} -var isKey_default = isKey; - -// node_modules/lodash-es/memoize.js -var FUNC_ERROR_TEXT3 = "Expected a function"; -function memoize(func, resolver) { - if (typeof func != "function" || resolver != null && typeof resolver != "function") { - throw new TypeError(FUNC_ERROR_TEXT3); - } - var memoized = function() { - var args = arguments, key2 = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; - if (cache.has(key2)) { - return cache.get(key2); - } - var result2 = func.apply(this, args); - memoized.cache = cache.set(key2, result2) || cache; - return result2; - }; - memoized.cache = new (memoize.Cache || MapCache_default)(); - return memoized; -} -memoize.Cache = MapCache_default; -var memoize_default = memoize; - -// node_modules/lodash-es/_memoizeCapped.js -var MAX_MEMOIZE_SIZE = 500; -function memoizeCapped(func) { - var result2 = memoize_default(func, function(key2) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key2; - }); - var cache = result2.cache; - return result2; -} -var memoizeCapped_default = memoizeCapped; - -// node_modules/lodash-es/_stringToPath.js -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; -var reEscapeChar = /\\(\\)?/g; -var stringToPath = memoizeCapped_default(function(string3) { - var result2 = []; - if (string3.charCodeAt(0) === 46) { - result2.push(""); - } - string3.replace(rePropName, function(match3, number4, quote, subString) { - result2.push(quote ? subString.replace(reEscapeChar, "$1") : number4 || match3); - }); - return result2; -}); -var stringToPath_default = stringToPath; - -// node_modules/lodash-es/toString.js -function toString(value) { - return value == null ? "" : baseToString_default(value); -} -var toString_default = toString; - -// node_modules/lodash-es/_castPath.js -function castPath(value, object4) { - if (isArray_default(value)) { - return value; - } - return isKey_default(value, object4) ? [value] : stringToPath_default(toString_default(value)); -} -var castPath_default = castPath; - -// node_modules/lodash-es/_toKey.js -var INFINITY3 = 1 / 0; -function toKey(value) { - if (typeof value == "string" || isSymbol_default(value)) { - return value; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY3 ? "-0" : result2; -} -var toKey_default = toKey; - -// node_modules/lodash-es/_baseGet.js -function baseGet(object4, path2) { - path2 = castPath_default(path2, object4); - var index3 = 0, length2 = path2.length; - while (object4 != null && index3 < length2) { - object4 = object4[toKey_default(path2[index3++])]; - } - return index3 && index3 == length2 ? object4 : void 0; -} -var baseGet_default = baseGet; - -// node_modules/lodash-es/get.js -function get(object4, path2, defaultValue) { - var result2 = object4 == null ? void 0 : baseGet_default(object4, path2); - return result2 === void 0 ? defaultValue : result2; -} -var get_default = get; - -// node_modules/lodash-es/_baseAt.js -function baseAt(object4, paths) { - var index3 = -1, length2 = paths.length, result2 = Array(length2), skip = object4 == null; - while (++index3 < length2) { - result2[index3] = skip ? void 0 : get_default(object4, paths[index3]); - } - return result2; -} -var baseAt_default = baseAt; - -// node_modules/lodash-es/_isFlattenable.js -var spreadableSymbol = Symbol_default ? Symbol_default.isConcatSpreadable : void 0; -function isFlattenable(value) { - return isArray_default(value) || isArguments_default(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); -} -var isFlattenable_default = isFlattenable; - -// node_modules/lodash-es/_baseFlatten.js -function baseFlatten(array4, depth, predicate, isStrict, result2) { - var index3 = -1, length2 = array4.length; - predicate || (predicate = isFlattenable_default); - result2 || (result2 = []); - while (++index3 < length2) { - var value = array4[index3]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - baseFlatten(value, depth - 1, predicate, isStrict, result2); - } else { - arrayPush_default(result2, value); - } - } else if (!isStrict) { - result2[result2.length] = value; - } - } - return result2; -} -var baseFlatten_default = baseFlatten; - -// node_modules/lodash-es/flatten.js -function flatten(array4) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? baseFlatten_default(array4, 1) : []; -} -var flatten_default = flatten; - -// node_modules/lodash-es/_flatRest.js -function flatRest(func) { - return setToString_default(overRest_default(func, void 0, flatten_default), func + ""); -} -var flatRest_default = flatRest; - -// node_modules/lodash-es/at.js -var at = flatRest_default(baseAt_default); -var at_default = at; - -// node_modules/lodash-es/_getPrototype.js -var getPrototype = overArg_default(Object.getPrototypeOf, Object); -var getPrototype_default = getPrototype; - -// node_modules/lodash-es/isPlainObject.js -var objectTag4 = "[object Object]"; -var funcProto3 = Function.prototype; -var objectProto18 = Object.prototype; -var funcToString3 = funcProto3.toString; -var hasOwnProperty16 = objectProto18.hasOwnProperty; -var objectCtorString = funcToString3.call(Object); -function isPlainObject(value) { - if (!isObjectLike_default(value) || baseGetTag_default(value) != objectTag4) { - return false; - } - var proto = getPrototype_default(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty16.call(proto, "constructor") && proto.constructor; - return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString3.call(Ctor) == objectCtorString; -} -var isPlainObject_default = isPlainObject; - -// node_modules/lodash-es/isError.js -var domExcTag = "[object DOMException]"; -var errorTag3 = "[object Error]"; -function isError(value) { - if (!isObjectLike_default(value)) { - return false; - } - var tag = baseGetTag_default(value); - return tag == errorTag3 || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject_default(value); -} -var isError_default = isError; - -// node_modules/lodash-es/attempt.js -var attempt = baseRest_default(function(func, args) { - try { - return apply_default(func, void 0, args); - } catch (e3) { - return isError_default(e3) ? e3 : new Error(e3); - } -}); -var attempt_default = attempt; - -// node_modules/lodash-es/before.js -var FUNC_ERROR_TEXT4 = "Expected a function"; -function before(n3, func) { - var result2; - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT4); - } - n3 = toInteger_default(n3); - return function() { - if (--n3 > 0) { - result2 = func.apply(this, arguments); - } - if (n3 <= 1) { - func = void 0; - } - return result2; - }; -} -var before_default = before; - -// node_modules/lodash-es/bind.js -var WRAP_BIND_FLAG8 = 1; -var WRAP_PARTIAL_FLAG4 = 32; -var bind = baseRest_default(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG8; - if (partials.length) { - var holders = replaceHolders_default(partials, getHolder_default(bind)); - bitmask |= WRAP_PARTIAL_FLAG4; - } - return createWrap_default(func, bitmask, thisArg, partials, holders); -}); -bind.placeholder = {}; -var bind_default = bind; - -// node_modules/lodash-es/bindAll.js -var bindAll = flatRest_default(function(object4, methodNames) { - arrayEach_default(methodNames, function(key2) { - key2 = toKey_default(key2); - baseAssignValue_default(object4, key2, bind_default(object4[key2], object4)); - }); - return object4; -}); -var bindAll_default = bindAll; - -// node_modules/lodash-es/bindKey.js -var WRAP_BIND_FLAG9 = 1; -var WRAP_BIND_KEY_FLAG6 = 2; -var WRAP_PARTIAL_FLAG5 = 32; -var bindKey = baseRest_default(function(object4, key2, partials) { - var bitmask = WRAP_BIND_FLAG9 | WRAP_BIND_KEY_FLAG6; - if (partials.length) { - var holders = replaceHolders_default(partials, getHolder_default(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG5; - } - return createWrap_default(key2, bitmask, object4, partials, holders); -}); -bindKey.placeholder = {}; -var bindKey_default = bindKey; - -// node_modules/lodash-es/_baseSlice.js -function baseSlice(array4, start, end) { - var index3 = -1, length2 = array4.length; - if (start < 0) { - start = -start > length2 ? 0 : length2 + start; - } - end = end > length2 ? length2 : end; - if (end < 0) { - end += length2; - } - length2 = start > end ? 0 : end - start >>> 0; - start >>>= 0; - var result2 = Array(length2); - while (++index3 < length2) { - result2[index3] = array4[index3 + start]; - } - return result2; -} -var baseSlice_default = baseSlice; - -// node_modules/lodash-es/_castSlice.js -function castSlice(array4, start, end) { - var length2 = array4.length; - end = end === void 0 ? length2 : end; - return !start && end >= length2 ? array4 : baseSlice_default(array4, start, end); -} -var castSlice_default = castSlice; - -// node_modules/lodash-es/_hasUnicode.js -var rsAstralRange = "\\ud800-\\udfff"; -var rsComboMarksRange = "\\u0300-\\u036f"; -var reComboHalfMarksRange = "\\ufe20-\\ufe2f"; -var rsComboSymbolsRange = "\\u20d0-\\u20ff"; -var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; -var rsVarRange = "\\ufe0e\\ufe0f"; -var rsZWJ = "\\u200d"; -var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); -function hasUnicode(string3) { - return reHasUnicode.test(string3); -} -var hasUnicode_default = hasUnicode; - -// node_modules/lodash-es/_asciiToArray.js -function asciiToArray(string3) { - return string3.split(""); -} -var asciiToArray_default = asciiToArray; - -// node_modules/lodash-es/_unicodeToArray.js -var rsAstralRange2 = "\\ud800-\\udfff"; -var rsComboMarksRange2 = "\\u0300-\\u036f"; -var reComboHalfMarksRange2 = "\\ufe20-\\ufe2f"; -var rsComboSymbolsRange2 = "\\u20d0-\\u20ff"; -var rsComboRange2 = rsComboMarksRange2 + reComboHalfMarksRange2 + rsComboSymbolsRange2; -var rsVarRange2 = "\\ufe0e\\ufe0f"; -var rsAstral = "[" + rsAstralRange2 + "]"; -var rsCombo = "[" + rsComboRange2 + "]"; -var rsFitz = "\\ud83c[\\udffb-\\udfff]"; -var rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")"; -var rsNonAstral = "[^" + rsAstralRange2 + "]"; -var rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}"; -var rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]"; -var rsZWJ2 = "\\u200d"; -var reOptMod = rsModifier + "?"; -var rsOptVar = "[" + rsVarRange2 + "]?"; -var rsOptJoin = "(?:" + rsZWJ2 + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*"; -var rsSeq = rsOptVar + reOptMod + rsOptJoin; -var rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; -var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); -function unicodeToArray(string3) { - return string3.match(reUnicode) || []; -} -var unicodeToArray_default = unicodeToArray; - -// node_modules/lodash-es/_stringToArray.js -function stringToArray(string3) { - return hasUnicode_default(string3) ? unicodeToArray_default(string3) : asciiToArray_default(string3); -} -var stringToArray_default = stringToArray; - -// node_modules/lodash-es/_createCaseFirst.js -function createCaseFirst(methodName) { - return function(string3) { - string3 = toString_default(string3); - var strSymbols = hasUnicode_default(string3) ? stringToArray_default(string3) : void 0; - var chr = strSymbols ? strSymbols[0] : string3.charAt(0); - var trailing = strSymbols ? castSlice_default(strSymbols, 1).join("") : string3.slice(1); - return chr[methodName]() + trailing; - }; -} -var createCaseFirst_default = createCaseFirst; - -// node_modules/lodash-es/upperFirst.js -var upperFirst = createCaseFirst_default("toUpperCase"); -var upperFirst_default = upperFirst; - -// node_modules/lodash-es/capitalize.js -function capitalize2(string3) { - return upperFirst_default(toString_default(string3).toLowerCase()); -} -var capitalize_default = capitalize2; - -// node_modules/lodash-es/_arrayReduce.js -function arrayReduce(array4, iteratee2, accumulator, initAccum) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - if (initAccum && length2) { - accumulator = array4[++index3]; - } - while (++index3 < length2) { - accumulator = iteratee2(accumulator, array4[index3], index3, array4); - } - return accumulator; -} -var arrayReduce_default = arrayReduce; - -// node_modules/lodash-es/_basePropertyOf.js -function basePropertyOf(object4) { - return function(key2) { - return object4 == null ? void 0 : object4[key2]; - }; -} -var basePropertyOf_default = basePropertyOf; - -// node_modules/lodash-es/_deburrLetter.js -var deburredLetters = { - // Latin-1 Supplement block. - "À": "A", - "Á": "A", - "Â": "A", - "Ã": "A", - "Ä": "A", - "Å": "A", - "à": "a", - "á": "a", - "â": "a", - "ã": "a", - "ä": "a", - "å": "a", - "Ç": "C", - "ç": "c", - "Ð": "D", - "ð": "d", - "È": "E", - "É": "E", - "Ê": "E", - "Ë": "E", - "è": "e", - "é": "e", - "ê": "e", - "ë": "e", - "Ì": "I", - "Í": "I", - "Î": "I", - "Ï": "I", - "ì": "i", - "í": "i", - "î": "i", - "ï": "i", - "Ñ": "N", - "ñ": "n", - "Ò": "O", - "Ó": "O", - "Ô": "O", - "Õ": "O", - "Ö": "O", - "Ø": "O", - "ò": "o", - "ó": "o", - "ô": "o", - "õ": "o", - "ö": "o", - "ø": "o", - "Ù": "U", - "Ú": "U", - "Û": "U", - "Ü": "U", - "ù": "u", - "ú": "u", - "û": "u", - "ü": "u", - "Ý": "Y", - "ý": "y", - "ÿ": "y", - "Æ": "Ae", - "æ": "ae", - "Þ": "Th", - "þ": "th", - "ß": "ss", - // Latin Extended-A block. - "Ā": "A", - "Ă": "A", - "Ą": "A", - "ā": "a", - "ă": "a", - "ą": "a", - "Ć": "C", - "Ĉ": "C", - "Ċ": "C", - "Č": "C", - "ć": "c", - "ĉ": "c", - "ċ": "c", - "č": "c", - "Ď": "D", - "Đ": "D", - "ď": "d", - "đ": "d", - "Ē": "E", - "Ĕ": "E", - "Ė": "E", - "Ę": "E", - "Ě": "E", - "ē": "e", - "ĕ": "e", - "ė": "e", - "ę": "e", - "ě": "e", - "Ĝ": "G", - "Ğ": "G", - "Ġ": "G", - "Ģ": "G", - "ĝ": "g", - "ğ": "g", - "ġ": "g", - "ģ": "g", - "Ĥ": "H", - "Ħ": "H", - "ĥ": "h", - "ħ": "h", - "Ĩ": "I", - "Ī": "I", - "Ĭ": "I", - "Į": "I", - "İ": "I", - "ĩ": "i", - "ī": "i", - "ĭ": "i", - "į": "i", - "ı": "i", - "Ĵ": "J", - "ĵ": "j", - "Ķ": "K", - "ķ": "k", - "ĸ": "k", - "Ĺ": "L", - "Ļ": "L", - "Ľ": "L", - "Ŀ": "L", - "Ł": "L", - "ĺ": "l", - "ļ": "l", - "ľ": "l", - "ŀ": "l", - "ł": "l", - "Ń": "N", - "Ņ": "N", - "Ň": "N", - "Ŋ": "N", - "ń": "n", - "ņ": "n", - "ň": "n", - "ŋ": "n", - "Ō": "O", - "Ŏ": "O", - "Ő": "O", - "ō": "o", - "ŏ": "o", - "ő": "o", - "Ŕ": "R", - "Ŗ": "R", - "Ř": "R", - "ŕ": "r", - "ŗ": "r", - "ř": "r", - "Ś": "S", - "Ŝ": "S", - "Ş": "S", - "Š": "S", - "ś": "s", - "ŝ": "s", - "ş": "s", - "š": "s", - "Ţ": "T", - "Ť": "T", - "Ŧ": "T", - "ţ": "t", - "ť": "t", - "ŧ": "t", - "Ũ": "U", - "Ū": "U", - "Ŭ": "U", - "Ů": "U", - "Ű": "U", - "Ų": "U", - "ũ": "u", - "ū": "u", - "ŭ": "u", - "ů": "u", - "ű": "u", - "ų": "u", - "Ŵ": "W", - "ŵ": "w", - "Ŷ": "Y", - "ŷ": "y", - "Ÿ": "Y", - "Ź": "Z", - "Ż": "Z", - "Ž": "Z", - "ź": "z", - "ż": "z", - "ž": "z", - "IJ": "IJ", - "ij": "ij", - "Œ": "Oe", - "œ": "oe", - "ʼn": "'n", - "ſ": "s" -}; -var deburrLetter = basePropertyOf_default(deburredLetters); -var deburrLetter_default = deburrLetter; - -// node_modules/lodash-es/deburr.js -var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; -var rsComboMarksRange3 = "\\u0300-\\u036f"; -var reComboHalfMarksRange3 = "\\ufe20-\\ufe2f"; -var rsComboSymbolsRange3 = "\\u20d0-\\u20ff"; -var rsComboRange3 = rsComboMarksRange3 + reComboHalfMarksRange3 + rsComboSymbolsRange3; -var rsCombo2 = "[" + rsComboRange3 + "]"; -var reComboMark = RegExp(rsCombo2, "g"); -function deburr(string3) { - string3 = toString_default(string3); - return string3 && string3.replace(reLatin, deburrLetter_default).replace(reComboMark, ""); -} -var deburr_default = deburr; - -// node_modules/lodash-es/_asciiWords.js -var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; -function asciiWords(string3) { - return string3.match(reAsciiWord) || []; -} -var asciiWords_default = asciiWords; - -// node_modules/lodash-es/_hasUnicodeWord.js -var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; -function hasUnicodeWord(string3) { - return reHasUnicodeWord.test(string3); -} -var hasUnicodeWord_default = hasUnicodeWord; - -// node_modules/lodash-es/_unicodeWords.js -var rsAstralRange3 = "\\ud800-\\udfff"; -var rsComboMarksRange4 = "\\u0300-\\u036f"; -var reComboHalfMarksRange4 = "\\ufe20-\\ufe2f"; -var rsComboSymbolsRange4 = "\\u20d0-\\u20ff"; -var rsComboRange4 = rsComboMarksRange4 + reComboHalfMarksRange4 + rsComboSymbolsRange4; -var rsDingbatRange = "\\u2700-\\u27bf"; -var rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff"; -var rsMathOpRange = "\\xac\\xb1\\xd7\\xf7"; -var rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf"; -var rsPunctuationRange = "\\u2000-\\u206f"; -var rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000"; -var rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde"; -var rsVarRange3 = "\\ufe0e\\ufe0f"; -var rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; -var rsApos = "['’]"; -var rsBreak = "[" + rsBreakRange + "]"; -var rsCombo3 = "[" + rsComboRange4 + "]"; -var rsDigits = "\\d+"; -var rsDingbat = "[" + rsDingbatRange + "]"; -var rsLower = "[" + rsLowerRange + "]"; -var rsMisc = "[^" + rsAstralRange3 + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]"; -var rsFitz2 = "\\ud83c[\\udffb-\\udfff]"; -var rsModifier2 = "(?:" + rsCombo3 + "|" + rsFitz2 + ")"; -var rsNonAstral2 = "[^" + rsAstralRange3 + "]"; -var rsRegional2 = "(?:\\ud83c[\\udde6-\\uddff]){2}"; -var rsSurrPair2 = "[\\ud800-\\udbff][\\udc00-\\udfff]"; -var rsUpper = "[" + rsUpperRange + "]"; -var rsZWJ3 = "\\u200d"; -var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")"; -var rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")"; -var rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?"; -var rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?"; -var reOptMod2 = rsModifier2 + "?"; -var rsOptVar2 = "[" + rsVarRange3 + "]?"; -var rsOptJoin2 = "(?:" + rsZWJ3 + "(?:" + [rsNonAstral2, rsRegional2, rsSurrPair2].join("|") + ")" + rsOptVar2 + reOptMod2 + ")*"; -var rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])"; -var rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])"; -var rsSeq2 = rsOptVar2 + reOptMod2 + rsOptJoin2; -var rsEmoji = "(?:" + [rsDingbat, rsRegional2, rsSurrPair2].join("|") + ")" + rsSeq2; -var reUnicodeWord = RegExp([ - rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", - rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", - rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, - rsUpper + "+" + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji -].join("|"), "g"); -function unicodeWords(string3) { - return string3.match(reUnicodeWord) || []; -} -var unicodeWords_default = unicodeWords; - -// node_modules/lodash-es/words.js -function words(string3, pattern4, guard) { - string3 = toString_default(string3); - pattern4 = guard ? void 0 : pattern4; - if (pattern4 === void 0) { - return hasUnicodeWord_default(string3) ? unicodeWords_default(string3) : asciiWords_default(string3); - } - return string3.match(pattern4) || []; -} -var words_default = words; - -// node_modules/lodash-es/_createCompounder.js -var rsApos2 = "['’]"; -var reApos = RegExp(rsApos2, "g"); -function createCompounder(callback) { - return function(string3) { - return arrayReduce_default(words_default(deburr_default(string3).replace(reApos, "")), callback, ""); - }; -} -var createCompounder_default = createCompounder; - -// node_modules/lodash-es/camelCase.js -var camelCase = createCompounder_default(function(result2, word, index3) { - word = word.toLowerCase(); - return result2 + (index3 ? capitalize_default(word) : word); -}); -var camelCase_default = camelCase; - -// node_modules/lodash-es/castArray.js -function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray_default(value) ? value : [value]; -} -var castArray_default = castArray; - -// node_modules/lodash-es/_createRound.js -var nativeIsFinite = root_default.isFinite; -var nativeMin3 = Math.min; -function createRound(methodName) { - var func = Math[methodName]; - return function(number4, precision) { - number4 = toNumber_default(number4); - precision = precision == null ? 0 : nativeMin3(toInteger_default(precision), 292); - if (precision && nativeIsFinite(number4)) { - var pair = (toString_default(number4) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); - pair = (toString_default(value) + "e").split("e"); - return +(pair[0] + "e" + (+pair[1] - precision)); - } - return func(number4); - }; -} -var createRound_default = createRound; - -// node_modules/lodash-es/ceil.js -var ceil = createRound_default("ceil"); -var ceil_default = ceil; - -// node_modules/lodash-es/chain.js -function chain(value) { - var result2 = wrapperLodash_default(value); - result2.__chain__ = true; - return result2; -} -var chain_default = chain; - -// node_modules/lodash-es/chunk.js -var nativeCeil = Math.ceil; -var nativeMax5 = Math.max; -function chunk(array4, size2, guard) { - if (guard ? isIterateeCall_default(array4, size2, guard) : size2 === void 0) { - size2 = 1; - } else { - size2 = nativeMax5(toInteger_default(size2), 0); - } - var length2 = array4 == null ? 0 : array4.length; - if (!length2 || size2 < 1) { - return []; - } - var index3 = 0, resIndex = 0, result2 = Array(nativeCeil(length2 / size2)); - while (index3 < length2) { - result2[resIndex++] = baseSlice_default(array4, index3, index3 += size2); - } - return result2; -} -var chunk_default = chunk; - -// node_modules/lodash-es/_baseClamp.js -function baseClamp(number4, lower2, upper) { - if (number4 === number4) { - if (upper !== void 0) { - number4 = number4 <= upper ? number4 : upper; - } - if (lower2 !== void 0) { - number4 = number4 >= lower2 ? number4 : lower2; - } - } - return number4; -} -var baseClamp_default = baseClamp; - -// node_modules/lodash-es/clamp.js -function clamp(number4, lower2, upper) { - if (upper === void 0) { - upper = lower2; - lower2 = void 0; - } - if (upper !== void 0) { - upper = toNumber_default(upper); - upper = upper === upper ? upper : 0; - } - if (lower2 !== void 0) { - lower2 = toNumber_default(lower2); - lower2 = lower2 === lower2 ? lower2 : 0; - } - return baseClamp_default(toNumber_default(number4), lower2, upper); -} -var clamp_default = clamp; - -// node_modules/lodash-es/_baseAssign.js -function baseAssign(object4, source) { - return object4 && copyObject_default(source, keys_default(source), object4); -} -var baseAssign_default = baseAssign; - -// node_modules/lodash-es/_baseAssignIn.js -function baseAssignIn(object4, source) { - return object4 && copyObject_default(source, keysIn_default(source), object4); -} -var baseAssignIn_default = baseAssignIn; - -// node_modules/lodash-es/_cloneBuffer.js -var freeExports3 = typeof exports == "object" && exports && !exports.nodeType && exports; -var freeModule3 = freeExports3 && typeof module == "object" && module && !module.nodeType && module; -var moduleExports3 = freeModule3 && freeModule3.exports === freeExports3; -var Buffer2 = moduleExports3 ? root_default.Buffer : void 0; -var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0; -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length2 = buffer.length, result2 = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2); - buffer.copy(result2); - return result2; -} -var cloneBuffer_default = cloneBuffer; - -// node_modules/lodash-es/_copySymbols.js -function copySymbols(source, object4) { - return copyObject_default(source, getSymbols_default(source), object4); -} -var copySymbols_default = copySymbols; - -// node_modules/lodash-es/_getSymbolsIn.js -var nativeGetSymbols2 = Object.getOwnPropertySymbols; -var getSymbolsIn = !nativeGetSymbols2 ? stubArray_default : function(object4) { - var result2 = []; - while (object4) { - arrayPush_default(result2, getSymbols_default(object4)); - object4 = getPrototype_default(object4); - } - return result2; -}; -var getSymbolsIn_default = getSymbolsIn; - -// node_modules/lodash-es/_copySymbolsIn.js -function copySymbolsIn(source, object4) { - return copyObject_default(source, getSymbolsIn_default(source), object4); -} -var copySymbolsIn_default = copySymbolsIn; - -// node_modules/lodash-es/_getAllKeysIn.js -function getAllKeysIn(object4) { - return baseGetAllKeys_default(object4, keysIn_default, getSymbolsIn_default); -} -var getAllKeysIn_default = getAllKeysIn; - -// node_modules/lodash-es/_initCloneArray.js -var objectProto19 = Object.prototype; -var hasOwnProperty17 = objectProto19.hasOwnProperty; -function initCloneArray(array4) { - var length2 = array4.length, result2 = new array4.constructor(length2); - if (length2 && typeof array4[0] == "string" && hasOwnProperty17.call(array4, "index")) { - result2.index = array4.index; - result2.input = array4.input; - } - return result2; -} -var initCloneArray_default = initCloneArray; - -// node_modules/lodash-es/_cloneArrayBuffer.js -function cloneArrayBuffer(arrayBuffer) { - var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array_default(result2).set(new Uint8Array_default(arrayBuffer)); - return result2; -} -var cloneArrayBuffer_default = cloneArrayBuffer; - -// node_modules/lodash-es/_cloneDataView.js -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer_default(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} -var cloneDataView_default = cloneDataView; - -// node_modules/lodash-es/_cloneRegExp.js -var reFlags = /\w*$/; -function cloneRegExp(regexp4) { - var result2 = new regexp4.constructor(regexp4.source, reFlags.exec(regexp4)); - result2.lastIndex = regexp4.lastIndex; - return result2; -} -var cloneRegExp_default = cloneRegExp; - -// node_modules/lodash-es/_cloneSymbol.js -var symbolProto3 = Symbol_default ? Symbol_default.prototype : void 0; -var symbolValueOf2 = symbolProto3 ? symbolProto3.valueOf : void 0; -function cloneSymbol(symbol) { - return symbolValueOf2 ? Object(symbolValueOf2.call(symbol)) : {}; -} -var cloneSymbol_default = cloneSymbol; - -// node_modules/lodash-es/_cloneTypedArray.js -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer_default(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} -var cloneTypedArray_default = cloneTypedArray; - -// node_modules/lodash-es/_initCloneByTag.js -var boolTag3 = "[object Boolean]"; -var dateTag3 = "[object Date]"; -var mapTag4 = "[object Map]"; -var numberTag3 = "[object Number]"; -var regexpTag3 = "[object RegExp]"; -var setTag4 = "[object Set]"; -var stringTag3 = "[object String]"; -var symbolTag3 = "[object Symbol]"; -var arrayBufferTag3 = "[object ArrayBuffer]"; -var dataViewTag4 = "[object DataView]"; -var float32Tag2 = "[object Float32Array]"; -var float64Tag2 = "[object Float64Array]"; -var int8Tag2 = "[object Int8Array]"; -var int16Tag2 = "[object Int16Array]"; -var int32Tag2 = "[object Int32Array]"; -var uint8Tag2 = "[object Uint8Array]"; -var uint8ClampedTag2 = "[object Uint8ClampedArray]"; -var uint16Tag2 = "[object Uint16Array]"; -var uint32Tag2 = "[object Uint32Array]"; -function initCloneByTag(object4, tag, isDeep) { - var Ctor = object4.constructor; - switch (tag) { - case arrayBufferTag3: - return cloneArrayBuffer_default(object4); - case boolTag3: - case dateTag3: - return new Ctor(+object4); - case dataViewTag4: - return cloneDataView_default(object4, isDeep); - case float32Tag2: - case float64Tag2: - case int8Tag2: - case int16Tag2: - case int32Tag2: - case uint8Tag2: - case uint8ClampedTag2: - case uint16Tag2: - case uint32Tag2: - return cloneTypedArray_default(object4, isDeep); - case mapTag4: - return new Ctor(); - case numberTag3: - case stringTag3: - return new Ctor(object4); - case regexpTag3: - return cloneRegExp_default(object4); - case setTag4: - return new Ctor(); - case symbolTag3: - return cloneSymbol_default(object4); - } -} -var initCloneByTag_default = initCloneByTag; - -// node_modules/lodash-es/_initCloneObject.js -function initCloneObject(object4) { - return typeof object4.constructor == "function" && !isPrototype_default(object4) ? baseCreate_default(getPrototype_default(object4)) : {}; -} -var initCloneObject_default = initCloneObject; - -// node_modules/lodash-es/_baseIsMap.js -var mapTag5 = "[object Map]"; -function baseIsMap(value) { - return isObjectLike_default(value) && getTag_default(value) == mapTag5; -} -var baseIsMap_default = baseIsMap; - -// node_modules/lodash-es/isMap.js -var nodeIsMap = nodeUtil_default && nodeUtil_default.isMap; -var isMap = nodeIsMap ? baseUnary_default(nodeIsMap) : baseIsMap_default; -var isMap_default = isMap; - -// node_modules/lodash-es/_baseIsSet.js -var setTag5 = "[object Set]"; -function baseIsSet(value) { - return isObjectLike_default(value) && getTag_default(value) == setTag5; -} -var baseIsSet_default = baseIsSet; - -// node_modules/lodash-es/isSet.js -var nodeIsSet = nodeUtil_default && nodeUtil_default.isSet; -var isSet = nodeIsSet ? baseUnary_default(nodeIsSet) : baseIsSet_default; -var isSet_default = isSet; - -// node_modules/lodash-es/_baseClone.js -var CLONE_DEEP_FLAG = 1; -var CLONE_FLAT_FLAG = 2; -var CLONE_SYMBOLS_FLAG = 4; -var argsTag4 = "[object Arguments]"; -var arrayTag3 = "[object Array]"; -var boolTag4 = "[object Boolean]"; -var dateTag4 = "[object Date]"; -var errorTag4 = "[object Error]"; -var funcTag3 = "[object Function]"; -var genTag2 = "[object GeneratorFunction]"; -var mapTag6 = "[object Map]"; -var numberTag4 = "[object Number]"; -var objectTag5 = "[object Object]"; -var regexpTag4 = "[object RegExp]"; -var setTag6 = "[object Set]"; -var stringTag4 = "[object String]"; -var symbolTag4 = "[object Symbol]"; -var weakMapTag3 = "[object WeakMap]"; -var arrayBufferTag4 = "[object ArrayBuffer]"; -var dataViewTag5 = "[object DataView]"; -var float32Tag3 = "[object Float32Array]"; -var float64Tag3 = "[object Float64Array]"; -var int8Tag3 = "[object Int8Array]"; -var int16Tag3 = "[object Int16Array]"; -var int32Tag3 = "[object Int32Array]"; -var uint8Tag3 = "[object Uint8Array]"; -var uint8ClampedTag3 = "[object Uint8ClampedArray]"; -var uint16Tag3 = "[object Uint16Array]"; -var uint32Tag3 = "[object Uint32Array]"; -var cloneableTags = {}; -cloneableTags[argsTag4] = cloneableTags[arrayTag3] = cloneableTags[arrayBufferTag4] = cloneableTags[dataViewTag5] = cloneableTags[boolTag4] = cloneableTags[dateTag4] = cloneableTags[float32Tag3] = cloneableTags[float64Tag3] = cloneableTags[int8Tag3] = cloneableTags[int16Tag3] = cloneableTags[int32Tag3] = cloneableTags[mapTag6] = cloneableTags[numberTag4] = cloneableTags[objectTag5] = cloneableTags[regexpTag4] = cloneableTags[setTag6] = cloneableTags[stringTag4] = cloneableTags[symbolTag4] = cloneableTags[uint8Tag3] = cloneableTags[uint8ClampedTag3] = cloneableTags[uint16Tag3] = cloneableTags[uint32Tag3] = true; -cloneableTags[errorTag4] = cloneableTags[funcTag3] = cloneableTags[weakMapTag3] = false; -function baseClone(value, bitmask, customizer, key2, object4, stack) { - var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; - if (customizer) { - result2 = object4 ? customizer(value, key2, object4, stack) : customizer(value); - } - if (result2 !== void 0) { - return result2; - } - if (!isObject_default(value)) { - return value; - } - var isArr = isArray_default(value); - if (isArr) { - result2 = initCloneArray_default(value); - if (!isDeep) { - return copyArray_default(value, result2); - } - } else { - var tag = getTag_default(value), isFunc = tag == funcTag3 || tag == genTag2; - if (isBuffer_default(value)) { - return cloneBuffer_default(value, isDeep); - } - if (tag == objectTag5 || tag == argsTag4 || isFunc && !object4) { - result2 = isFlat || isFunc ? {} : initCloneObject_default(value); - if (!isDeep) { - return isFlat ? copySymbolsIn_default(value, baseAssignIn_default(result2, value)) : copySymbols_default(value, baseAssign_default(result2, value)); - } - } else { - if (!cloneableTags[tag]) { - return object4 ? value : {}; - } - result2 = initCloneByTag_default(value, tag, isDeep); - } - } - stack || (stack = new Stack_default()); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result2); - if (isSet_default(value)) { - value.forEach(function(subValue) { - result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap_default(value)) { - value.forEach(function(subValue, key3) { - result2.set(key3, baseClone(subValue, bitmask, customizer, key3, value, stack)); - }); - } - var keysFunc = isFull ? isFlat ? getAllKeysIn_default : getAllKeys_default : isFlat ? keysIn_default : keys_default; - var props4 = isArr ? void 0 : keysFunc(value); - arrayEach_default(props4 || value, function(subValue, key3) { - if (props4) { - key3 = subValue; - subValue = value[key3]; - } - assignValue_default(result2, key3, baseClone(subValue, bitmask, customizer, key3, value, stack)); - }); - return result2; -} -var baseClone_default = baseClone; - -// node_modules/lodash-es/clone.js -var CLONE_SYMBOLS_FLAG2 = 4; -function clone2(value) { - return baseClone_default(value, CLONE_SYMBOLS_FLAG2); -} -var clone_default = clone2; - -// node_modules/lodash-es/cloneDeep.js -var CLONE_DEEP_FLAG2 = 1; -var CLONE_SYMBOLS_FLAG3 = 4; -function cloneDeep(value) { - return baseClone_default(value, CLONE_DEEP_FLAG2 | CLONE_SYMBOLS_FLAG3); -} -var cloneDeep_default = cloneDeep; - -// node_modules/lodash-es/cloneDeepWith.js -var CLONE_DEEP_FLAG3 = 1; -var CLONE_SYMBOLS_FLAG4 = 4; -function cloneDeepWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - return baseClone_default(value, CLONE_DEEP_FLAG3 | CLONE_SYMBOLS_FLAG4, customizer); -} -var cloneDeepWith_default = cloneDeepWith; - -// node_modules/lodash-es/cloneWith.js -var CLONE_SYMBOLS_FLAG5 = 4; -function cloneWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - return baseClone_default(value, CLONE_SYMBOLS_FLAG5, customizer); -} -var cloneWith_default = cloneWith; - -// node_modules/lodash-es/commit.js -function wrapperCommit() { - return new LodashWrapper_default(this.value(), this.__chain__); -} -var commit_default = wrapperCommit; - -// node_modules/lodash-es/compact.js -function compact(array4) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length, resIndex = 0, result2 = []; - while (++index3 < length2) { - var value = array4[index3]; - if (value) { - result2[resIndex++] = value; - } - } - return result2; -} -var compact_default2 = compact; - -// node_modules/lodash-es/concat.js -function concat() { - var length2 = arguments.length; - if (!length2) { - return []; - } - var args = Array(length2 - 1), array4 = arguments[0], index3 = length2; - while (index3--) { - args[index3 - 1] = arguments[index3]; - } - return arrayPush_default(isArray_default(array4) ? copyArray_default(array4) : [array4], baseFlatten_default(args, 1)); -} -var concat_default = concat; - -// node_modules/lodash-es/_baseIsMatch.js -var COMPARE_PARTIAL_FLAG5 = 1; -var COMPARE_UNORDERED_FLAG3 = 2; -function baseIsMatch(object4, source, matchData, customizer) { - var index3 = matchData.length, length2 = index3, noCustomizer = !customizer; - if (object4 == null) { - return !length2; - } - object4 = Object(object4); - while (index3--) { - var data = matchData[index3]; - if (noCustomizer && data[2] ? data[1] !== object4[data[0]] : !(data[0] in object4)) { - return false; - } - } - while (++index3 < length2) { - data = matchData[index3]; - var key2 = data[0], objValue = object4[key2], srcValue = data[1]; - if (noCustomizer && data[2]) { - if (objValue === void 0 && !(key2 in object4)) { - return false; - } - } else { - var stack = new Stack_default(); - if (customizer) { - var result2 = customizer(objValue, srcValue, key2, object4, source, stack); - } - if (!(result2 === void 0 ? baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG5 | COMPARE_UNORDERED_FLAG3, customizer, stack) : result2)) { - return false; - } - } - } - return true; -} -var baseIsMatch_default = baseIsMatch; - -// node_modules/lodash-es/_isStrictComparable.js -function isStrictComparable(value) { - return value === value && !isObject_default(value); -} -var isStrictComparable_default = isStrictComparable; - -// node_modules/lodash-es/_getMatchData.js -function getMatchData(object4) { - var result2 = keys_default(object4), length2 = result2.length; - while (length2--) { - var key2 = result2[length2], value = object4[key2]; - result2[length2] = [key2, value, isStrictComparable_default(value)]; - } - return result2; -} -var getMatchData_default = getMatchData; - -// node_modules/lodash-es/_matchesStrictComparable.js -function matchesStrictComparable(key2, srcValue) { - return function(object4) { - if (object4 == null) { - return false; - } - return object4[key2] === srcValue && (srcValue !== void 0 || key2 in Object(object4)); - }; -} -var matchesStrictComparable_default = matchesStrictComparable; - -// node_modules/lodash-es/_baseMatches.js -function baseMatches(source) { - var matchData = getMatchData_default(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable_default(matchData[0][0], matchData[0][1]); - } - return function(object4) { - return object4 === source || baseIsMatch_default(object4, source, matchData); - }; -} -var baseMatches_default = baseMatches; - -// node_modules/lodash-es/_baseHasIn.js -function baseHasIn(object4, key2) { - return object4 != null && key2 in Object(object4); -} -var baseHasIn_default = baseHasIn; - -// node_modules/lodash-es/_hasPath.js -function hasPath(object4, path2, hasFunc) { - path2 = castPath_default(path2, object4); - var index3 = -1, length2 = path2.length, result2 = false; - while (++index3 < length2) { - var key2 = toKey_default(path2[index3]); - if (!(result2 = object4 != null && hasFunc(object4, key2))) { - break; - } - object4 = object4[key2]; - } - if (result2 || ++index3 != length2) { - return result2; - } - length2 = object4 == null ? 0 : object4.length; - return !!length2 && isLength_default(length2) && isIndex_default(key2, length2) && (isArray_default(object4) || isArguments_default(object4)); -} -var hasPath_default = hasPath; - -// node_modules/lodash-es/hasIn.js -function hasIn(object4, path2) { - return object4 != null && hasPath_default(object4, path2, baseHasIn_default); -} -var hasIn_default = hasIn; - -// node_modules/lodash-es/_baseMatchesProperty.js -var COMPARE_PARTIAL_FLAG6 = 1; -var COMPARE_UNORDERED_FLAG4 = 2; -function baseMatchesProperty(path2, srcValue) { - if (isKey_default(path2) && isStrictComparable_default(srcValue)) { - return matchesStrictComparable_default(toKey_default(path2), srcValue); - } - return function(object4) { - var objValue = get_default(object4, path2); - return objValue === void 0 && objValue === srcValue ? hasIn_default(object4, path2) : baseIsEqual_default(srcValue, objValue, COMPARE_PARTIAL_FLAG6 | COMPARE_UNORDERED_FLAG4); - }; -} -var baseMatchesProperty_default = baseMatchesProperty; - -// node_modules/lodash-es/_baseProperty.js -function baseProperty(key2) { - return function(object4) { - return object4 == null ? void 0 : object4[key2]; - }; -} -var baseProperty_default = baseProperty; - -// node_modules/lodash-es/_basePropertyDeep.js -function basePropertyDeep(path2) { - return function(object4) { - return baseGet_default(object4, path2); - }; -} -var basePropertyDeep_default = basePropertyDeep; - -// node_modules/lodash-es/property.js -function property(path2) { - return isKey_default(path2) ? baseProperty_default(toKey_default(path2)) : basePropertyDeep_default(path2); -} -var property_default = property; - -// node_modules/lodash-es/_baseIteratee.js -function baseIteratee(value) { - if (typeof value == "function") { - return value; - } - if (value == null) { - return identity_default; - } - if (typeof value == "object") { - return isArray_default(value) ? baseMatchesProperty_default(value[0], value[1]) : baseMatches_default(value); - } - return property_default(value); -} -var baseIteratee_default = baseIteratee; - -// node_modules/lodash-es/cond.js -var FUNC_ERROR_TEXT5 = "Expected a function"; -function cond(pairs) { - var length2 = pairs == null ? 0 : pairs.length, toIteratee = baseIteratee_default; - pairs = !length2 ? [] : arrayMap_default(pairs, function(pair) { - if (typeof pair[1] != "function") { - throw new TypeError(FUNC_ERROR_TEXT5); - } - return [toIteratee(pair[0]), pair[1]]; - }); - return baseRest_default(function(args) { - var index3 = -1; - while (++index3 < length2) { - var pair = pairs[index3]; - if (apply_default(pair[0], this, args)) { - return apply_default(pair[1], this, args); - } - } - }); -} -var cond_default = cond; - -// node_modules/lodash-es/_baseConformsTo.js -function baseConformsTo(object4, source, props4) { - var length2 = props4.length; - if (object4 == null) { - return !length2; - } - object4 = Object(object4); - while (length2--) { - var key2 = props4[length2], predicate = source[key2], value = object4[key2]; - if (value === void 0 && !(key2 in object4) || !predicate(value)) { - return false; - } - } - return true; -} -var baseConformsTo_default = baseConformsTo; - -// node_modules/lodash-es/_baseConforms.js -function baseConforms(source) { - var props4 = keys_default(source); - return function(object4) { - return baseConformsTo_default(object4, source, props4); - }; -} -var baseConforms_default = baseConforms; - -// node_modules/lodash-es/conforms.js -var CLONE_DEEP_FLAG4 = 1; -function conforms(source) { - return baseConforms_default(baseClone_default(source, CLONE_DEEP_FLAG4)); -} -var conforms_default = conforms; - -// node_modules/lodash-es/conformsTo.js -function conformsTo(object4, source) { - return source == null || baseConformsTo_default(object4, source, keys_default(source)); -} -var conformsTo_default = conformsTo; - -// node_modules/lodash-es/_arrayAggregator.js -function arrayAggregator(array4, setter, iteratee2, accumulator) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - while (++index3 < length2) { - var value = array4[index3]; - setter(accumulator, value, iteratee2(value), array4); - } - return accumulator; -} -var arrayAggregator_default = arrayAggregator; - -// node_modules/lodash-es/_createBaseFor.js -function createBaseFor(fromRight) { - return function(object4, iteratee2, keysFunc) { - var index3 = -1, iterable = Object(object4), props4 = keysFunc(object4), length2 = props4.length; - while (length2--) { - var key2 = props4[fromRight ? length2 : ++index3]; - if (iteratee2(iterable[key2], key2, iterable) === false) { - break; - } - } - return object4; - }; -} -var createBaseFor_default = createBaseFor; - -// node_modules/lodash-es/_baseFor.js -var baseFor = createBaseFor_default(); -var baseFor_default = baseFor; - -// node_modules/lodash-es/_baseForOwn.js -function baseForOwn(object4, iteratee2) { - return object4 && baseFor_default(object4, iteratee2, keys_default); -} -var baseForOwn_default = baseForOwn; - -// node_modules/lodash-es/_createBaseEach.js -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee2) { - if (collection == null) { - return collection; - } - if (!isArrayLike_default(collection)) { - return eachFunc(collection, iteratee2); - } - var length2 = collection.length, index3 = fromRight ? length2 : -1, iterable = Object(collection); - while (fromRight ? index3-- : ++index3 < length2) { - if (iteratee2(iterable[index3], index3, iterable) === false) { - break; - } - } - return collection; - }; -} -var createBaseEach_default = createBaseEach; - -// node_modules/lodash-es/_baseEach.js -var baseEach = createBaseEach_default(baseForOwn_default); -var baseEach_default = baseEach; - -// node_modules/lodash-es/_baseAggregator.js -function baseAggregator(collection, setter, iteratee2, accumulator) { - baseEach_default(collection, function(value, key2, collection2) { - setter(accumulator, value, iteratee2(value), collection2); - }); - return accumulator; -} -var baseAggregator_default = baseAggregator; - -// node_modules/lodash-es/_createAggregator.js -function createAggregator(setter, initializer) { - return function(collection, iteratee2) { - var func = isArray_default(collection) ? arrayAggregator_default : baseAggregator_default, accumulator = initializer ? initializer() : {}; - return func(collection, setter, baseIteratee_default(iteratee2, 2), accumulator); - }; -} -var createAggregator_default = createAggregator; - -// node_modules/lodash-es/countBy.js -var objectProto20 = Object.prototype; -var hasOwnProperty18 = objectProto20.hasOwnProperty; -var countBy = createAggregator_default(function(result2, value, key2) { - if (hasOwnProperty18.call(result2, key2)) { - ++result2[key2]; - } else { - baseAssignValue_default(result2, key2, 1); - } -}); -var countBy_default = countBy; - -// node_modules/lodash-es/create.js -function create(prototype, properties) { - var result2 = baseCreate_default(prototype); - return properties == null ? result2 : baseAssign_default(result2, properties); -} -var create_default = create; - -// node_modules/lodash-es/curry.js -var WRAP_CURRY_FLAG6 = 8; -function curry(func, arity, guard) { - arity = guard ? void 0 : arity; - var result2 = createWrap_default(func, WRAP_CURRY_FLAG6, void 0, void 0, void 0, void 0, void 0, arity); - result2.placeholder = curry.placeholder; - return result2; -} -curry.placeholder = {}; -var curry_default = curry; - -// node_modules/lodash-es/curryRight.js -var WRAP_CURRY_RIGHT_FLAG4 = 16; -function curryRight(func, arity, guard) { - arity = guard ? void 0 : arity; - var result2 = createWrap_default(func, WRAP_CURRY_RIGHT_FLAG4, void 0, void 0, void 0, void 0, void 0, arity); - result2.placeholder = curryRight.placeholder; - return result2; -} -curryRight.placeholder = {}; -var curryRight_default = curryRight; - -// node_modules/lodash-es/now.js -var now = function() { - return root_default.Date.now(); -}; -var now_default = now; - -// node_modules/lodash-es/debounce.js -var FUNC_ERROR_TEXT6 = "Expected a function"; -var nativeMax6 = Math.max; -var nativeMin4 = Math.min; -function debounce(func, wait, options) { - var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT6); - } - wait = toNumber_default(wait) || 0; - if (isObject_default(options)) { - leading = !!options.leading; - maxing = "maxWait" in options; - maxWait = maxing ? nativeMax6(toNumber_default(options.maxWait) || 0, wait) : maxWait; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - function invokeFunc(time) { - var args = lastArgs, thisArg = lastThis; - lastArgs = lastThis = void 0; - lastInvokeTime = time; - result2 = func.apply(thisArg, args); - return result2; - } - function leadingEdge(time) { - lastInvokeTime = time; - timerId = setTimeout(timerExpired, wait); - return leading ? invokeFunc(time) : result2; - } - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; - return maxing ? nativeMin4(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; - } - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; - return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; - } - function timerExpired() { - var time = now_default(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - timerId = setTimeout(timerExpired, remainingWait(time)); - } - function trailingEdge(time) { - timerId = void 0; - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = void 0; - return result2; - } - function cancel() { - if (timerId !== void 0) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = void 0; - } - function flush() { - return timerId === void 0 ? result2 : trailingEdge(now_default()); - } - function debounced() { - var time = now_default(), isInvoking = shouldInvoke(time); - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - if (isInvoking) { - if (timerId === void 0) { - return leadingEdge(lastCallTime); - } - if (maxing) { - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === void 0) { - timerId = setTimeout(timerExpired, wait); - } - return result2; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; -} -var debounce_default = debounce; - -// node_modules/lodash-es/defaultTo.js -function defaultTo(value, defaultValue) { - return value == null || value !== value ? defaultValue : value; -} -var defaultTo_default = defaultTo; - -// node_modules/lodash-es/defaults.js -var objectProto21 = Object.prototype; -var hasOwnProperty19 = objectProto21.hasOwnProperty; -var defaults = baseRest_default(function(object4, sources) { - object4 = Object(object4); - var index3 = -1; - var length2 = sources.length; - var guard = length2 > 2 ? sources[2] : void 0; - if (guard && isIterateeCall_default(sources[0], sources[1], guard)) { - length2 = 1; - } - while (++index3 < length2) { - var source = sources[index3]; - var props4 = keysIn_default(source); - var propsIndex = -1; - var propsLength = props4.length; - while (++propsIndex < propsLength) { - var key2 = props4[propsIndex]; - var value = object4[key2]; - if (value === void 0 || eq_default(value, objectProto21[key2]) && !hasOwnProperty19.call(object4, key2)) { - object4[key2] = source[key2]; - } - } - } - return object4; -}); -var defaults_default = defaults; - -// node_modules/lodash-es/_assignMergeValue.js -function assignMergeValue(object4, key2, value) { - if (value !== void 0 && !eq_default(object4[key2], value) || value === void 0 && !(key2 in object4)) { - baseAssignValue_default(object4, key2, value); - } -} -var assignMergeValue_default = assignMergeValue; - -// node_modules/lodash-es/isArrayLikeObject.js -function isArrayLikeObject(value) { - return isObjectLike_default(value) && isArrayLike_default(value); -} -var isArrayLikeObject_default = isArrayLikeObject; - -// node_modules/lodash-es/_safeGet.js -function safeGet(object4, key2) { - if (key2 === "constructor" && typeof object4[key2] === "function") { - return; - } - if (key2 == "__proto__") { - return; - } - return object4[key2]; -} -var safeGet_default = safeGet; - -// node_modules/lodash-es/toPlainObject.js -function toPlainObject(value) { - return copyObject_default(value, keysIn_default(value)); -} -var toPlainObject_default = toPlainObject; - -// node_modules/lodash-es/_baseMergeDeep.js -function baseMergeDeep(object4, source, key2, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet_default(object4, key2), srcValue = safeGet_default(source, key2), stacked = stack.get(srcValue); - if (stacked) { - assignMergeValue_default(object4, key2, stacked); - return; - } - var newValue = customizer ? customizer(objValue, srcValue, key2 + "", object4, source, stack) : void 0; - var isCommon = newValue === void 0; - if (isCommon) { - var isArr = isArray_default(srcValue), isBuff = !isArr && isBuffer_default(srcValue), isTyped = !isArr && !isBuff && isTypedArray_default(srcValue); - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray_default(objValue)) { - newValue = objValue; - } else if (isArrayLikeObject_default(objValue)) { - newValue = copyArray_default(objValue); - } else if (isBuff) { - isCommon = false; - newValue = cloneBuffer_default(srcValue, true); - } else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray_default(srcValue, true); - } else { - newValue = []; - } - } else if (isPlainObject_default(srcValue) || isArguments_default(srcValue)) { - newValue = objValue; - if (isArguments_default(objValue)) { - newValue = toPlainObject_default(objValue); - } else if (!isObject_default(objValue) || isFunction_default(objValue)) { - newValue = initCloneObject_default(srcValue); - } - } else { - isCommon = false; - } - } - if (isCommon) { - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack["delete"](srcValue); - } - assignMergeValue_default(object4, key2, newValue); -} -var baseMergeDeep_default = baseMergeDeep; - -// node_modules/lodash-es/_baseMerge.js -function baseMerge(object4, source, srcIndex, customizer, stack) { - if (object4 === source) { - return; - } - baseFor_default(source, function(srcValue, key2) { - stack || (stack = new Stack_default()); - if (isObject_default(srcValue)) { - baseMergeDeep_default(object4, source, key2, srcIndex, baseMerge, customizer, stack); - } else { - var newValue = customizer ? customizer(safeGet_default(object4, key2), srcValue, key2 + "", object4, source, stack) : void 0; - if (newValue === void 0) { - newValue = srcValue; - } - assignMergeValue_default(object4, key2, newValue); - } - }, keysIn_default); -} -var baseMerge_default = baseMerge; - -// node_modules/lodash-es/_customDefaultsMerge.js -function customDefaultsMerge(objValue, srcValue, key2, object4, source, stack) { - if (isObject_default(objValue) && isObject_default(srcValue)) { - stack.set(srcValue, objValue); - baseMerge_default(objValue, srcValue, void 0, customDefaultsMerge, stack); - stack["delete"](srcValue); - } - return objValue; -} -var customDefaultsMerge_default = customDefaultsMerge; - -// node_modules/lodash-es/mergeWith.js -var mergeWith = createAssigner_default(function(object4, source, srcIndex, customizer) { - baseMerge_default(object4, source, srcIndex, customizer); -}); -var mergeWith_default = mergeWith; - -// node_modules/lodash-es/defaultsDeep.js -var defaultsDeep = baseRest_default(function(args) { - args.push(void 0, customDefaultsMerge_default); - return apply_default(mergeWith_default, void 0, args); -}); -var defaultsDeep_default = defaultsDeep; - -// node_modules/lodash-es/_baseDelay.js -var FUNC_ERROR_TEXT7 = "Expected a function"; -function baseDelay(func, wait, args) { - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT7); - } - return setTimeout(function() { - func.apply(void 0, args); - }, wait); -} -var baseDelay_default = baseDelay; - -// node_modules/lodash-es/defer.js -var defer = baseRest_default(function(func, args) { - return baseDelay_default(func, 1, args); -}); -var defer_default = defer; - -// node_modules/lodash-es/delay.js -var delay = baseRest_default(function(func, wait, args) { - return baseDelay_default(func, toNumber_default(wait) || 0, args); -}); -var delay_default = delay; - -// node_modules/lodash-es/_arrayIncludesWith.js -function arrayIncludesWith(array4, value, comparator) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - while (++index3 < length2) { - if (comparator(value, array4[index3])) { - return true; - } - } - return false; -} -var arrayIncludesWith_default = arrayIncludesWith; - -// node_modules/lodash-es/_baseDifference.js -var LARGE_ARRAY_SIZE2 = 200; -function baseDifference(array4, values2, iteratee2, comparator) { - var index3 = -1, includes3 = arrayIncludes_default, isCommon = true, length2 = array4.length, result2 = [], valuesLength = values2.length; - if (!length2) { - return result2; - } - if (iteratee2) { - values2 = arrayMap_default(values2, baseUnary_default(iteratee2)); - } - if (comparator) { - includes3 = arrayIncludesWith_default; - isCommon = false; - } else if (values2.length >= LARGE_ARRAY_SIZE2) { - includes3 = cacheHas_default; - isCommon = false; - values2 = new SetCache_default(values2); - } - outer: - while (++index3 < length2) { - var value = array4[index3], computed2 = iteratee2 == null ? value : iteratee2(value); - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed2 === computed2) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values2[valuesIndex] === computed2) { - continue outer; - } - } - result2.push(value); - } else if (!includes3(values2, computed2, comparator)) { - result2.push(value); - } - } - return result2; -} -var baseDifference_default = baseDifference; - -// node_modules/lodash-es/difference.js -var difference = baseRest_default(function(array4, values2) { - return isArrayLikeObject_default(array4) ? baseDifference_default(array4, baseFlatten_default(values2, 1, isArrayLikeObject_default, true)) : []; -}); -var difference_default = difference; - -// node_modules/lodash-es/last.js -function last(array4) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? array4[length2 - 1] : void 0; -} -var last_default = last; - -// node_modules/lodash-es/differenceBy.js -var differenceBy = baseRest_default(function(array4, values2) { - var iteratee2 = last_default(values2); - if (isArrayLikeObject_default(iteratee2)) { - iteratee2 = void 0; - } - return isArrayLikeObject_default(array4) ? baseDifference_default(array4, baseFlatten_default(values2, 1, isArrayLikeObject_default, true), baseIteratee_default(iteratee2, 2)) : []; -}); -var differenceBy_default = differenceBy; - -// node_modules/lodash-es/differenceWith.js -var differenceWith = baseRest_default(function(array4, values2) { - var comparator = last_default(values2); - if (isArrayLikeObject_default(comparator)) { - comparator = void 0; - } - return isArrayLikeObject_default(array4) ? baseDifference_default(array4, baseFlatten_default(values2, 1, isArrayLikeObject_default, true), void 0, comparator) : []; -}); -var differenceWith_default = differenceWith; - -// node_modules/lodash-es/divide.js -var divide = createMathOperation_default(function(dividend, divisor) { - return dividend / divisor; -}, 1); -var divide_default = divide; - -// node_modules/lodash-es/drop.js -function drop(array4, n3, guard) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - n3 = guard || n3 === void 0 ? 1 : toInteger_default(n3); - return baseSlice_default(array4, n3 < 0 ? 0 : n3, length2); -} -var drop_default = drop; - -// node_modules/lodash-es/dropRight.js -function dropRight(array4, n3, guard) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - n3 = guard || n3 === void 0 ? 1 : toInteger_default(n3); - n3 = length2 - n3; - return baseSlice_default(array4, 0, n3 < 0 ? 0 : n3); -} -var dropRight_default = dropRight; - -// node_modules/lodash-es/_baseWhile.js -function baseWhile(array4, predicate, isDrop, fromRight) { - var length2 = array4.length, index3 = fromRight ? length2 : -1; - while ((fromRight ? index3-- : ++index3 < length2) && predicate(array4[index3], index3, array4)) { - } - return isDrop ? baseSlice_default(array4, fromRight ? 0 : index3, fromRight ? index3 + 1 : length2) : baseSlice_default(array4, fromRight ? index3 + 1 : 0, fromRight ? length2 : index3); -} -var baseWhile_default = baseWhile; - -// node_modules/lodash-es/dropRightWhile.js -function dropRightWhile(array4, predicate) { - return array4 && array4.length ? baseWhile_default(array4, baseIteratee_default(predicate, 3), true, true) : []; -} -var dropRightWhile_default = dropRightWhile; - -// node_modules/lodash-es/dropWhile.js -function dropWhile(array4, predicate) { - return array4 && array4.length ? baseWhile_default(array4, baseIteratee_default(predicate, 3), true) : []; -} -var dropWhile_default = dropWhile; - -// node_modules/lodash-es/_castFunction.js -function castFunction(value) { - return typeof value == "function" ? value : identity_default; -} -var castFunction_default = castFunction; - -// node_modules/lodash-es/forEach.js -function forEach(collection, iteratee2) { - var func = isArray_default(collection) ? arrayEach_default : baseEach_default; - return func(collection, castFunction_default(iteratee2)); -} -var forEach_default = forEach; - -// node_modules/lodash-es/_arrayEachRight.js -function arrayEachRight(array4, iteratee2) { - var length2 = array4 == null ? 0 : array4.length; - while (length2--) { - if (iteratee2(array4[length2], length2, array4) === false) { - break; - } - } - return array4; -} -var arrayEachRight_default = arrayEachRight; - -// node_modules/lodash-es/_baseForRight.js -var baseForRight = createBaseFor_default(true); -var baseForRight_default = baseForRight; - -// node_modules/lodash-es/_baseForOwnRight.js -function baseForOwnRight(object4, iteratee2) { - return object4 && baseForRight_default(object4, iteratee2, keys_default); -} -var baseForOwnRight_default = baseForOwnRight; - -// node_modules/lodash-es/_baseEachRight.js -var baseEachRight = createBaseEach_default(baseForOwnRight_default, true); -var baseEachRight_default = baseEachRight; - -// node_modules/lodash-es/forEachRight.js -function forEachRight(collection, iteratee2) { - var func = isArray_default(collection) ? arrayEachRight_default : baseEachRight_default; - return func(collection, castFunction_default(iteratee2)); -} -var forEachRight_default = forEachRight; - -// node_modules/lodash-es/endsWith.js -function endsWith(string3, target, position2) { - string3 = toString_default(string3); - target = baseToString_default(target); - var length2 = string3.length; - position2 = position2 === void 0 ? length2 : baseClamp_default(toInteger_default(position2), 0, length2); - var end = position2; - position2 -= target.length; - return position2 >= 0 && string3.slice(position2, end) == target; -} -var endsWith_default = endsWith; - -// node_modules/lodash-es/_baseToPairs.js -function baseToPairs(object4, props4) { - return arrayMap_default(props4, function(key2) { - return [key2, object4[key2]]; - }); -} -var baseToPairs_default = baseToPairs; - -// node_modules/lodash-es/_setToPairs.js -function setToPairs(set3) { - var index3 = -1, result2 = Array(set3.size); - set3.forEach(function(value) { - result2[++index3] = [value, value]; - }); - return result2; -} -var setToPairs_default = setToPairs; - -// node_modules/lodash-es/_createToPairs.js -var mapTag7 = "[object Map]"; -var setTag7 = "[object Set]"; -function createToPairs(keysFunc) { - return function(object4) { - var tag = getTag_default(object4); - if (tag == mapTag7) { - return mapToArray_default(object4); - } - if (tag == setTag7) { - return setToPairs_default(object4); - } - return baseToPairs_default(object4, keysFunc(object4)); - }; -} -var createToPairs_default = createToPairs; - -// node_modules/lodash-es/toPairs.js -var toPairs = createToPairs_default(keys_default); -var toPairs_default = toPairs; - -// node_modules/lodash-es/toPairsIn.js -var toPairsIn = createToPairs_default(keysIn_default); -var toPairsIn_default = toPairsIn; - -// node_modules/lodash-es/_escapeHtmlChar.js -var htmlEscapes = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" -}; -var escapeHtmlChar = basePropertyOf_default(htmlEscapes); -var escapeHtmlChar_default = escapeHtmlChar; - -// node_modules/lodash-es/escape.js -var reUnescapedHtml = /[&<>"']/g; -var reHasUnescapedHtml = RegExp(reUnescapedHtml.source); -function escape(string3) { - string3 = toString_default(string3); - return string3 && reHasUnescapedHtml.test(string3) ? string3.replace(reUnescapedHtml, escapeHtmlChar_default) : string3; -} -var escape_default = escape; - -// node_modules/lodash-es/escapeRegExp.js -var reRegExpChar2 = /[\\^$.*+?()[\]{}|]/g; -var reHasRegExpChar = RegExp(reRegExpChar2.source); -function escapeRegExp(string3) { - string3 = toString_default(string3); - return string3 && reHasRegExpChar.test(string3) ? string3.replace(reRegExpChar2, "\\$&") : string3; -} -var escapeRegExp_default = escapeRegExp; - -// node_modules/lodash-es/_arrayEvery.js -function arrayEvery(array4, predicate) { - var index3 = -1, length2 = array4 == null ? 0 : array4.length; - while (++index3 < length2) { - if (!predicate(array4[index3], index3, array4)) { - return false; - } - } - return true; -} -var arrayEvery_default = arrayEvery; - -// node_modules/lodash-es/_baseEvery.js -function baseEvery(collection, predicate) { - var result2 = true; - baseEach_default(collection, function(value, index3, collection2) { - result2 = !!predicate(value, index3, collection2); - return result2; - }); - return result2; -} -var baseEvery_default = baseEvery; - -// node_modules/lodash-es/every.js -function every(collection, predicate, guard) { - var func = isArray_default(collection) ? arrayEvery_default : baseEvery_default; - if (guard && isIterateeCall_default(collection, predicate, guard)) { - predicate = void 0; - } - return func(collection, baseIteratee_default(predicate, 3)); -} -var every_default = every; - -// node_modules/lodash-es/toLength.js -var MAX_ARRAY_LENGTH2 = 4294967295; -function toLength(value) { - return value ? baseClamp_default(toInteger_default(value), 0, MAX_ARRAY_LENGTH2) : 0; -} -var toLength_default = toLength; - -// node_modules/lodash-es/_baseFill.js -function baseFill(array4, value, start, end) { - var length2 = array4.length; - start = toInteger_default(start); - if (start < 0) { - start = -start > length2 ? 0 : length2 + start; - } - end = end === void 0 || end > length2 ? length2 : toInteger_default(end); - if (end < 0) { - end += length2; - } - end = start > end ? 0 : toLength_default(end); - while (start < end) { - array4[start++] = value; - } - return array4; -} -var baseFill_default = baseFill; - -// node_modules/lodash-es/fill.js -function fill(array4, value, start, end) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - if (start && typeof start != "number" && isIterateeCall_default(array4, value, start)) { - start = 0; - end = length2; - } - return baseFill_default(array4, value, start, end); -} -var fill_default = fill; - -// node_modules/lodash-es/_baseFilter.js -function baseFilter(collection, predicate) { - var result2 = []; - baseEach_default(collection, function(value, index3, collection2) { - if (predicate(value, index3, collection2)) { - result2.push(value); - } - }); - return result2; -} -var baseFilter_default = baseFilter; - -// node_modules/lodash-es/filter.js -function filter2(collection, predicate) { - var func = isArray_default(collection) ? arrayFilter_default : baseFilter_default; - return func(collection, baseIteratee_default(predicate, 3)); -} -var filter_default = filter2; - -// node_modules/lodash-es/_createFind.js -function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike_default(collection)) { - var iteratee2 = baseIteratee_default(predicate, 3); - collection = keys_default(collection); - predicate = function(key2) { - return iteratee2(iterable[key2], key2, iterable); - }; - } - var index3 = findIndexFunc(collection, predicate, fromIndex); - return index3 > -1 ? iterable[iteratee2 ? collection[index3] : index3] : void 0; - }; -} -var createFind_default = createFind; - -// node_modules/lodash-es/findIndex.js -var nativeMax7 = Math.max; -function findIndex(array4, predicate, fromIndex) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return -1; - } - var index3 = fromIndex == null ? 0 : toInteger_default(fromIndex); - if (index3 < 0) { - index3 = nativeMax7(length2 + index3, 0); - } - return baseFindIndex_default(array4, baseIteratee_default(predicate, 3), index3); -} -var findIndex_default = findIndex; - -// node_modules/lodash-es/find.js -var find = createFind_default(findIndex_default); -var find_default = find; - -// node_modules/lodash-es/_baseFindKey.js -function baseFindKey(collection, predicate, eachFunc) { - var result2; - eachFunc(collection, function(value, key2, collection2) { - if (predicate(value, key2, collection2)) { - result2 = key2; - return false; - } - }); - return result2; -} -var baseFindKey_default = baseFindKey; - -// node_modules/lodash-es/findKey.js -function findKey(object4, predicate) { - return baseFindKey_default(object4, baseIteratee_default(predicate, 3), baseForOwn_default); -} -var findKey_default = findKey; - -// node_modules/lodash-es/findLastIndex.js -var nativeMax8 = Math.max; -var nativeMin5 = Math.min; -function findLastIndex(array4, predicate, fromIndex) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return -1; - } - var index3 = length2 - 1; - if (fromIndex !== void 0) { - index3 = toInteger_default(fromIndex); - index3 = fromIndex < 0 ? nativeMax8(length2 + index3, 0) : nativeMin5(index3, length2 - 1); - } - return baseFindIndex_default(array4, baseIteratee_default(predicate, 3), index3, true); -} -var findLastIndex_default = findLastIndex; - -// node_modules/lodash-es/findLast.js -var findLast = createFind_default(findLastIndex_default); -var findLast_default = findLast; - -// node_modules/lodash-es/findLastKey.js -function findLastKey(object4, predicate) { - return baseFindKey_default(object4, baseIteratee_default(predicate, 3), baseForOwnRight_default); -} -var findLastKey_default = findLastKey; - -// node_modules/lodash-es/head.js -function head(array4) { - return array4 && array4.length ? array4[0] : void 0; -} -var head_default = head; - -// node_modules/lodash-es/_baseMap.js -function baseMap(collection, iteratee2) { - var index3 = -1, result2 = isArrayLike_default(collection) ? Array(collection.length) : []; - baseEach_default(collection, function(value, key2, collection2) { - result2[++index3] = iteratee2(value, key2, collection2); - }); - return result2; -} -var baseMap_default = baseMap; - -// node_modules/lodash-es/map.js -function map(collection, iteratee2) { - var func = isArray_default(collection) ? arrayMap_default : baseMap_default; - return func(collection, baseIteratee_default(iteratee2, 3)); -} -var map_default = map; - -// node_modules/lodash-es/flatMap.js -function flatMap(collection, iteratee2) { - return baseFlatten_default(map_default(collection, iteratee2), 1); -} -var flatMap_default = flatMap; - -// node_modules/lodash-es/flatMapDeep.js -var INFINITY4 = 1 / 0; -function flatMapDeep(collection, iteratee2) { - return baseFlatten_default(map_default(collection, iteratee2), INFINITY4); -} -var flatMapDeep_default = flatMapDeep; - -// node_modules/lodash-es/flatMapDepth.js -function flatMapDepth(collection, iteratee2, depth) { - depth = depth === void 0 ? 1 : toInteger_default(depth); - return baseFlatten_default(map_default(collection, iteratee2), depth); -} -var flatMapDepth_default = flatMapDepth; - -// node_modules/lodash-es/flattenDeep.js -var INFINITY5 = 1 / 0; -function flattenDeep(array4) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? baseFlatten_default(array4, INFINITY5) : []; -} -var flattenDeep_default = flattenDeep; - -// node_modules/lodash-es/flattenDepth.js -function flattenDepth(array4, depth) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - depth = depth === void 0 ? 1 : toInteger_default(depth); - return baseFlatten_default(array4, depth); -} -var flattenDepth_default = flattenDepth; - -// node_modules/lodash-es/flip.js -var WRAP_FLIP_FLAG3 = 512; -function flip2(func) { - return createWrap_default(func, WRAP_FLIP_FLAG3); -} -var flip_default = flip2; - -// node_modules/lodash-es/floor.js -var floor = createRound_default("floor"); -var floor_default = floor; - -// node_modules/lodash-es/_createFlow.js -var FUNC_ERROR_TEXT8 = "Expected a function"; -var WRAP_CURRY_FLAG7 = 8; -var WRAP_PARTIAL_FLAG6 = 32; -var WRAP_ARY_FLAG5 = 128; -var WRAP_REARG_FLAG3 = 256; -function createFlow(fromRight) { - return flatRest_default(function(funcs) { - var length2 = funcs.length, index3 = length2, prereq = LodashWrapper_default.prototype.thru; - if (fromRight) { - funcs.reverse(); - } - while (index3--) { - var func = funcs[index3]; - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT8); - } - if (prereq && !wrapper && getFuncName_default(func) == "wrapper") { - var wrapper = new LodashWrapper_default([], true); - } - } - index3 = wrapper ? index3 : length2; - while (++index3 < length2) { - func = funcs[index3]; - var funcName = getFuncName_default(func), data = funcName == "wrapper" ? getData_default(func) : void 0; - if (data && isLaziable_default(data[0]) && data[1] == (WRAP_ARY_FLAG5 | WRAP_CURRY_FLAG7 | WRAP_PARTIAL_FLAG6 | WRAP_REARG_FLAG3) && !data[4].length && data[9] == 1) { - wrapper = wrapper[getFuncName_default(data[0])].apply(wrapper, data[3]); - } else { - wrapper = func.length == 1 && isLaziable_default(func) ? wrapper[funcName]() : wrapper.thru(func); - } - } - return function() { - var args = arguments, value = args[0]; - if (wrapper && args.length == 1 && isArray_default(value)) { - return wrapper.plant(value).value(); - } - var index4 = 0, result2 = length2 ? funcs[index4].apply(this, args) : value; - while (++index4 < length2) { - result2 = funcs[index4].call(this, result2); - } - return result2; - }; - }); -} -var createFlow_default = createFlow; - -// node_modules/lodash-es/flow.js -var flow = createFlow_default(); -var flow_default = flow; - -// node_modules/lodash-es/flowRight.js -var flowRight = createFlow_default(true); -var flowRight_default = flowRight; - -// node_modules/lodash-es/forIn.js -function forIn(object4, iteratee2) { - return object4 == null ? object4 : baseFor_default(object4, castFunction_default(iteratee2), keysIn_default); -} -var forIn_default = forIn; - -// node_modules/lodash-es/forInRight.js -function forInRight(object4, iteratee2) { - return object4 == null ? object4 : baseForRight_default(object4, castFunction_default(iteratee2), keysIn_default); -} -var forInRight_default = forInRight; - -// node_modules/lodash-es/forOwn.js -function forOwn(object4, iteratee2) { - return object4 && baseForOwn_default(object4, castFunction_default(iteratee2)); -} -var forOwn_default = forOwn; - -// node_modules/lodash-es/forOwnRight.js -function forOwnRight(object4, iteratee2) { - return object4 && baseForOwnRight_default(object4, castFunction_default(iteratee2)); -} -var forOwnRight_default = forOwnRight; - -// node_modules/lodash-es/fromPairs.js -function fromPairs(pairs) { - var index3 = -1, length2 = pairs == null ? 0 : pairs.length, result2 = {}; - while (++index3 < length2) { - var pair = pairs[index3]; - result2[pair[0]] = pair[1]; - } - return result2; -} -var fromPairs_default = fromPairs; - -// node_modules/lodash-es/_baseFunctions.js -function baseFunctions(object4, props4) { - return arrayFilter_default(props4, function(key2) { - return isFunction_default(object4[key2]); - }); -} -var baseFunctions_default = baseFunctions; - -// node_modules/lodash-es/functions.js -function functions(object4) { - return object4 == null ? [] : baseFunctions_default(object4, keys_default(object4)); -} -var functions_default = functions; - -// node_modules/lodash-es/functionsIn.js -function functionsIn(object4) { - return object4 == null ? [] : baseFunctions_default(object4, keysIn_default(object4)); -} -var functionsIn_default = functionsIn; - -// node_modules/lodash-es/groupBy.js -var objectProto22 = Object.prototype; -var hasOwnProperty20 = objectProto22.hasOwnProperty; -var groupBy = createAggregator_default(function(result2, value, key2) { - if (hasOwnProperty20.call(result2, key2)) { - result2[key2].push(value); - } else { - baseAssignValue_default(result2, key2, [value]); - } -}); -var groupBy_default = groupBy; - -// node_modules/lodash-es/_baseGt.js -function baseGt(value, other) { - return value > other; -} -var baseGt_default = baseGt; - -// node_modules/lodash-es/_createRelationalOperation.js -function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == "string" && typeof other == "string")) { - value = toNumber_default(value); - other = toNumber_default(other); - } - return operator(value, other); - }; -} -var createRelationalOperation_default = createRelationalOperation; - -// node_modules/lodash-es/gt.js -var gt = createRelationalOperation_default(baseGt_default); -var gt_default = gt; - -// node_modules/lodash-es/gte.js -var gte = createRelationalOperation_default(function(value, other) { - return value >= other; -}); -var gte_default = gte; - -// node_modules/lodash-es/_baseHas.js -var objectProto23 = Object.prototype; -var hasOwnProperty21 = objectProto23.hasOwnProperty; -function baseHas(object4, key2) { - return object4 != null && hasOwnProperty21.call(object4, key2); -} -var baseHas_default = baseHas; - -// node_modules/lodash-es/has.js -function has(object4, path2) { - return object4 != null && hasPath_default(object4, path2, baseHas_default); -} -var has_default = has; - -// node_modules/lodash-es/_baseInRange.js -var nativeMax9 = Math.max; -var nativeMin6 = Math.min; -function baseInRange(number4, start, end) { - return number4 >= nativeMin6(start, end) && number4 < nativeMax9(start, end); -} -var baseInRange_default = baseInRange; - -// node_modules/lodash-es/inRange.js -function inRange(number4, start, end) { - start = toFinite_default(start); - if (end === void 0) { - end = start; - start = 0; - } else { - end = toFinite_default(end); - } - number4 = toNumber_default(number4); - return baseInRange_default(number4, start, end); -} -var inRange_default = inRange; - -// node_modules/lodash-es/isString.js -var stringTag5 = "[object String]"; -function isString2(value) { - return typeof value == "string" || !isArray_default(value) && isObjectLike_default(value) && baseGetTag_default(value) == stringTag5; -} -var isString_default = isString2; - -// node_modules/lodash-es/_baseValues.js -function baseValues(object4, props4) { - return arrayMap_default(props4, function(key2) { - return object4[key2]; - }); -} -var baseValues_default = baseValues; - -// node_modules/lodash-es/values.js -function values(object4) { - return object4 == null ? [] : baseValues_default(object4, keys_default(object4)); -} -var values_default = values; - -// node_modules/lodash-es/includes.js -var nativeMax10 = Math.max; -function includes2(collection, value, fromIndex, guard) { - collection = isArrayLike_default(collection) ? collection : values_default(collection); - fromIndex = fromIndex && !guard ? toInteger_default(fromIndex) : 0; - var length2 = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax10(length2 + fromIndex, 0); - } - return isString_default(collection) ? fromIndex <= length2 && collection.indexOf(value, fromIndex) > -1 : !!length2 && baseIndexOf_default(collection, value, fromIndex) > -1; -} -var includes_default = includes2; - -// node_modules/lodash-es/indexOf.js -var nativeMax11 = Math.max; -function indexOf(array4, value, fromIndex) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return -1; - } - var index3 = fromIndex == null ? 0 : toInteger_default(fromIndex); - if (index3 < 0) { - index3 = nativeMax11(length2 + index3, 0); - } - return baseIndexOf_default(array4, value, index3); -} -var indexOf_default = indexOf; - -// node_modules/lodash-es/initial.js -function initial(array4) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? baseSlice_default(array4, 0, -1) : []; -} -var initial_default = initial; - -// node_modules/lodash-es/_baseIntersection.js -var nativeMin7 = Math.min; -function baseIntersection(arrays, iteratee2, comparator) { - var includes3 = comparator ? arrayIncludesWith_default : arrayIncludes_default, length2 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array(othLength), maxLength = Infinity, result2 = []; - while (othIndex--) { - var array4 = arrays[othIndex]; - if (othIndex && iteratee2) { - array4 = arrayMap_default(array4, baseUnary_default(iteratee2)); - } - maxLength = nativeMin7(array4.length, maxLength); - caches[othIndex] = !comparator && (iteratee2 || length2 >= 120 && array4.length >= 120) ? new SetCache_default(othIndex && array4) : void 0; - } - array4 = arrays[0]; - var index3 = -1, seen = caches[0]; - outer: - while (++index3 < length2 && result2.length < maxLength) { - var value = array4[index3], computed2 = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (!(seen ? cacheHas_default(seen, computed2) : includes3(result2, computed2, comparator))) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache ? cacheHas_default(cache, computed2) : includes3(arrays[othIndex], computed2, comparator))) { - continue outer; - } - } - if (seen) { - seen.push(computed2); - } - result2.push(value); - } - } - return result2; -} -var baseIntersection_default = baseIntersection; - -// node_modules/lodash-es/_castArrayLikeObject.js -function castArrayLikeObject(value) { - return isArrayLikeObject_default(value) ? value : []; -} -var castArrayLikeObject_default = castArrayLikeObject; - -// node_modules/lodash-es/intersection.js -var intersection = baseRest_default(function(arrays) { - var mapped = arrayMap_default(arrays, castArrayLikeObject_default); - return mapped.length && mapped[0] === arrays[0] ? baseIntersection_default(mapped) : []; -}); -var intersection_default = intersection; - -// node_modules/lodash-es/intersectionBy.js -var intersectionBy = baseRest_default(function(arrays) { - var iteratee2 = last_default(arrays), mapped = arrayMap_default(arrays, castArrayLikeObject_default); - if (iteratee2 === last_default(mapped)) { - iteratee2 = void 0; - } else { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection_default(mapped, baseIteratee_default(iteratee2, 2)) : []; -}); -var intersectionBy_default = intersectionBy; - -// node_modules/lodash-es/intersectionWith.js -var intersectionWith = baseRest_default(function(arrays) { - var comparator = last_default(arrays), mapped = arrayMap_default(arrays, castArrayLikeObject_default); - comparator = typeof comparator == "function" ? comparator : void 0; - if (comparator) { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection_default(mapped, void 0, comparator) : []; -}); -var intersectionWith_default = intersectionWith; - -// node_modules/lodash-es/_baseInverter.js -function baseInverter(object4, setter, iteratee2, accumulator) { - baseForOwn_default(object4, function(value, key2, object5) { - setter(accumulator, iteratee2(value), key2, object5); - }); - return accumulator; -} -var baseInverter_default = baseInverter; - -// node_modules/lodash-es/_createInverter.js -function createInverter(setter, toIteratee) { - return function(object4, iteratee2) { - return baseInverter_default(object4, setter, toIteratee(iteratee2), {}); - }; -} -var createInverter_default = createInverter; - -// node_modules/lodash-es/invert.js -var objectProto24 = Object.prototype; -var nativeObjectToString3 = objectProto24.toString; -var invert = createInverter_default(function(result2, value, key2) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString3.call(value); - } - result2[value] = key2; -}, constant_default(identity_default)); -var invert_default = invert; - -// node_modules/lodash-es/invertBy.js -var objectProto25 = Object.prototype; -var hasOwnProperty22 = objectProto25.hasOwnProperty; -var nativeObjectToString4 = objectProto25.toString; -var invertBy = createInverter_default(function(result2, value, key2) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString4.call(value); - } - if (hasOwnProperty22.call(result2, value)) { - result2[value].push(key2); - } else { - result2[value] = [key2]; - } -}, baseIteratee_default); -var invertBy_default = invertBy; - -// node_modules/lodash-es/_parent.js -function parent(object4, path2) { - return path2.length < 2 ? object4 : baseGet_default(object4, baseSlice_default(path2, 0, -1)); -} -var parent_default = parent; - -// node_modules/lodash-es/_baseInvoke.js -function baseInvoke(object4, path2, args) { - path2 = castPath_default(path2, object4); - object4 = parent_default(object4, path2); - var func = object4 == null ? object4 : object4[toKey_default(last_default(path2))]; - return func == null ? void 0 : apply_default(func, object4, args); -} -var baseInvoke_default = baseInvoke; - -// node_modules/lodash-es/invoke.js -var invoke = baseRest_default(baseInvoke_default); -var invoke_default = invoke; - -// node_modules/lodash-es/invokeMap.js -var invokeMap = baseRest_default(function(collection, path2, args) { - var index3 = -1, isFunc = typeof path2 == "function", result2 = isArrayLike_default(collection) ? Array(collection.length) : []; - baseEach_default(collection, function(value) { - result2[++index3] = isFunc ? apply_default(path2, value, args) : baseInvoke_default(value, path2, args); - }); - return result2; -}); -var invokeMap_default = invokeMap; - -// node_modules/lodash-es/_baseIsArrayBuffer.js -var arrayBufferTag5 = "[object ArrayBuffer]"; -function baseIsArrayBuffer(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == arrayBufferTag5; -} -var baseIsArrayBuffer_default = baseIsArrayBuffer; - -// node_modules/lodash-es/isArrayBuffer.js -var nodeIsArrayBuffer = nodeUtil_default && nodeUtil_default.isArrayBuffer; -var isArrayBuffer = nodeIsArrayBuffer ? baseUnary_default(nodeIsArrayBuffer) : baseIsArrayBuffer_default; -var isArrayBuffer_default = isArrayBuffer; - -// node_modules/lodash-es/isBoolean.js -var boolTag5 = "[object Boolean]"; -function isBoolean(value) { - return value === true || value === false || isObjectLike_default(value) && baseGetTag_default(value) == boolTag5; -} -var isBoolean_default = isBoolean; - -// node_modules/lodash-es/_baseIsDate.js -var dateTag5 = "[object Date]"; -function baseIsDate(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == dateTag5; -} -var baseIsDate_default = baseIsDate; - -// node_modules/lodash-es/isDate.js -var nodeIsDate = nodeUtil_default && nodeUtil_default.isDate; -var isDate = nodeIsDate ? baseUnary_default(nodeIsDate) : baseIsDate_default; -var isDate_default = isDate; - -// node_modules/lodash-es/isElement.js -function isElement(value) { - return isObjectLike_default(value) && value.nodeType === 1 && !isPlainObject_default(value); -} -var isElement_default = isElement; - -// node_modules/lodash-es/isEmpty.js -var mapTag8 = "[object Map]"; -var setTag8 = "[object Set]"; -var objectProto26 = Object.prototype; -var hasOwnProperty23 = objectProto26.hasOwnProperty; -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike_default(value) && (isArray_default(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer_default(value) || isTypedArray_default(value) || isArguments_default(value))) { - return !value.length; - } - var tag = getTag_default(value); - if (tag == mapTag8 || tag == setTag8) { - return !value.size; - } - if (isPrototype_default(value)) { - return !baseKeys_default(value).length; - } - for (var key2 in value) { - if (hasOwnProperty23.call(value, key2)) { - return false; - } - } - return true; -} -var isEmpty_default = isEmpty; - -// node_modules/lodash-es/isEqualWith.js -function isEqualWith(value, other, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - var result2 = customizer ? customizer(value, other) : void 0; - return result2 === void 0 ? baseIsEqual_default(value, other, void 0, customizer) : !!result2; -} -var isEqualWith_default = isEqualWith; - -// node_modules/lodash-es/isFinite.js -var nativeIsFinite2 = root_default.isFinite; -function isFinite2(value) { - return typeof value == "number" && nativeIsFinite2(value); -} -var isFinite_default = isFinite2; - -// node_modules/lodash-es/isInteger.js -function isInteger(value) { - return typeof value == "number" && value == toInteger_default(value); -} -var isInteger_default = isInteger; - -// node_modules/lodash-es/isMatch.js -function isMatch(object4, source) { - return object4 === source || baseIsMatch_default(object4, source, getMatchData_default(source)); -} -var isMatch_default = isMatch; - -// node_modules/lodash-es/isMatchWith.js -function isMatchWith(object4, source, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - return baseIsMatch_default(object4, source, getMatchData_default(source), customizer); -} -var isMatchWith_default = isMatchWith; - -// node_modules/lodash-es/isNumber.js -var numberTag5 = "[object Number]"; -function isNumber(value) { - return typeof value == "number" || isObjectLike_default(value) && baseGetTag_default(value) == numberTag5; -} -var isNumber_default = isNumber; - -// node_modules/lodash-es/isNaN.js -function isNaN2(value) { - return isNumber_default(value) && value != +value; -} -var isNaN_default = isNaN2; - -// node_modules/lodash-es/_isMaskable.js -var isMaskable = coreJsData_default ? isFunction_default : stubFalse_default; -var isMaskable_default = isMaskable; - -// node_modules/lodash-es/isNative.js -var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill."; -function isNative(value) { - if (isMaskable_default(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative_default(value); -} -var isNative_default = isNative; - -// node_modules/lodash-es/isNil.js -function isNil(value) { - return value == null; -} -var isNil_default = isNil; - -// node_modules/lodash-es/isNull.js -function isNull(value) { - return value === null; -} -var isNull_default = isNull; - -// node_modules/lodash-es/_baseIsRegExp.js -var regexpTag5 = "[object RegExp]"; -function baseIsRegExp(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == regexpTag5; -} -var baseIsRegExp_default = baseIsRegExp; - -// node_modules/lodash-es/isRegExp.js -var nodeIsRegExp = nodeUtil_default && nodeUtil_default.isRegExp; -var isRegExp = nodeIsRegExp ? baseUnary_default(nodeIsRegExp) : baseIsRegExp_default; -var isRegExp_default = isRegExp; - -// node_modules/lodash-es/isSafeInteger.js -var MAX_SAFE_INTEGER3 = 9007199254740991; -function isSafeInteger(value) { - return isInteger_default(value) && value >= -MAX_SAFE_INTEGER3 && value <= MAX_SAFE_INTEGER3; -} -var isSafeInteger_default = isSafeInteger; - -// node_modules/lodash-es/isUndefined.js -function isUndefined(value) { - return value === void 0; -} -var isUndefined_default = isUndefined; - -// node_modules/lodash-es/isWeakMap.js -var weakMapTag4 = "[object WeakMap]"; -function isWeakMap(value) { - return isObjectLike_default(value) && getTag_default(value) == weakMapTag4; -} -var isWeakMap_default = isWeakMap; - -// node_modules/lodash-es/isWeakSet.js -var weakSetTag = "[object WeakSet]"; -function isWeakSet(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == weakSetTag; -} -var isWeakSet_default = isWeakSet; - -// node_modules/lodash-es/iteratee.js -var CLONE_DEEP_FLAG5 = 1; -function iteratee(func) { - return baseIteratee_default(typeof func == "function" ? func : baseClone_default(func, CLONE_DEEP_FLAG5)); -} -var iteratee_default = iteratee; - -// node_modules/lodash-es/join.js -var arrayProto2 = Array.prototype; -var nativeJoin = arrayProto2.join; -function join(array4, separator) { - return array4 == null ? "" : nativeJoin.call(array4, separator); -} -var join_default = join; - -// node_modules/lodash-es/kebabCase.js -var kebabCase = createCompounder_default(function(result2, word, index3) { - return result2 + (index3 ? "-" : "") + word.toLowerCase(); -}); -var kebabCase_default = kebabCase; - -// node_modules/lodash-es/keyBy.js -var keyBy = createAggregator_default(function(result2, value, key2) { - baseAssignValue_default(result2, key2, value); -}); -var keyBy_default = keyBy; - -// node_modules/lodash-es/_strictLastIndexOf.js -function strictLastIndexOf(array4, value, fromIndex) { - var index3 = fromIndex + 1; - while (index3--) { - if (array4[index3] === value) { - return index3; - } - } - return index3; -} -var strictLastIndexOf_default = strictLastIndexOf; - -// node_modules/lodash-es/lastIndexOf.js -var nativeMax12 = Math.max; -var nativeMin8 = Math.min; -function lastIndexOf(array4, value, fromIndex) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return -1; - } - var index3 = length2; - if (fromIndex !== void 0) { - index3 = toInteger_default(fromIndex); - index3 = index3 < 0 ? nativeMax12(length2 + index3, 0) : nativeMin8(index3, length2 - 1); - } - return value === value ? strictLastIndexOf_default(array4, value, index3) : baseFindIndex_default(array4, baseIsNaN_default, index3, true); -} -var lastIndexOf_default = lastIndexOf; - -// node_modules/lodash-es/lowerCase.js -var lowerCase = createCompounder_default(function(result2, word, index3) { - return result2 + (index3 ? " " : "") + word.toLowerCase(); -}); -var lowerCase_default = lowerCase; - -// node_modules/lodash-es/lowerFirst.js -var lowerFirst = createCaseFirst_default("toLowerCase"); -var lowerFirst_default = lowerFirst; - -// node_modules/lodash-es/_baseLt.js -function baseLt(value, other) { - return value < other; -} -var baseLt_default = baseLt; - -// node_modules/lodash-es/lt.js -var lt = createRelationalOperation_default(baseLt_default); -var lt_default = lt; - -// node_modules/lodash-es/lte.js -var lte = createRelationalOperation_default(function(value, other) { - return value <= other; -}); -var lte_default = lte; - -// node_modules/lodash-es/mapKeys.js -function mapKeys(object4, iteratee2) { - var result2 = {}; - iteratee2 = baseIteratee_default(iteratee2, 3); - baseForOwn_default(object4, function(value, key2, object5) { - baseAssignValue_default(result2, iteratee2(value, key2, object5), value); - }); - return result2; -} -var mapKeys_default = mapKeys; - -// node_modules/lodash-es/mapValues.js -function mapValues(object4, iteratee2) { - var result2 = {}; - iteratee2 = baseIteratee_default(iteratee2, 3); - baseForOwn_default(object4, function(value, key2, object5) { - baseAssignValue_default(result2, key2, iteratee2(value, key2, object5)); - }); - return result2; -} -var mapValues_default = mapValues; - -// node_modules/lodash-es/matches.js -var CLONE_DEEP_FLAG6 = 1; -function matches(source) { - return baseMatches_default(baseClone_default(source, CLONE_DEEP_FLAG6)); -} -var matches_default = matches; - -// node_modules/lodash-es/matchesProperty.js -var CLONE_DEEP_FLAG7 = 1; -function matchesProperty(path2, srcValue) { - return baseMatchesProperty_default(path2, baseClone_default(srcValue, CLONE_DEEP_FLAG7)); -} -var matchesProperty_default = matchesProperty; - -// node_modules/lodash-es/_baseExtremum.js -function baseExtremum(array4, iteratee2, comparator) { - var index3 = -1, length2 = array4.length; - while (++index3 < length2) { - var value = array4[index3], current = iteratee2(value); - if (current != null && (computed2 === void 0 ? current === current && !isSymbol_default(current) : comparator(current, computed2))) { - var computed2 = current, result2 = value; - } - } - return result2; -} -var baseExtremum_default = baseExtremum; - -// node_modules/lodash-es/max.js -function max(array4) { - return array4 && array4.length ? baseExtremum_default(array4, identity_default, baseGt_default) : void 0; -} -var max_default = max; - -// node_modules/lodash-es/maxBy.js -function maxBy(array4, iteratee2) { - return array4 && array4.length ? baseExtremum_default(array4, baseIteratee_default(iteratee2, 2), baseGt_default) : void 0; -} -var maxBy_default = maxBy; - -// node_modules/lodash-es/_baseSum.js -function baseSum(array4, iteratee2) { - var result2, index3 = -1, length2 = array4.length; - while (++index3 < length2) { - var current = iteratee2(array4[index3]); - if (current !== void 0) { - result2 = result2 === void 0 ? current : result2 + current; - } - } - return result2; -} -var baseSum_default = baseSum; - -// node_modules/lodash-es/_baseMean.js -var NAN3 = 0 / 0; -function baseMean(array4, iteratee2) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? baseSum_default(array4, iteratee2) / length2 : NAN3; -} -var baseMean_default = baseMean; - -// node_modules/lodash-es/mean.js -function mean(array4) { - return baseMean_default(array4, identity_default); -} -var mean_default = mean; - -// node_modules/lodash-es/meanBy.js -function meanBy(array4, iteratee2) { - return baseMean_default(array4, baseIteratee_default(iteratee2, 2)); -} -var meanBy_default = meanBy; - -// node_modules/lodash-es/merge.js -var merge3 = createAssigner_default(function(object4, source, srcIndex) { - baseMerge_default(object4, source, srcIndex); -}); -var merge_default = merge3; - -// node_modules/lodash-es/method.js -var method = baseRest_default(function(path2, args) { - return function(object4) { - return baseInvoke_default(object4, path2, args); - }; -}); -var method_default = method; - -// node_modules/lodash-es/methodOf.js -var methodOf = baseRest_default(function(object4, args) { - return function(path2) { - return baseInvoke_default(object4, path2, args); - }; -}); -var methodOf_default = methodOf; - -// node_modules/lodash-es/min.js -function min(array4) { - return array4 && array4.length ? baseExtremum_default(array4, identity_default, baseLt_default) : void 0; -} -var min_default = min; - -// node_modules/lodash-es/minBy.js -function minBy(array4, iteratee2) { - return array4 && array4.length ? baseExtremum_default(array4, baseIteratee_default(iteratee2, 2), baseLt_default) : void 0; -} -var minBy_default = minBy; - -// node_modules/lodash-es/mixin.js -function mixin(object4, source, options) { - var props4 = keys_default(source), methodNames = baseFunctions_default(source, props4); - var chain2 = !(isObject_default(options) && "chain" in options) || !!options.chain, isFunc = isFunction_default(object4); - arrayEach_default(methodNames, function(methodName) { - var func = source[methodName]; - object4[methodName] = func; - if (isFunc) { - object4.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain2 || chainAll) { - var result2 = object4(this.__wrapped__), actions = result2.__actions__ = copyArray_default(this.__actions__); - actions.push({ "func": func, "args": arguments, "thisArg": object4 }); - result2.__chain__ = chainAll; - return result2; - } - return func.apply(object4, arrayPush_default([this.value()], arguments)); - }; - } - }); - return object4; -} -var mixin_default = mixin; - -// node_modules/lodash-es/multiply.js -var multiply = createMathOperation_default(function(multiplier, multiplicand) { - return multiplier * multiplicand; -}, 1); -var multiply_default = multiply; - -// node_modules/lodash-es/negate.js -var FUNC_ERROR_TEXT9 = "Expected a function"; -function negate(predicate) { - if (typeof predicate != "function") { - throw new TypeError(FUNC_ERROR_TEXT9); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: - return !predicate.call(this); - case 1: - return !predicate.call(this, args[0]); - case 2: - return !predicate.call(this, args[0], args[1]); - case 3: - return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; -} -var negate_default = negate; - -// node_modules/lodash-es/_iteratorToArray.js -function iteratorToArray(iterator) { - var data, result2 = []; - while (!(data = iterator.next()).done) { - result2.push(data.value); - } - return result2; -} -var iteratorToArray_default = iteratorToArray; - -// node_modules/lodash-es/toArray.js -var mapTag9 = "[object Map]"; -var setTag9 = "[object Set]"; -var symIterator = Symbol_default ? Symbol_default.iterator : void 0; -function toArray2(value) { - if (!value) { - return []; - } - if (isArrayLike_default(value)) { - return isString_default(value) ? stringToArray_default(value) : copyArray_default(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray_default(value[symIterator]()); - } - var tag = getTag_default(value), func = tag == mapTag9 ? mapToArray_default : tag == setTag9 ? setToArray_default : values_default; - return func(value); -} -var toArray_default = toArray2; - -// node_modules/lodash-es/next.js -function wrapperNext() { - if (this.__values__ === void 0) { - this.__values__ = toArray_default(this.value()); - } - var done = this.__index__ >= this.__values__.length, value = done ? void 0 : this.__values__[this.__index__++]; - return { "done": done, "value": value }; -} -var next_default = wrapperNext; - -// node_modules/lodash-es/_baseNth.js -function baseNth(array4, n3) { - var length2 = array4.length; - if (!length2) { - return; - } - n3 += n3 < 0 ? length2 : 0; - return isIndex_default(n3, length2) ? array4[n3] : void 0; -} -var baseNth_default = baseNth; - -// node_modules/lodash-es/nth.js -function nth(array4, n3) { - return array4 && array4.length ? baseNth_default(array4, toInteger_default(n3)) : void 0; -} -var nth_default = nth; - -// node_modules/lodash-es/nthArg.js -function nthArg(n3) { - n3 = toInteger_default(n3); - return baseRest_default(function(args) { - return baseNth_default(args, n3); - }); -} -var nthArg_default = nthArg; - -// node_modules/lodash-es/_baseUnset.js -function baseUnset(object4, path2) { - path2 = castPath_default(path2, object4); - object4 = parent_default(object4, path2); - return object4 == null || delete object4[toKey_default(last_default(path2))]; -} -var baseUnset_default = baseUnset; - -// node_modules/lodash-es/_customOmitClone.js -function customOmitClone(value) { - return isPlainObject_default(value) ? void 0 : value; -} -var customOmitClone_default = customOmitClone; - -// node_modules/lodash-es/omit.js -var CLONE_DEEP_FLAG8 = 1; -var CLONE_FLAT_FLAG2 = 2; -var CLONE_SYMBOLS_FLAG6 = 4; -var omit2 = flatRest_default(function(object4, paths) { - var result2 = {}; - if (object4 == null) { - return result2; - } - var isDeep = false; - paths = arrayMap_default(paths, function(path2) { - path2 = castPath_default(path2, object4); - isDeep || (isDeep = path2.length > 1); - return path2; - }); - copyObject_default(object4, getAllKeysIn_default(object4), result2); - if (isDeep) { - result2 = baseClone_default(result2, CLONE_DEEP_FLAG8 | CLONE_FLAT_FLAG2 | CLONE_SYMBOLS_FLAG6, customOmitClone_default); - } - var length2 = paths.length; - while (length2--) { - baseUnset_default(result2, paths[length2]); - } - return result2; -}); -var omit_default2 = omit2; - -// node_modules/lodash-es/_baseSet.js -function baseSet(object4, path2, value, customizer) { - if (!isObject_default(object4)) { - return object4; - } - path2 = castPath_default(path2, object4); - var index3 = -1, length2 = path2.length, lastIndex = length2 - 1, nested = object4; - while (nested != null && ++index3 < length2) { - var key2 = toKey_default(path2[index3]), newValue = value; - if (key2 === "__proto__" || key2 === "constructor" || key2 === "prototype") { - return object4; - } - if (index3 != lastIndex) { - var objValue = nested[key2]; - newValue = customizer ? customizer(objValue, key2, nested) : void 0; - if (newValue === void 0) { - newValue = isObject_default(objValue) ? objValue : isIndex_default(path2[index3 + 1]) ? [] : {}; - } - } - assignValue_default(nested, key2, newValue); - nested = nested[key2]; - } - return object4; -} -var baseSet_default = baseSet; - -// node_modules/lodash-es/_basePickBy.js -function basePickBy(object4, paths, predicate) { - var index3 = -1, length2 = paths.length, result2 = {}; - while (++index3 < length2) { - var path2 = paths[index3], value = baseGet_default(object4, path2); - if (predicate(value, path2)) { - baseSet_default(result2, castPath_default(path2, object4), value); - } - } - return result2; -} -var basePickBy_default = basePickBy; - -// node_modules/lodash-es/pickBy.js -function pickBy(object4, predicate) { - if (object4 == null) { - return {}; - } - var props4 = arrayMap_default(getAllKeysIn_default(object4), function(prop) { - return [prop]; - }); - predicate = baseIteratee_default(predicate); - return basePickBy_default(object4, props4, function(value, path2) { - return predicate(value, path2[0]); - }); -} -var pickBy_default = pickBy; - -// node_modules/lodash-es/omitBy.js -function omitBy(object4, predicate) { - return pickBy_default(object4, negate_default(baseIteratee_default(predicate))); -} -var omitBy_default = omitBy; - -// node_modules/lodash-es/once.js -function once(func) { - return before_default(2, func); -} -var once_default = once; - -// node_modules/lodash-es/_baseSortBy.js -function baseSortBy(array4, comparer) { - var length2 = array4.length; - array4.sort(comparer); - while (length2--) { - array4[length2] = array4[length2].value; - } - return array4; -} -var baseSortBy_default = baseSortBy; - -// node_modules/lodash-es/_compareAscending.js -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== void 0, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol_default(value); - var othIsDefined = other !== void 0, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol_default(other); - if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { - return 1; - } - if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { - return -1; - } - } - return 0; -} -var compareAscending_default = compareAscending; - -// node_modules/lodash-es/_compareMultiple.js -function compareMultiple(object4, other, orders) { - var index3 = -1, objCriteria = object4.criteria, othCriteria = other.criteria, length2 = objCriteria.length, ordersLength = orders.length; - while (++index3 < length2) { - var result2 = compareAscending_default(objCriteria[index3], othCriteria[index3]); - if (result2) { - if (index3 >= ordersLength) { - return result2; - } - var order = orders[index3]; - return result2 * (order == "desc" ? -1 : 1); - } - } - return object4.index - other.index; -} -var compareMultiple_default = compareMultiple; - -// node_modules/lodash-es/_baseOrderBy.js -function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap_default(iteratees, function(iteratee2) { - if (isArray_default(iteratee2)) { - return function(value) { - return baseGet_default(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); - }; - } - return iteratee2; - }); - } else { - iteratees = [identity_default]; - } - var index3 = -1; - iteratees = arrayMap_default(iteratees, baseUnary_default(baseIteratee_default)); - var result2 = baseMap_default(collection, function(value, key2, collection2) { - var criteria = arrayMap_default(iteratees, function(iteratee2) { - return iteratee2(value); - }); - return { "criteria": criteria, "index": ++index3, "value": value }; - }); - return baseSortBy_default(result2, function(object4, other) { - return compareMultiple_default(object4, other, orders); - }); -} -var baseOrderBy_default = baseOrderBy; - -// node_modules/lodash-es/orderBy.js -function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray_default(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? void 0 : orders; - if (!isArray_default(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy_default(collection, iteratees, orders); -} -var orderBy_default = orderBy; - -// node_modules/lodash-es/_createOver.js -function createOver(arrayFunc) { - return flatRest_default(function(iteratees) { - iteratees = arrayMap_default(iteratees, baseUnary_default(baseIteratee_default)); - return baseRest_default(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee2) { - return apply_default(iteratee2, thisArg, args); - }); - }); - }); -} -var createOver_default = createOver; - -// node_modules/lodash-es/over.js -var over = createOver_default(arrayMap_default); -var over_default = over; - -// node_modules/lodash-es/_castRest.js -var castRest = baseRest_default; -var castRest_default = castRest; - -// node_modules/lodash-es/overArgs.js -var nativeMin9 = Math.min; -var overArgs = castRest_default(function(func, transforms) { - transforms = transforms.length == 1 && isArray_default(transforms[0]) ? arrayMap_default(transforms[0], baseUnary_default(baseIteratee_default)) : arrayMap_default(baseFlatten_default(transforms, 1), baseUnary_default(baseIteratee_default)); - var funcsLength = transforms.length; - return baseRest_default(function(args) { - var index3 = -1, length2 = nativeMin9(args.length, funcsLength); - while (++index3 < length2) { - args[index3] = transforms[index3].call(this, args[index3]); - } - return apply_default(func, this, args); - }); -}); -var overArgs_default = overArgs; - -// node_modules/lodash-es/overEvery.js -var overEvery = createOver_default(arrayEvery_default); -var overEvery_default = overEvery; - -// node_modules/lodash-es/overSome.js -var overSome = createOver_default(arraySome_default); -var overSome_default = overSome; - -// node_modules/lodash-es/_baseRepeat.js -var MAX_SAFE_INTEGER4 = 9007199254740991; -var nativeFloor = Math.floor; -function baseRepeat(string3, n3) { - var result2 = ""; - if (!string3 || n3 < 1 || n3 > MAX_SAFE_INTEGER4) { - return result2; - } - do { - if (n3 % 2) { - result2 += string3; - } - n3 = nativeFloor(n3 / 2); - if (n3) { - string3 += string3; - } - } while (n3); - return result2; -} -var baseRepeat_default = baseRepeat; - -// node_modules/lodash-es/_asciiSize.js -var asciiSize = baseProperty_default("length"); -var asciiSize_default = asciiSize; - -// node_modules/lodash-es/_unicodeSize.js -var rsAstralRange4 = "\\ud800-\\udfff"; -var rsComboMarksRange5 = "\\u0300-\\u036f"; -var reComboHalfMarksRange5 = "\\ufe20-\\ufe2f"; -var rsComboSymbolsRange5 = "\\u20d0-\\u20ff"; -var rsComboRange5 = rsComboMarksRange5 + reComboHalfMarksRange5 + rsComboSymbolsRange5; -var rsVarRange4 = "\\ufe0e\\ufe0f"; -var rsAstral2 = "[" + rsAstralRange4 + "]"; -var rsCombo4 = "[" + rsComboRange5 + "]"; -var rsFitz3 = "\\ud83c[\\udffb-\\udfff]"; -var rsModifier3 = "(?:" + rsCombo4 + "|" + rsFitz3 + ")"; -var rsNonAstral3 = "[^" + rsAstralRange4 + "]"; -var rsRegional3 = "(?:\\ud83c[\\udde6-\\uddff]){2}"; -var rsSurrPair3 = "[\\ud800-\\udbff][\\udc00-\\udfff]"; -var rsZWJ4 = "\\u200d"; -var reOptMod3 = rsModifier3 + "?"; -var rsOptVar3 = "[" + rsVarRange4 + "]?"; -var rsOptJoin3 = "(?:" + rsZWJ4 + "(?:" + [rsNonAstral3, rsRegional3, rsSurrPair3].join("|") + ")" + rsOptVar3 + reOptMod3 + ")*"; -var rsSeq3 = rsOptVar3 + reOptMod3 + rsOptJoin3; -var rsSymbol2 = "(?:" + [rsNonAstral3 + rsCombo4 + "?", rsCombo4, rsRegional3, rsSurrPair3, rsAstral2].join("|") + ")"; -var reUnicode2 = RegExp(rsFitz3 + "(?=" + rsFitz3 + ")|" + rsSymbol2 + rsSeq3, "g"); -function unicodeSize(string3) { - var result2 = reUnicode2.lastIndex = 0; - while (reUnicode2.test(string3)) { - ++result2; - } - return result2; -} -var unicodeSize_default = unicodeSize; - -// node_modules/lodash-es/_stringSize.js -function stringSize(string3) { - return hasUnicode_default(string3) ? unicodeSize_default(string3) : asciiSize_default(string3); -} -var stringSize_default = stringSize; - -// node_modules/lodash-es/_createPadding.js -var nativeCeil2 = Math.ceil; -function createPadding(length2, chars) { - chars = chars === void 0 ? " " : baseToString_default(chars); - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat_default(chars, length2) : chars; - } - var result2 = baseRepeat_default(chars, nativeCeil2(length2 / stringSize_default(chars))); - return hasUnicode_default(chars) ? castSlice_default(stringToArray_default(result2), 0, length2).join("") : result2.slice(0, length2); -} -var createPadding_default = createPadding; - -// node_modules/lodash-es/pad.js -var nativeCeil3 = Math.ceil; -var nativeFloor2 = Math.floor; -function pad(string3, length2, chars) { - string3 = toString_default(string3); - length2 = toInteger_default(length2); - var strLength = length2 ? stringSize_default(string3) : 0; - if (!length2 || strLength >= length2) { - return string3; - } - var mid = (length2 - strLength) / 2; - return createPadding_default(nativeFloor2(mid), chars) + string3 + createPadding_default(nativeCeil3(mid), chars); -} -var pad_default = pad; - -// node_modules/lodash-es/padEnd.js -function padEnd(string3, length2, chars) { - string3 = toString_default(string3); - length2 = toInteger_default(length2); - var strLength = length2 ? stringSize_default(string3) : 0; - return length2 && strLength < length2 ? string3 + createPadding_default(length2 - strLength, chars) : string3; -} -var padEnd_default = padEnd; - -// node_modules/lodash-es/padStart.js -function padStart(string3, length2, chars) { - string3 = toString_default(string3); - length2 = toInteger_default(length2); - var strLength = length2 ? stringSize_default(string3) : 0; - return length2 && strLength < length2 ? createPadding_default(length2 - strLength, chars) + string3 : string3; -} -var padStart_default = padStart; - -// node_modules/lodash-es/parseInt.js -var reTrimStart2 = /^\s+/; -var nativeParseInt = root_default.parseInt; -function parseInt2(string3, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString_default(string3).replace(reTrimStart2, ""), radix || 0); -} -var parseInt_default = parseInt2; - -// node_modules/lodash-es/partial.js -var WRAP_PARTIAL_FLAG7 = 32; -var partial = baseRest_default(function(func, partials) { - var holders = replaceHolders_default(partials, getHolder_default(partial)); - return createWrap_default(func, WRAP_PARTIAL_FLAG7, void 0, partials, holders); -}); -partial.placeholder = {}; -var partial_default = partial; - -// node_modules/lodash-es/partialRight.js -var WRAP_PARTIAL_RIGHT_FLAG4 = 64; -var partialRight = baseRest_default(function(func, partials) { - var holders = replaceHolders_default(partials, getHolder_default(partialRight)); - return createWrap_default(func, WRAP_PARTIAL_RIGHT_FLAG4, void 0, partials, holders); -}); -partialRight.placeholder = {}; -var partialRight_default = partialRight; - -// node_modules/lodash-es/partition.js -var partition = createAggregator_default(function(result2, value, key2) { - result2[key2 ? 0 : 1].push(value); -}, function() { - return [[], []]; -}); -var partition_default = partition; - -// node_modules/lodash-es/_basePick.js -function basePick(object4, paths) { - return basePickBy_default(object4, paths, function(value, path2) { - return hasIn_default(object4, path2); - }); -} -var basePick_default = basePick; - -// node_modules/lodash-es/pick.js -var pick = flatRest_default(function(object4, paths) { - return object4 == null ? {} : basePick_default(object4, paths); -}); -var pick_default = pick; - -// node_modules/lodash-es/plant.js -function wrapperPlant(value) { - var result2, parent2 = this; - while (parent2 instanceof baseLodash_default) { - var clone3 = wrapperClone_default(parent2); - clone3.__index__ = 0; - clone3.__values__ = void 0; - if (result2) { - previous.__wrapped__ = clone3; - } else { - result2 = clone3; - } - var previous = clone3; - parent2 = parent2.__wrapped__; - } - previous.__wrapped__ = value; - return result2; -} -var plant_default = wrapperPlant; - -// node_modules/lodash-es/propertyOf.js -function propertyOf(object4) { - return function(path2) { - return object4 == null ? void 0 : baseGet_default(object4, path2); - }; -} -var propertyOf_default = propertyOf; - -// node_modules/lodash-es/_baseIndexOfWith.js -function baseIndexOfWith(array4, value, fromIndex, comparator) { - var index3 = fromIndex - 1, length2 = array4.length; - while (++index3 < length2) { - if (comparator(array4[index3], value)) { - return index3; - } - } - return -1; -} -var baseIndexOfWith_default = baseIndexOfWith; - -// node_modules/lodash-es/_basePullAll.js -var arrayProto3 = Array.prototype; -var splice2 = arrayProto3.splice; -function basePullAll(array4, values2, iteratee2, comparator) { - var indexOf2 = comparator ? baseIndexOfWith_default : baseIndexOf_default, index3 = -1, length2 = values2.length, seen = array4; - if (array4 === values2) { - values2 = copyArray_default(values2); - } - if (iteratee2) { - seen = arrayMap_default(array4, baseUnary_default(iteratee2)); - } - while (++index3 < length2) { - var fromIndex = 0, value = values2[index3], computed2 = iteratee2 ? iteratee2(value) : value; - while ((fromIndex = indexOf2(seen, computed2, fromIndex, comparator)) > -1) { - if (seen !== array4) { - splice2.call(seen, fromIndex, 1); - } - splice2.call(array4, fromIndex, 1); - } - } - return array4; -} -var basePullAll_default = basePullAll; - -// node_modules/lodash-es/pullAll.js -function pullAll(array4, values2) { - return array4 && array4.length && values2 && values2.length ? basePullAll_default(array4, values2) : array4; -} -var pullAll_default = pullAll; - -// node_modules/lodash-es/pull.js -var pull = baseRest_default(pullAll_default); -var pull_default = pull; - -// node_modules/lodash-es/pullAllBy.js -function pullAllBy(array4, values2, iteratee2) { - return array4 && array4.length && values2 && values2.length ? basePullAll_default(array4, values2, baseIteratee_default(iteratee2, 2)) : array4; -} -var pullAllBy_default = pullAllBy; - -// node_modules/lodash-es/pullAllWith.js -function pullAllWith(array4, values2, comparator) { - return array4 && array4.length && values2 && values2.length ? basePullAll_default(array4, values2, void 0, comparator) : array4; -} -var pullAllWith_default = pullAllWith; - -// node_modules/lodash-es/_basePullAt.js -var arrayProto4 = Array.prototype; -var splice3 = arrayProto4.splice; -function basePullAt(array4, indexes) { - var length2 = array4 ? indexes.length : 0, lastIndex = length2 - 1; - while (length2--) { - var index3 = indexes[length2]; - if (length2 == lastIndex || index3 !== previous) { - var previous = index3; - if (isIndex_default(index3)) { - splice3.call(array4, index3, 1); - } else { - baseUnset_default(array4, index3); - } - } - } - return array4; -} -var basePullAt_default = basePullAt; - -// node_modules/lodash-es/pullAt.js -var pullAt = flatRest_default(function(array4, indexes) { - var length2 = array4 == null ? 0 : array4.length, result2 = baseAt_default(array4, indexes); - basePullAt_default(array4, arrayMap_default(indexes, function(index3) { - return isIndex_default(index3, length2) ? +index3 : index3; - }).sort(compareAscending_default)); - return result2; -}); -var pullAt_default = pullAt; - -// node_modules/lodash-es/_baseRandom.js -var nativeFloor3 = Math.floor; -var nativeRandom = Math.random; -function baseRandom(lower2, upper) { - return lower2 + nativeFloor3(nativeRandom() * (upper - lower2 + 1)); -} -var baseRandom_default = baseRandom; - -// node_modules/lodash-es/random.js -var freeParseFloat = parseFloat; -var nativeMin10 = Math.min; -var nativeRandom2 = Math.random; -function random(lower2, upper, floating) { - if (floating && typeof floating != "boolean" && isIterateeCall_default(lower2, upper, floating)) { - upper = floating = void 0; - } - if (floating === void 0) { - if (typeof upper == "boolean") { - floating = upper; - upper = void 0; - } else if (typeof lower2 == "boolean") { - floating = lower2; - lower2 = void 0; - } - } - if (lower2 === void 0 && upper === void 0) { - lower2 = 0; - upper = 1; - } else { - lower2 = toFinite_default(lower2); - if (upper === void 0) { - upper = lower2; - lower2 = 0; - } else { - upper = toFinite_default(upper); - } - } - if (lower2 > upper) { - var temp = lower2; - lower2 = upper; - upper = temp; - } - if (floating || lower2 % 1 || upper % 1) { - var rand = nativeRandom2(); - return nativeMin10(lower2 + rand * (upper - lower2 + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); - } - return baseRandom_default(lower2, upper); -} -var random_default = random; - -// node_modules/lodash-es/_baseRange.js -var nativeCeil4 = Math.ceil; -var nativeMax13 = Math.max; -function baseRange(start, end, step, fromRight) { - var index3 = -1, length2 = nativeMax13(nativeCeil4((end - start) / (step || 1)), 0), result2 = Array(length2); - while (length2--) { - result2[fromRight ? length2 : ++index3] = start; - start += step; - } - return result2; -} -var baseRange_default = baseRange; - -// node_modules/lodash-es/_createRange.js -function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != "number" && isIterateeCall_default(start, end, step)) { - end = step = void 0; - } - start = toFinite_default(start); - if (end === void 0) { - end = start; - start = 0; - } else { - end = toFinite_default(end); - } - step = step === void 0 ? start < end ? 1 : -1 : toFinite_default(step); - return baseRange_default(start, end, step, fromRight); - }; -} -var createRange_default = createRange; - -// node_modules/lodash-es/range.js -var range = createRange_default(); -var range_default = range; - -// node_modules/lodash-es/rangeRight.js -var rangeRight = createRange_default(true); -var rangeRight_default = rangeRight; - -// node_modules/lodash-es/rearg.js -var WRAP_REARG_FLAG4 = 256; -var rearg = flatRest_default(function(func, indexes) { - return createWrap_default(func, WRAP_REARG_FLAG4, void 0, void 0, void 0, indexes); -}); -var rearg_default = rearg; - -// node_modules/lodash-es/_baseReduce.js -function baseReduce(collection, iteratee2, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index3, collection2) { - accumulator = initAccum ? (initAccum = false, value) : iteratee2(accumulator, value, index3, collection2); - }); - return accumulator; -} -var baseReduce_default = baseReduce; - -// node_modules/lodash-es/reduce.js -function reduce(collection, iteratee2, accumulator) { - var func = isArray_default(collection) ? arrayReduce_default : baseReduce_default, initAccum = arguments.length < 3; - return func(collection, baseIteratee_default(iteratee2, 4), accumulator, initAccum, baseEach_default); -} -var reduce_default = reduce; - -// node_modules/lodash-es/_arrayReduceRight.js -function arrayReduceRight(array4, iteratee2, accumulator, initAccum) { - var length2 = array4 == null ? 0 : array4.length; - if (initAccum && length2) { - accumulator = array4[--length2]; - } - while (length2--) { - accumulator = iteratee2(accumulator, array4[length2], length2, array4); - } - return accumulator; -} -var arrayReduceRight_default = arrayReduceRight; - -// node_modules/lodash-es/reduceRight.js -function reduceRight(collection, iteratee2, accumulator) { - var func = isArray_default(collection) ? arrayReduceRight_default : baseReduce_default, initAccum = arguments.length < 3; - return func(collection, baseIteratee_default(iteratee2, 4), accumulator, initAccum, baseEachRight_default); -} -var reduceRight_default = reduceRight; - -// node_modules/lodash-es/reject.js -function reject(collection, predicate) { - var func = isArray_default(collection) ? arrayFilter_default : baseFilter_default; - return func(collection, negate_default(baseIteratee_default(predicate, 3))); -} -var reject_default = reject; - -// node_modules/lodash-es/remove.js -function remove(array4, predicate) { - var result2 = []; - if (!(array4 && array4.length)) { - return result2; - } - var index3 = -1, indexes = [], length2 = array4.length; - predicate = baseIteratee_default(predicate, 3); - while (++index3 < length2) { - var value = array4[index3]; - if (predicate(value, index3, array4)) { - result2.push(value); - indexes.push(index3); - } - } - basePullAt_default(array4, indexes); - return result2; -} -var remove_default = remove; - -// node_modules/lodash-es/repeat.js -function repeat(string3, n3, guard) { - if (guard ? isIterateeCall_default(string3, n3, guard) : n3 === void 0) { - n3 = 1; - } else { - n3 = toInteger_default(n3); - } - return baseRepeat_default(toString_default(string3), n3); -} -var repeat_default = repeat; - -// node_modules/lodash-es/replace.js -function replace2() { - var args = arguments, string3 = toString_default(args[0]); - return args.length < 3 ? string3 : string3.replace(args[1], args[2]); -} -var replace_default = replace2; - -// node_modules/lodash-es/rest.js -var FUNC_ERROR_TEXT10 = "Expected a function"; -function rest(func, start) { - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT10); - } - start = start === void 0 ? start : toInteger_default(start); - return baseRest_default(func, start); -} -var rest_default = rest; - -// node_modules/lodash-es/result.js -function result(object4, path2, defaultValue) { - path2 = castPath_default(path2, object4); - var index3 = -1, length2 = path2.length; - if (!length2) { - length2 = 1; - object4 = void 0; - } - while (++index3 < length2) { - var value = object4 == null ? void 0 : object4[toKey_default(path2[index3])]; - if (value === void 0) { - index3 = length2; - value = defaultValue; - } - object4 = isFunction_default(value) ? value.call(object4) : value; - } - return object4; -} -var result_default = result; - -// node_modules/lodash-es/reverse.js -var arrayProto5 = Array.prototype; -var nativeReverse = arrayProto5.reverse; -function reverse(array4) { - return array4 == null ? array4 : nativeReverse.call(array4); -} -var reverse_default = reverse; - -// node_modules/lodash-es/round.js -var round = createRound_default("round"); -var round_default = round; - -// node_modules/lodash-es/_arraySample.js -function arraySample(array4) { - var length2 = array4.length; - return length2 ? array4[baseRandom_default(0, length2 - 1)] : void 0; -} -var arraySample_default = arraySample; - -// node_modules/lodash-es/_baseSample.js -function baseSample(collection) { - return arraySample_default(values_default(collection)); -} -var baseSample_default = baseSample; - -// node_modules/lodash-es/sample.js -function sample(collection) { - var func = isArray_default(collection) ? arraySample_default : baseSample_default; - return func(collection); -} -var sample_default = sample; - -// node_modules/lodash-es/_shuffleSelf.js -function shuffleSelf(array4, size2) { - var index3 = -1, length2 = array4.length, lastIndex = length2 - 1; - size2 = size2 === void 0 ? length2 : size2; - while (++index3 < size2) { - var rand = baseRandom_default(index3, lastIndex), value = array4[rand]; - array4[rand] = array4[index3]; - array4[index3] = value; - } - array4.length = size2; - return array4; -} -var shuffleSelf_default = shuffleSelf; - -// node_modules/lodash-es/_arraySampleSize.js -function arraySampleSize(array4, n3) { - return shuffleSelf_default(copyArray_default(array4), baseClamp_default(n3, 0, array4.length)); -} -var arraySampleSize_default = arraySampleSize; - -// node_modules/lodash-es/_baseSampleSize.js -function baseSampleSize(collection, n3) { - var array4 = values_default(collection); - return shuffleSelf_default(array4, baseClamp_default(n3, 0, array4.length)); -} -var baseSampleSize_default = baseSampleSize; - -// node_modules/lodash-es/sampleSize.js -function sampleSize(collection, n3, guard) { - if (guard ? isIterateeCall_default(collection, n3, guard) : n3 === void 0) { - n3 = 1; - } else { - n3 = toInteger_default(n3); - } - var func = isArray_default(collection) ? arraySampleSize_default : baseSampleSize_default; - return func(collection, n3); -} -var sampleSize_default = sampleSize; - -// node_modules/lodash-es/set.js -function set(object4, path2, value) { - return object4 == null ? object4 : baseSet_default(object4, path2, value); -} -var set_default = set; - -// node_modules/lodash-es/setWith.js -function setWith(object4, path2, value, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - return object4 == null ? object4 : baseSet_default(object4, path2, value, customizer); -} -var setWith_default = setWith; - -// node_modules/lodash-es/_arrayShuffle.js -function arrayShuffle(array4) { - return shuffleSelf_default(copyArray_default(array4)); -} -var arrayShuffle_default = arrayShuffle; - -// node_modules/lodash-es/_baseShuffle.js -function baseShuffle(collection) { - return shuffleSelf_default(values_default(collection)); -} -var baseShuffle_default = baseShuffle; - -// node_modules/lodash-es/shuffle.js -function shuffle(collection) { - var func = isArray_default(collection) ? arrayShuffle_default : baseShuffle_default; - return func(collection); -} -var shuffle_default = shuffle; - -// node_modules/lodash-es/size.js -var mapTag10 = "[object Map]"; -var setTag10 = "[object Set]"; -function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike_default(collection)) { - return isString_default(collection) ? stringSize_default(collection) : collection.length; - } - var tag = getTag_default(collection); - if (tag == mapTag10 || tag == setTag10) { - return collection.size; - } - return baseKeys_default(collection).length; -} -var size_default = size; - -// node_modules/lodash-es/slice.js -function slice2(array4, start, end) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - if (end && typeof end != "number" && isIterateeCall_default(array4, start, end)) { - start = 0; - end = length2; - } else { - start = start == null ? 0 : toInteger_default(start); - end = end === void 0 ? length2 : toInteger_default(end); - } - return baseSlice_default(array4, start, end); -} -var slice_default = slice2; - -// node_modules/lodash-es/snakeCase.js -var snakeCase = createCompounder_default(function(result2, word, index3) { - return result2 + (index3 ? "_" : "") + word.toLowerCase(); -}); -var snakeCase_default = snakeCase; - -// node_modules/lodash-es/_baseSome.js -function baseSome(collection, predicate) { - var result2; - baseEach_default(collection, function(value, index3, collection2) { - result2 = predicate(value, index3, collection2); - return !result2; - }); - return !!result2; -} -var baseSome_default = baseSome; - -// node_modules/lodash-es/some.js -function some(collection, predicate, guard) { - var func = isArray_default(collection) ? arraySome_default : baseSome_default; - if (guard && isIterateeCall_default(collection, predicate, guard)) { - predicate = void 0; - } - return func(collection, baseIteratee_default(predicate, 3)); -} -var some_default = some; - -// node_modules/lodash-es/sortBy.js -var sortBy = baseRest_default(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length2 = iteratees.length; - if (length2 > 1 && isIterateeCall_default(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length2 > 2 && isIterateeCall_default(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy_default(collection, baseFlatten_default(iteratees, 1), []); -}); -var sortBy_default = sortBy; - -// node_modules/lodash-es/_baseSortedIndexBy.js -var MAX_ARRAY_LENGTH3 = 4294967295; -var MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH3 - 1; -var nativeFloor4 = Math.floor; -var nativeMin11 = Math.min; -function baseSortedIndexBy(array4, value, iteratee2, retHighest) { - var low = 0, high = array4 == null ? 0 : array4.length; - if (high === 0) { - return 0; - } - value = iteratee2(value); - var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol_default(value), valIsUndefined = value === void 0; - while (low < high) { - var mid = nativeFloor4((low + high) / 2), computed2 = iteratee2(array4[mid]), othIsDefined = computed2 !== void 0, othIsNull = computed2 === null, othIsReflexive = computed2 === computed2, othIsSymbol = isSymbol_default(computed2); - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? computed2 <= value : computed2 < value; - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin11(high, MAX_ARRAY_INDEX); -} -var baseSortedIndexBy_default = baseSortedIndexBy; - -// node_modules/lodash-es/_baseSortedIndex.js -var MAX_ARRAY_LENGTH4 = 4294967295; -var HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH4 >>> 1; -function baseSortedIndex(array4, value, retHighest) { - var low = 0, high = array4 == null ? low : array4.length; - if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = low + high >>> 1, computed2 = array4[mid]; - if (computed2 !== null && !isSymbol_default(computed2) && (retHighest ? computed2 <= value : computed2 < value)) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy_default(array4, value, identity_default, retHighest); -} -var baseSortedIndex_default = baseSortedIndex; - -// node_modules/lodash-es/sortedIndex.js -function sortedIndex(array4, value) { - return baseSortedIndex_default(array4, value); -} -var sortedIndex_default = sortedIndex; - -// node_modules/lodash-es/sortedIndexBy.js -function sortedIndexBy(array4, value, iteratee2) { - return baseSortedIndexBy_default(array4, value, baseIteratee_default(iteratee2, 2)); -} -var sortedIndexBy_default = sortedIndexBy; - -// node_modules/lodash-es/sortedIndexOf.js -function sortedIndexOf(array4, value) { - var length2 = array4 == null ? 0 : array4.length; - if (length2) { - var index3 = baseSortedIndex_default(array4, value); - if (index3 < length2 && eq_default(array4[index3], value)) { - return index3; - } - } - return -1; -} -var sortedIndexOf_default = sortedIndexOf; - -// node_modules/lodash-es/sortedLastIndex.js -function sortedLastIndex(array4, value) { - return baseSortedIndex_default(array4, value, true); -} -var sortedLastIndex_default = sortedLastIndex; - -// node_modules/lodash-es/sortedLastIndexBy.js -function sortedLastIndexBy(array4, value, iteratee2) { - return baseSortedIndexBy_default(array4, value, baseIteratee_default(iteratee2, 2), true); -} -var sortedLastIndexBy_default = sortedLastIndexBy; - -// node_modules/lodash-es/sortedLastIndexOf.js -function sortedLastIndexOf(array4, value) { - var length2 = array4 == null ? 0 : array4.length; - if (length2) { - var index3 = baseSortedIndex_default(array4, value, true) - 1; - if (eq_default(array4[index3], value)) { - return index3; - } - } - return -1; -} -var sortedLastIndexOf_default = sortedLastIndexOf; - -// node_modules/lodash-es/_baseSortedUniq.js -function baseSortedUniq(array4, iteratee2) { - var index3 = -1, length2 = array4.length, resIndex = 0, result2 = []; - while (++index3 < length2) { - var value = array4[index3], computed2 = iteratee2 ? iteratee2(value) : value; - if (!index3 || !eq_default(computed2, seen)) { - var seen = computed2; - result2[resIndex++] = value === 0 ? 0 : value; - } - } - return result2; -} -var baseSortedUniq_default = baseSortedUniq; - -// node_modules/lodash-es/sortedUniq.js -function sortedUniq(array4) { - return array4 && array4.length ? baseSortedUniq_default(array4) : []; -} -var sortedUniq_default = sortedUniq; - -// node_modules/lodash-es/sortedUniqBy.js -function sortedUniqBy(array4, iteratee2) { - return array4 && array4.length ? baseSortedUniq_default(array4, baseIteratee_default(iteratee2, 2)) : []; -} -var sortedUniqBy_default = sortedUniqBy; - -// node_modules/lodash-es/split.js -var MAX_ARRAY_LENGTH5 = 4294967295; -function split(string3, separator, limit) { - if (limit && typeof limit != "number" && isIterateeCall_default(string3, separator, limit)) { - separator = limit = void 0; - } - limit = limit === void 0 ? MAX_ARRAY_LENGTH5 : limit >>> 0; - if (!limit) { - return []; - } - string3 = toString_default(string3); - if (string3 && (typeof separator == "string" || separator != null && !isRegExp_default(separator))) { - separator = baseToString_default(separator); - if (!separator && hasUnicode_default(string3)) { - return castSlice_default(stringToArray_default(string3), 0, limit); - } - } - return string3.split(separator, limit); -} -var split_default = split; - -// node_modules/lodash-es/spread.js -var FUNC_ERROR_TEXT11 = "Expected a function"; -var nativeMax14 = Math.max; -function spread(func, start) { - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT11); - } - start = start == null ? 0 : nativeMax14(toInteger_default(start), 0); - return baseRest_default(function(args) { - var array4 = args[start], otherArgs = castSlice_default(args, 0, start); - if (array4) { - arrayPush_default(otherArgs, array4); - } - return apply_default(func, this, otherArgs); - }); -} -var spread_default = spread; - -// node_modules/lodash-es/startCase.js -var startCase = createCompounder_default(function(result2, word, index3) { - return result2 + (index3 ? " " : "") + upperFirst_default(word); -}); -var startCase_default = startCase; - -// node_modules/lodash-es/startsWith.js -function startsWith(string3, target, position2) { - string3 = toString_default(string3); - position2 = position2 == null ? 0 : baseClamp_default(toInteger_default(position2), 0, string3.length); - target = baseToString_default(target); - return string3.slice(position2, position2 + target.length) == target; -} -var startsWith_default = startsWith; - -// node_modules/lodash-es/stubObject.js -function stubObject() { - return {}; -} -var stubObject_default = stubObject; - -// node_modules/lodash-es/stubString.js -function stubString() { - return ""; -} -var stubString_default = stubString; - -// node_modules/lodash-es/stubTrue.js -function stubTrue() { - return true; -} -var stubTrue_default = stubTrue; - -// node_modules/lodash-es/subtract.js -var subtract = createMathOperation_default(function(minuend, subtrahend) { - return minuend - subtrahend; -}, 0); -var subtract_default = subtract; - -// node_modules/lodash-es/sum.js -function sum(array4) { - return array4 && array4.length ? baseSum_default(array4, identity_default) : 0; -} -var sum_default = sum; - -// node_modules/lodash-es/sumBy.js -function sumBy(array4, iteratee2) { - return array4 && array4.length ? baseSum_default(array4, baseIteratee_default(iteratee2, 2)) : 0; -} -var sumBy_default = sumBy; - -// node_modules/lodash-es/tail.js -function tail(array4) { - var length2 = array4 == null ? 0 : array4.length; - return length2 ? baseSlice_default(array4, 1, length2) : []; -} -var tail_default = tail; - -// node_modules/lodash-es/take.js -function take(array4, n3, guard) { - if (!(array4 && array4.length)) { - return []; - } - n3 = guard || n3 === void 0 ? 1 : toInteger_default(n3); - return baseSlice_default(array4, 0, n3 < 0 ? 0 : n3); -} -var take_default = take; - -// node_modules/lodash-es/takeRight.js -function takeRight(array4, n3, guard) { - var length2 = array4 == null ? 0 : array4.length; - if (!length2) { - return []; - } - n3 = guard || n3 === void 0 ? 1 : toInteger_default(n3); - n3 = length2 - n3; - return baseSlice_default(array4, n3 < 0 ? 0 : n3, length2); -} -var takeRight_default = takeRight; - -// node_modules/lodash-es/takeRightWhile.js -function takeRightWhile(array4, predicate) { - return array4 && array4.length ? baseWhile_default(array4, baseIteratee_default(predicate, 3), false, true) : []; -} -var takeRightWhile_default = takeRightWhile; - -// node_modules/lodash-es/takeWhile.js -function takeWhile(array4, predicate) { - return array4 && array4.length ? baseWhile_default(array4, baseIteratee_default(predicate, 3)) : []; -} -var takeWhile_default = takeWhile; - -// node_modules/lodash-es/tap.js -function tap(value, interceptor) { - interceptor(value); - return value; -} -var tap_default = tap; - -// node_modules/lodash-es/_customDefaultsAssignIn.js -var objectProto27 = Object.prototype; -var hasOwnProperty24 = objectProto27.hasOwnProperty; -function customDefaultsAssignIn(objValue, srcValue, key2, object4) { - if (objValue === void 0 || eq_default(objValue, objectProto27[key2]) && !hasOwnProperty24.call(object4, key2)) { - return srcValue; - } - return objValue; -} -var customDefaultsAssignIn_default = customDefaultsAssignIn; - -// node_modules/lodash-es/_escapeStringChar.js -var stringEscapes = { - "\\": "\\", - "'": "'", - "\n": "n", - "\r": "r", - "\u2028": "u2028", - "\u2029": "u2029" -}; -function escapeStringChar(chr) { - return "\\" + stringEscapes[chr]; -} -var escapeStringChar_default = escapeStringChar; - -// node_modules/lodash-es/_reInterpolate.js -var reInterpolate = /<%=([\s\S]+?)%>/g; -var reInterpolate_default = reInterpolate; - -// node_modules/lodash-es/_reEscape.js -var reEscape = /<%-([\s\S]+?)%>/g; -var reEscape_default = reEscape; - -// node_modules/lodash-es/_reEvaluate.js -var reEvaluate = /<%([\s\S]+?)%>/g; -var reEvaluate_default = reEvaluate; - -// node_modules/lodash-es/templateSettings.js -var templateSettings = { - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "escape": reEscape_default, - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "evaluate": reEvaluate_default, - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "interpolate": reInterpolate_default, - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - "variable": "", - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - "imports": { - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - "_": { "escape": escape_default } - } -}; -var templateSettings_default = templateSettings; - -// node_modules/lodash-es/template.js -var INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; -var reEmptyStringLeading = /\b__p \+= '';/g; -var reEmptyStringMiddle = /\b(__p \+=) '' \+/g; -var reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; -var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; -var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; -var reNoMatch = /($^)/; -var reUnescapedString = /['\n\r\u2028\u2029\\]/g; -var objectProto28 = Object.prototype; -var hasOwnProperty25 = objectProto28.hasOwnProperty; -function template(string3, options, guard) { - var settings = templateSettings_default.imports._.templateSettings || templateSettings_default; - if (guard && isIterateeCall_default(string3, options, guard)) { - options = void 0; - } - string3 = toString_default(string3); - options = assignInWith_default({}, options, settings, customDefaultsAssignIn_default); - var imports = assignInWith_default({}, options.imports, settings.imports, customDefaultsAssignIn_default), importsKeys = keys_default(imports), importsValues = baseValues_default(imports, importsKeys); - var isEscaping, isEvaluating, index3 = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; - var reDelimiters = RegExp( - (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate_default ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", - "g" - ); - var sourceURL = hasOwnProperty25.call(options, "sourceURL") ? "//# sourceURL=" + (options.sourceURL + "").replace(/\s/g, " ") + "\n" : ""; - string3.replace(reDelimiters, function(match3, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset4) { - interpolateValue || (interpolateValue = esTemplateValue); - source += string3.slice(index3, offset4).replace(reUnescapedString, escapeStringChar_default); - if (escapeValue) { - isEscaping = true; - source += "' +\n__e(" + escapeValue + ") +\n'"; - } - if (evaluateValue) { - isEvaluating = true; - source += "';\n" + evaluateValue + ";\n__p += '"; - } - if (interpolateValue) { - source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; - } - index3 = offset4 + match3.length; - return match3; - }); - source += "';\n"; - var variable = hasOwnProperty25.call(options, "variable") && options.variable; - if (!variable) { - source = "with (obj) {\n" + source + "\n}\n"; - } else if (reForbiddenIdentifierChars.test(variable)) { - throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); - } - source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); - source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; - var result2 = attempt_default(function() { - return Function(importsKeys, sourceURL + "return " + source).apply(void 0, importsValues); - }); - result2.source = source; - if (isError_default(result2)) { - throw result2; - } - return result2; -} -var template_default = template; - -// node_modules/lodash-es/throttle.js -var FUNC_ERROR_TEXT12 = "Expected a function"; -function throttle2(func, wait, options) { - var leading = true, trailing = true; - if (typeof func != "function") { - throw new TypeError(FUNC_ERROR_TEXT12); - } - if (isObject_default(options)) { - leading = "leading" in options ? !!options.leading : leading; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - return debounce_default(func, wait, { - "leading": leading, - "maxWait": wait, - "trailing": trailing - }); -} -var throttle_default = throttle2; - -// node_modules/lodash-es/thru.js -function thru(value, interceptor) { - return interceptor(value); -} -var thru_default = thru; - -// node_modules/lodash-es/times.js -var MAX_SAFE_INTEGER5 = 9007199254740991; -var MAX_ARRAY_LENGTH6 = 4294967295; -var nativeMin12 = Math.min; -function times(n3, iteratee2) { - n3 = toInteger_default(n3); - if (n3 < 1 || n3 > MAX_SAFE_INTEGER5) { - return []; - } - var index3 = MAX_ARRAY_LENGTH6, length2 = nativeMin12(n3, MAX_ARRAY_LENGTH6); - iteratee2 = castFunction_default(iteratee2); - n3 -= MAX_ARRAY_LENGTH6; - var result2 = baseTimes_default(length2, iteratee2); - while (++index3 < n3) { - iteratee2(index3); - } - return result2; -} -var times_default = times; - -// node_modules/lodash-es/toIterator.js -function wrapperToIterator() { - return this; -} -var toIterator_default = wrapperToIterator; - -// node_modules/lodash-es/_baseWrapperValue.js -function baseWrapperValue(value, actions) { - var result2 = value; - if (result2 instanceof LazyWrapper_default) { - result2 = result2.value(); - } - return arrayReduce_default(actions, function(result3, action) { - return action.func.apply(action.thisArg, arrayPush_default([result3], action.args)); - }, result2); -} -var baseWrapperValue_default = baseWrapperValue; - -// node_modules/lodash-es/wrapperValue.js -function wrapperValue() { - return baseWrapperValue_default(this.__wrapped__, this.__actions__); -} -var wrapperValue_default = wrapperValue; - -// node_modules/lodash-es/toLower.js -function toLower(value) { - return toString_default(value).toLowerCase(); -} -var toLower_default = toLower; - -// node_modules/lodash-es/toPath.js -function toPath(value) { - if (isArray_default(value)) { - return arrayMap_default(value, toKey_default); - } - return isSymbol_default(value) ? [value] : copyArray_default(stringToPath_default(toString_default(value))); -} -var toPath_default = toPath; - -// node_modules/lodash-es/toSafeInteger.js -var MAX_SAFE_INTEGER6 = 9007199254740991; -function toSafeInteger(value) { - return value ? baseClamp_default(toInteger_default(value), -MAX_SAFE_INTEGER6, MAX_SAFE_INTEGER6) : value === 0 ? value : 0; -} -var toSafeInteger_default = toSafeInteger; - -// node_modules/lodash-es/toUpper.js -function toUpper(value) { - return toString_default(value).toUpperCase(); -} -var toUpper_default = toUpper; - -// node_modules/lodash-es/transform.js -function transform3(object4, iteratee2, accumulator) { - var isArr = isArray_default(object4), isArrLike = isArr || isBuffer_default(object4) || isTypedArray_default(object4); - iteratee2 = baseIteratee_default(iteratee2, 4); - if (accumulator == null) { - var Ctor = object4 && object4.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor() : []; - } else if (isObject_default(object4)) { - accumulator = isFunction_default(Ctor) ? baseCreate_default(getPrototype_default(object4)) : {}; - } else { - accumulator = {}; - } - } - (isArrLike ? arrayEach_default : baseForOwn_default)(object4, function(value, index3, object5) { - return iteratee2(accumulator, value, index3, object5); - }); - return accumulator; -} -var transform_default = transform3; - -// node_modules/lodash-es/_charsEndIndex.js -function charsEndIndex(strSymbols, chrSymbols) { - var index3 = strSymbols.length; - while (index3-- && baseIndexOf_default(chrSymbols, strSymbols[index3], 0) > -1) { - } - return index3; -} -var charsEndIndex_default = charsEndIndex; - -// node_modules/lodash-es/_charsStartIndex.js -function charsStartIndex(strSymbols, chrSymbols) { - var index3 = -1, length2 = strSymbols.length; - while (++index3 < length2 && baseIndexOf_default(chrSymbols, strSymbols[index3], 0) > -1) { - } - return index3; -} -var charsStartIndex_default = charsStartIndex; - -// node_modules/lodash-es/trim.js -function trim2(string3, chars, guard) { - string3 = toString_default(string3); - if (string3 && (guard || chars === void 0)) { - return baseTrim_default(string3); - } - if (!string3 || !(chars = baseToString_default(chars))) { - return string3; - } - var strSymbols = stringToArray_default(string3), chrSymbols = stringToArray_default(chars), start = charsStartIndex_default(strSymbols, chrSymbols), end = charsEndIndex_default(strSymbols, chrSymbols) + 1; - return castSlice_default(strSymbols, start, end).join(""); -} -var trim_default = trim2; - -// node_modules/lodash-es/trimEnd.js -function trimEnd(string3, chars, guard) { - string3 = toString_default(string3); - if (string3 && (guard || chars === void 0)) { - return string3.slice(0, trimmedEndIndex_default(string3) + 1); - } - if (!string3 || !(chars = baseToString_default(chars))) { - return string3; - } - var strSymbols = stringToArray_default(string3), end = charsEndIndex_default(strSymbols, stringToArray_default(chars)) + 1; - return castSlice_default(strSymbols, 0, end).join(""); -} -var trimEnd_default = trimEnd; - -// node_modules/lodash-es/trimStart.js -var reTrimStart3 = /^\s+/; -function trimStart(string3, chars, guard) { - string3 = toString_default(string3); - if (string3 && (guard || chars === void 0)) { - return string3.replace(reTrimStart3, ""); - } - if (!string3 || !(chars = baseToString_default(chars))) { - return string3; - } - var strSymbols = stringToArray_default(string3), start = charsStartIndex_default(strSymbols, stringToArray_default(chars)); - return castSlice_default(strSymbols, start).join(""); -} -var trimStart_default = trimStart; - -// node_modules/lodash-es/truncate.js -var DEFAULT_TRUNC_LENGTH = 30; -var DEFAULT_TRUNC_OMISSION = "..."; -var reFlags2 = /\w*$/; -function truncate(string3, options) { - var length2 = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; - if (isObject_default(options)) { - var separator = "separator" in options ? options.separator : separator; - length2 = "length" in options ? toInteger_default(options.length) : length2; - omission = "omission" in options ? baseToString_default(options.omission) : omission; - } - string3 = toString_default(string3); - var strLength = string3.length; - if (hasUnicode_default(string3)) { - var strSymbols = stringToArray_default(string3); - strLength = strSymbols.length; - } - if (length2 >= strLength) { - return string3; - } - var end = length2 - stringSize_default(omission); - if (end < 1) { - return omission; - } - var result2 = strSymbols ? castSlice_default(strSymbols, 0, end).join("") : string3.slice(0, end); - if (separator === void 0) { - return result2 + omission; - } - if (strSymbols) { - end += result2.length - end; - } - if (isRegExp_default(separator)) { - if (string3.slice(end).search(separator)) { - var match3, substring = result2; - if (!separator.global) { - separator = RegExp(separator.source, toString_default(reFlags2.exec(separator)) + "g"); - } - separator.lastIndex = 0; - while (match3 = separator.exec(substring)) { - var newEnd = match3.index; - } - result2 = result2.slice(0, newEnd === void 0 ? end : newEnd); - } - } else if (string3.indexOf(baseToString_default(separator), end) != end) { - var index3 = result2.lastIndexOf(separator); - if (index3 > -1) { - result2 = result2.slice(0, index3); - } - } - return result2 + omission; -} -var truncate_default = truncate; - -// node_modules/lodash-es/unary.js -function unary(func) { - return ary_default(func, 1); -} -var unary_default = unary; - -// node_modules/lodash-es/_unescapeHtmlChar.js -var htmlUnescapes = { - "&": "&", - "<": "<", - ">": ">", - """: '"', - "'": "'" -}; -var unescapeHtmlChar = basePropertyOf_default(htmlUnescapes); -var unescapeHtmlChar_default = unescapeHtmlChar; - -// node_modules/lodash-es/unescape.js -var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g; -var reHasEscapedHtml = RegExp(reEscapedHtml.source); -function unescape(string3) { - string3 = toString_default(string3); - return string3 && reHasEscapedHtml.test(string3) ? string3.replace(reEscapedHtml, unescapeHtmlChar_default) : string3; -} -var unescape_default = unescape; - -// node_modules/lodash-es/_createSet.js -var INFINITY6 = 1 / 0; -var createSet = !(Set_default && 1 / setToArray_default(new Set_default([, -0]))[1] == INFINITY6) ? noop_default : function(values2) { - return new Set_default(values2); -}; -var createSet_default = createSet; - -// node_modules/lodash-es/_baseUniq.js -var LARGE_ARRAY_SIZE3 = 200; -function baseUniq(array4, iteratee2, comparator) { - var index3 = -1, includes3 = arrayIncludes_default, length2 = array4.length, isCommon = true, result2 = [], seen = result2; - if (comparator) { - isCommon = false; - includes3 = arrayIncludesWith_default; - } else if (length2 >= LARGE_ARRAY_SIZE3) { - var set3 = iteratee2 ? null : createSet_default(array4); - if (set3) { - return setToArray_default(set3); - } - isCommon = false; - includes3 = cacheHas_default; - seen = new SetCache_default(); - } else { - seen = iteratee2 ? [] : result2; - } - outer: - while (++index3 < length2) { - var value = array4[index3], computed2 = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed2 === computed2) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed2) { - continue outer; - } - } - if (iteratee2) { - seen.push(computed2); - } - result2.push(value); - } else if (!includes3(seen, computed2, comparator)) { - if (seen !== result2) { - seen.push(computed2); - } - result2.push(value); - } - } - return result2; -} -var baseUniq_default = baseUniq; - -// node_modules/lodash-es/union.js -var union = baseRest_default(function(arrays) { - return baseUniq_default(baseFlatten_default(arrays, 1, isArrayLikeObject_default, true)); -}); -var union_default = union; - -// node_modules/lodash-es/unionBy.js -var unionBy = baseRest_default(function(arrays) { - var iteratee2 = last_default(arrays); - if (isArrayLikeObject_default(iteratee2)) { - iteratee2 = void 0; - } - return baseUniq_default(baseFlatten_default(arrays, 1, isArrayLikeObject_default, true), baseIteratee_default(iteratee2, 2)); -}); -var unionBy_default = unionBy; - -// node_modules/lodash-es/unionWith.js -var unionWith = baseRest_default(function(arrays) { - var comparator = last_default(arrays); - comparator = typeof comparator == "function" ? comparator : void 0; - return baseUniq_default(baseFlatten_default(arrays, 1, isArrayLikeObject_default, true), void 0, comparator); -}); -var unionWith_default = unionWith; - -// node_modules/lodash-es/uniq.js -function uniq(array4) { - return array4 && array4.length ? baseUniq_default(array4) : []; -} -var uniq_default = uniq; - -// node_modules/lodash-es/uniqBy.js -function uniqBy(array4, iteratee2) { - return array4 && array4.length ? baseUniq_default(array4, baseIteratee_default(iteratee2, 2)) : []; -} -var uniqBy_default = uniqBy; - -// node_modules/lodash-es/uniqWith.js -function uniqWith(array4, comparator) { - comparator = typeof comparator == "function" ? comparator : void 0; - return array4 && array4.length ? baseUniq_default(array4, void 0, comparator) : []; -} -var uniqWith_default = uniqWith; - -// node_modules/lodash-es/uniqueId.js -var idCounter = 0; -function uniqueId(prefix2) { - var id = ++idCounter; - return toString_default(prefix2) + id; -} -var uniqueId_default = uniqueId; - -// node_modules/lodash-es/unset.js -function unset(object4, path2) { - return object4 == null ? true : baseUnset_default(object4, path2); -} -var unset_default = unset; - -// node_modules/lodash-es/unzip.js -var nativeMax15 = Math.max; -function unzip(array4) { - if (!(array4 && array4.length)) { - return []; - } - var length2 = 0; - array4 = arrayFilter_default(array4, function(group) { - if (isArrayLikeObject_default(group)) { - length2 = nativeMax15(group.length, length2); - return true; - } - }); - return baseTimes_default(length2, function(index3) { - return arrayMap_default(array4, baseProperty_default(index3)); - }); -} -var unzip_default = unzip; - -// node_modules/lodash-es/unzipWith.js -function unzipWith(array4, iteratee2) { - if (!(array4 && array4.length)) { - return []; - } - var result2 = unzip_default(array4); - if (iteratee2 == null) { - return result2; - } - return arrayMap_default(result2, function(group) { - return apply_default(iteratee2, void 0, group); - }); -} -var unzipWith_default = unzipWith; - -// node_modules/lodash-es/_baseUpdate.js -function baseUpdate(object4, path2, updater, customizer) { - return baseSet_default(object4, path2, updater(baseGet_default(object4, path2)), customizer); -} -var baseUpdate_default = baseUpdate; - -// node_modules/lodash-es/update.js -function update(object4, path2, updater) { - return object4 == null ? object4 : baseUpdate_default(object4, path2, castFunction_default(updater)); -} -var update_default = update; - -// node_modules/lodash-es/updateWith.js -function updateWith(object4, path2, updater, customizer) { - customizer = typeof customizer == "function" ? customizer : void 0; - return object4 == null ? object4 : baseUpdate_default(object4, path2, castFunction_default(updater), customizer); -} -var updateWith_default = updateWith; - -// node_modules/lodash-es/upperCase.js -var upperCase = createCompounder_default(function(result2, word, index3) { - return result2 + (index3 ? " " : "") + word.toUpperCase(); -}); -var upperCase_default = upperCase; - -// node_modules/lodash-es/valuesIn.js -function valuesIn(object4) { - return object4 == null ? [] : baseValues_default(object4, keysIn_default(object4)); -} -var valuesIn_default = valuesIn; - -// node_modules/lodash-es/without.js -var without = baseRest_default(function(array4, values2) { - return isArrayLikeObject_default(array4) ? baseDifference_default(array4, values2) : []; -}); -var without_default = without; - -// node_modules/lodash-es/wrap.js -function wrap(value, wrapper) { - return partial_default(castFunction_default(wrapper), value); -} -var wrap_default = wrap; - -// node_modules/lodash-es/wrapperAt.js -var wrapperAt = flatRest_default(function(paths) { - var length2 = paths.length, start = length2 ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object4) { - return baseAt_default(object4, paths); - }; - if (length2 > 1 || this.__actions__.length || !(value instanceof LazyWrapper_default) || !isIndex_default(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length2 ? 1 : 0)); - value.__actions__.push({ - "func": thru_default, - "args": [interceptor], - "thisArg": void 0 - }); - return new LodashWrapper_default(value, this.__chain__).thru(function(array4) { - if (length2 && !array4.length) { - array4.push(void 0); - } - return array4; - }); -}); -var wrapperAt_default = wrapperAt; - -// node_modules/lodash-es/wrapperChain.js -function wrapperChain() { - return chain_default(this); -} -var wrapperChain_default = wrapperChain; - -// node_modules/lodash-es/wrapperReverse.js -function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper_default) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper_default(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - "func": thru_default, - "args": [reverse_default], - "thisArg": void 0 - }); - return new LodashWrapper_default(wrapped, this.__chain__); - } - return this.thru(reverse_default); -} -var wrapperReverse_default = wrapperReverse; - -// node_modules/lodash-es/_baseXor.js -function baseXor(arrays, iteratee2, comparator) { - var length2 = arrays.length; - if (length2 < 2) { - return length2 ? baseUniq_default(arrays[0]) : []; - } - var index3 = -1, result2 = Array(length2); - while (++index3 < length2) { - var array4 = arrays[index3], othIndex = -1; - while (++othIndex < length2) { - if (othIndex != index3) { - result2[index3] = baseDifference_default(result2[index3] || array4, arrays[othIndex], iteratee2, comparator); - } - } - } - return baseUniq_default(baseFlatten_default(result2, 1), iteratee2, comparator); -} -var baseXor_default = baseXor; - -// node_modules/lodash-es/xor.js -var xor = baseRest_default(function(arrays) { - return baseXor_default(arrayFilter_default(arrays, isArrayLikeObject_default)); -}); -var xor_default = xor; - -// node_modules/lodash-es/xorBy.js -var xorBy = baseRest_default(function(arrays) { - var iteratee2 = last_default(arrays); - if (isArrayLikeObject_default(iteratee2)) { - iteratee2 = void 0; - } - return baseXor_default(arrayFilter_default(arrays, isArrayLikeObject_default), baseIteratee_default(iteratee2, 2)); -}); -var xorBy_default = xorBy; - -// node_modules/lodash-es/xorWith.js -var xorWith = baseRest_default(function(arrays) { - var comparator = last_default(arrays); - comparator = typeof comparator == "function" ? comparator : void 0; - return baseXor_default(arrayFilter_default(arrays, isArrayLikeObject_default), void 0, comparator); -}); -var xorWith_default = xorWith; - -// node_modules/lodash-es/zip.js -var zip = baseRest_default(unzip_default); -var zip_default = zip; - -// node_modules/lodash-es/_baseZipObject.js -function baseZipObject(props4, values2, assignFunc) { - var index3 = -1, length2 = props4.length, valsLength = values2.length, result2 = {}; - while (++index3 < length2) { - var value = index3 < valsLength ? values2[index3] : void 0; - assignFunc(result2, props4[index3], value); - } - return result2; -} -var baseZipObject_default = baseZipObject; - -// node_modules/lodash-es/zipObject.js -function zipObject(props4, values2) { - return baseZipObject_default(props4 || [], values2 || [], assignValue_default); -} -var zipObject_default = zipObject; - -// node_modules/lodash-es/zipObjectDeep.js -function zipObjectDeep(props4, values2) { - return baseZipObject_default(props4 || [], values2 || [], baseSet_default); -} -var zipObjectDeep_default = zipObjectDeep; - -// node_modules/lodash-es/zipWith.js -var zipWith = baseRest_default(function(arrays) { - var length2 = arrays.length, iteratee2 = length2 > 1 ? arrays[length2 - 1] : void 0; - iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : void 0; - return unzipWith_default(arrays, iteratee2); -}); -var zipWith_default = zipWith; - -// node_modules/lodash-es/array.default.js -var array_default_default = { - chunk: chunk_default, - compact: compact_default2, - concat: concat_default, - difference: difference_default, - differenceBy: differenceBy_default, - differenceWith: differenceWith_default, - drop: drop_default, - dropRight: dropRight_default, - dropRightWhile: dropRightWhile_default, - dropWhile: dropWhile_default, - fill: fill_default, - findIndex: findIndex_default, - findLastIndex: findLastIndex_default, - first: head_default, - flatten: flatten_default, - flattenDeep: flattenDeep_default, - flattenDepth: flattenDepth_default, - fromPairs: fromPairs_default, - head: head_default, - indexOf: indexOf_default, - initial: initial_default, - intersection: intersection_default, - intersectionBy: intersectionBy_default, - intersectionWith: intersectionWith_default, - join: join_default, - last: last_default, - lastIndexOf: lastIndexOf_default, - nth: nth_default, - pull: pull_default, - pullAll: pullAll_default, - pullAllBy: pullAllBy_default, - pullAllWith: pullAllWith_default, - pullAt: pullAt_default, - remove: remove_default, - reverse: reverse_default, - slice: slice_default, - sortedIndex: sortedIndex_default, - sortedIndexBy: sortedIndexBy_default, - sortedIndexOf: sortedIndexOf_default, - sortedLastIndex: sortedLastIndex_default, - sortedLastIndexBy: sortedLastIndexBy_default, - sortedLastIndexOf: sortedLastIndexOf_default, - sortedUniq: sortedUniq_default, - sortedUniqBy: sortedUniqBy_default, - tail: tail_default, - take: take_default, - takeRight: takeRight_default, - takeRightWhile: takeRightWhile_default, - takeWhile: takeWhile_default, - union: union_default, - unionBy: unionBy_default, - unionWith: unionWith_default, - uniq: uniq_default, - uniqBy: uniqBy_default, - uniqWith: uniqWith_default, - unzip: unzip_default, - unzipWith: unzipWith_default, - without: without_default, - xor: xor_default, - xorBy: xorBy_default, - xorWith: xorWith_default, - zip: zip_default, - zipObject: zipObject_default, - zipObjectDeep: zipObjectDeep_default, - zipWith: zipWith_default -}; - -// node_modules/lodash-es/collection.default.js -var collection_default_default = { - countBy: countBy_default, - each: forEach_default, - eachRight: forEachRight_default, - every: every_default, - filter: filter_default, - find: find_default, - findLast: findLast_default, - flatMap: flatMap_default, - flatMapDeep: flatMapDeep_default, - flatMapDepth: flatMapDepth_default, - forEach: forEach_default, - forEachRight: forEachRight_default, - groupBy: groupBy_default, - includes: includes_default, - invokeMap: invokeMap_default, - keyBy: keyBy_default, - map: map_default, - orderBy: orderBy_default, - partition: partition_default, - reduce: reduce_default, - reduceRight: reduceRight_default, - reject: reject_default, - sample: sample_default, - sampleSize: sampleSize_default, - shuffle: shuffle_default, - size: size_default, - some: some_default, - sortBy: sortBy_default -}; - -// node_modules/lodash-es/date.default.js -var date_default_default = { - now: now_default -}; - -// node_modules/lodash-es/function.default.js -var function_default_default = { - after: after_default, - ary: ary_default, - before: before_default, - bind: bind_default, - bindKey: bindKey_default, - curry: curry_default, - curryRight: curryRight_default, - debounce: debounce_default, - defer: defer_default, - delay: delay_default, - flip: flip_default, - memoize: memoize_default, - negate: negate_default, - once: once_default, - overArgs: overArgs_default, - partial: partial_default, - partialRight: partialRight_default, - rearg: rearg_default, - rest: rest_default, - spread: spread_default, - throttle: throttle_default, - unary: unary_default, - wrap: wrap_default -}; - -// node_modules/lodash-es/lang.default.js -var lang_default_default = { - castArray: castArray_default, - clone: clone_default, - cloneDeep: cloneDeep_default, - cloneDeepWith: cloneDeepWith_default, - cloneWith: cloneWith_default, - conformsTo: conformsTo_default, - eq: eq_default, - gt: gt_default, - gte: gte_default, - isArguments: isArguments_default, - isArray: isArray_default, - isArrayBuffer: isArrayBuffer_default, - isArrayLike: isArrayLike_default, - isArrayLikeObject: isArrayLikeObject_default, - isBoolean: isBoolean_default, - isBuffer: isBuffer_default, - isDate: isDate_default, - isElement: isElement_default, - isEmpty: isEmpty_default, - isEqual: isEqual_default, - isEqualWith: isEqualWith_default, - isError: isError_default, - isFinite: isFinite_default, - isFunction: isFunction_default, - isInteger: isInteger_default, - isLength: isLength_default, - isMap: isMap_default, - isMatch: isMatch_default, - isMatchWith: isMatchWith_default, - isNaN: isNaN_default, - isNative: isNative_default, - isNil: isNil_default, - isNull: isNull_default, - isNumber: isNumber_default, - isObject: isObject_default, - isObjectLike: isObjectLike_default, - isPlainObject: isPlainObject_default, - isRegExp: isRegExp_default, - isSafeInteger: isSafeInteger_default, - isSet: isSet_default, - isString: isString_default, - isSymbol: isSymbol_default, - isTypedArray: isTypedArray_default, - isUndefined: isUndefined_default, - isWeakMap: isWeakMap_default, - isWeakSet: isWeakSet_default, - lt: lt_default, - lte: lte_default, - toArray: toArray_default, - toFinite: toFinite_default, - toInteger: toInteger_default, - toLength: toLength_default, - toNumber: toNumber_default, - toPlainObject: toPlainObject_default, - toSafeInteger: toSafeInteger_default, - toString: toString_default -}; - -// node_modules/lodash-es/math.default.js -var math_default_default = { - add: add_default, - ceil: ceil_default, - divide: divide_default, - floor: floor_default, - max: max_default, - maxBy: maxBy_default, - mean: mean_default, - meanBy: meanBy_default, - min: min_default, - minBy: minBy_default, - multiply: multiply_default, - round: round_default, - subtract: subtract_default, - sum: sum_default, - sumBy: sumBy_default -}; - -// node_modules/lodash-es/number.default.js -var number_default_default = { - clamp: clamp_default, - inRange: inRange_default, - random: random_default -}; - -// node_modules/lodash-es/object.default.js -var object_default_default = { - assign: assign_default, - assignIn: assignIn_default, - assignInWith: assignInWith_default, - assignWith: assignWith_default, - at: at_default, - create: create_default, - defaults: defaults_default, - defaultsDeep: defaultsDeep_default, - entries: toPairs_default, - entriesIn: toPairsIn_default, - extend: assignIn_default, - extendWith: assignInWith_default, - findKey: findKey_default, - findLastKey: findLastKey_default, - forIn: forIn_default, - forInRight: forInRight_default, - forOwn: forOwn_default, - forOwnRight: forOwnRight_default, - functions: functions_default, - functionsIn: functionsIn_default, - get: get_default, - has: has_default, - hasIn: hasIn_default, - invert: invert_default, - invertBy: invertBy_default, - invoke: invoke_default, - keys: keys_default, - keysIn: keysIn_default, - mapKeys: mapKeys_default, - mapValues: mapValues_default, - merge: merge_default, - mergeWith: mergeWith_default, - omit: omit_default2, - omitBy: omitBy_default, - pick: pick_default, - pickBy: pickBy_default, - result: result_default, - set: set_default, - setWith: setWith_default, - toPairs: toPairs_default, - toPairsIn: toPairsIn_default, - transform: transform_default, - unset: unset_default, - update: update_default, - updateWith: updateWith_default, - values: values_default, - valuesIn: valuesIn_default -}; - -// node_modules/lodash-es/seq.default.js -var seq_default_default = { - at: wrapperAt_default, - chain: chain_default, - commit: commit_default, - lodash: wrapperLodash_default, - next: next_default, - plant: plant_default, - reverse: wrapperReverse_default, - tap: tap_default, - thru: thru_default, - toIterator: toIterator_default, - toJSON: wrapperValue_default, - value: wrapperValue_default, - valueOf: wrapperValue_default, - wrapperChain: wrapperChain_default -}; - -// node_modules/lodash-es/string.default.js -var string_default_default = { - camelCase: camelCase_default, - capitalize: capitalize_default, - deburr: deburr_default, - endsWith: endsWith_default, - escape: escape_default, - escapeRegExp: escapeRegExp_default, - kebabCase: kebabCase_default, - lowerCase: lowerCase_default, - lowerFirst: lowerFirst_default, - pad: pad_default, - padEnd: padEnd_default, - padStart: padStart_default, - parseInt: parseInt_default, - repeat: repeat_default, - replace: replace_default, - snakeCase: snakeCase_default, - split: split_default, - startCase: startCase_default, - startsWith: startsWith_default, - template: template_default, - templateSettings: templateSettings_default, - toLower: toLower_default, - toUpper: toUpper_default, - trim: trim_default, - trimEnd: trimEnd_default, - trimStart: trimStart_default, - truncate: truncate_default, - unescape: unescape_default, - upperCase: upperCase_default, - upperFirst: upperFirst_default, - words: words_default -}; - -// node_modules/lodash-es/util.default.js -var util_default_default = { - attempt: attempt_default, - bindAll: bindAll_default, - cond: cond_default, - conforms: conforms_default, - constant: constant_default, - defaultTo: defaultTo_default, - flow: flow_default, - flowRight: flowRight_default, - identity: identity_default, - iteratee: iteratee_default, - matches: matches_default, - matchesProperty: matchesProperty_default, - method: method_default, - methodOf: methodOf_default, - mixin: mixin_default, - noop: noop_default, - nthArg: nthArg_default, - over: over_default, - overEvery: overEvery_default, - overSome: overSome_default, - property: property_default, - propertyOf: propertyOf_default, - range: range_default, - rangeRight: rangeRight_default, - stubArray: stubArray_default, - stubFalse: stubFalse_default, - stubObject: stubObject_default, - stubString: stubString_default, - stubTrue: stubTrue_default, - times: times_default, - toPath: toPath_default, - uniqueId: uniqueId_default -}; - -// node_modules/lodash-es/_lazyClone.js -function lazyClone() { - var result2 = new LazyWrapper_default(this.__wrapped__); - result2.__actions__ = copyArray_default(this.__actions__); - result2.__dir__ = this.__dir__; - result2.__filtered__ = this.__filtered__; - result2.__iteratees__ = copyArray_default(this.__iteratees__); - result2.__takeCount__ = this.__takeCount__; - result2.__views__ = copyArray_default(this.__views__); - return result2; -} -var lazyClone_default = lazyClone; - -// node_modules/lodash-es/_lazyReverse.js -function lazyReverse() { - if (this.__filtered__) { - var result2 = new LazyWrapper_default(this); - result2.__dir__ = -1; - result2.__filtered__ = true; - } else { - result2 = this.clone(); - result2.__dir__ *= -1; - } - return result2; -} -var lazyReverse_default = lazyReverse; - -// node_modules/lodash-es/_getView.js -var nativeMax16 = Math.max; -var nativeMin13 = Math.min; -function getView(start, end, transforms) { - var index3 = -1, length2 = transforms.length; - while (++index3 < length2) { - var data = transforms[index3], size2 = data.size; - switch (data.type) { - case "drop": - start += size2; - break; - case "dropRight": - end -= size2; - break; - case "take": - end = nativeMin13(end, start + size2); - break; - case "takeRight": - start = nativeMax16(start, end - size2); - break; - } - } - return { "start": start, "end": end }; -} -var getView_default = getView; - -// node_modules/lodash-es/_lazyValue.js -var LAZY_FILTER_FLAG = 1; -var LAZY_MAP_FLAG = 2; -var nativeMin14 = Math.min; -function lazyValue() { - var array4 = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray_default(array4), isRight = dir < 0, arrLength = isArr ? array4.length : 0, view = getView_default(0, arrLength, this.__views__), start = view.start, end = view.end, length2 = end - start, index3 = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin14(length2, this.__takeCount__); - if (!isArr || !isRight && arrLength == length2 && takeCount == length2) { - return baseWrapperValue_default(array4, this.__actions__); - } - var result2 = []; - outer: - while (length2-- && resIndex < takeCount) { - index3 += dir; - var iterIndex = -1, value = array4[index3]; - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], iteratee2 = data.iteratee, type4 = data.type, computed2 = iteratee2(value); - if (type4 == LAZY_MAP_FLAG) { - value = computed2; - } else if (!computed2) { - if (type4 == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result2[resIndex++] = value; - } - return result2; -} -var lazyValue_default = lazyValue; - -// node_modules/lodash-es/lodash.default.js -var VERSION = "4.17.21"; -var WRAP_BIND_KEY_FLAG7 = 2; -var LAZY_FILTER_FLAG2 = 1; -var LAZY_WHILE_FLAG = 3; -var MAX_ARRAY_LENGTH7 = 4294967295; -var arrayProto6 = Array.prototype; -var objectProto29 = Object.prototype; -var hasOwnProperty26 = objectProto29.hasOwnProperty; -var symIterator2 = Symbol_default ? Symbol_default.iterator : void 0; -var nativeMax17 = Math.max; -var nativeMin15 = Math.min; -var mixin2 = /* @__PURE__ */ function(func) { - return function(object4, source, options) { - if (options == null) { - var isObj = isObject_default(source), props4 = isObj && keys_default(source), methodNames = props4 && props4.length && baseFunctions_default(source, props4); - if (!(methodNames ? methodNames.length : isObj)) { - options = source; - source = object4; - object4 = this; - } - } - return func(object4, source, options); - }; -}(mixin_default); -wrapperLodash_default.after = function_default_default.after; -wrapperLodash_default.ary = function_default_default.ary; -wrapperLodash_default.assign = object_default_default.assign; -wrapperLodash_default.assignIn = object_default_default.assignIn; -wrapperLodash_default.assignInWith = object_default_default.assignInWith; -wrapperLodash_default.assignWith = object_default_default.assignWith; -wrapperLodash_default.at = object_default_default.at; -wrapperLodash_default.before = function_default_default.before; -wrapperLodash_default.bind = function_default_default.bind; -wrapperLodash_default.bindAll = util_default_default.bindAll; -wrapperLodash_default.bindKey = function_default_default.bindKey; -wrapperLodash_default.castArray = lang_default_default.castArray; -wrapperLodash_default.chain = seq_default_default.chain; -wrapperLodash_default.chunk = array_default_default.chunk; -wrapperLodash_default.compact = array_default_default.compact; -wrapperLodash_default.concat = array_default_default.concat; -wrapperLodash_default.cond = util_default_default.cond; -wrapperLodash_default.conforms = util_default_default.conforms; -wrapperLodash_default.constant = util_default_default.constant; -wrapperLodash_default.countBy = collection_default_default.countBy; -wrapperLodash_default.create = object_default_default.create; -wrapperLodash_default.curry = function_default_default.curry; -wrapperLodash_default.curryRight = function_default_default.curryRight; -wrapperLodash_default.debounce = function_default_default.debounce; -wrapperLodash_default.defaults = object_default_default.defaults; -wrapperLodash_default.defaultsDeep = object_default_default.defaultsDeep; -wrapperLodash_default.defer = function_default_default.defer; -wrapperLodash_default.delay = function_default_default.delay; -wrapperLodash_default.difference = array_default_default.difference; -wrapperLodash_default.differenceBy = array_default_default.differenceBy; -wrapperLodash_default.differenceWith = array_default_default.differenceWith; -wrapperLodash_default.drop = array_default_default.drop; -wrapperLodash_default.dropRight = array_default_default.dropRight; -wrapperLodash_default.dropRightWhile = array_default_default.dropRightWhile; -wrapperLodash_default.dropWhile = array_default_default.dropWhile; -wrapperLodash_default.fill = array_default_default.fill; -wrapperLodash_default.filter = collection_default_default.filter; -wrapperLodash_default.flatMap = collection_default_default.flatMap; -wrapperLodash_default.flatMapDeep = collection_default_default.flatMapDeep; -wrapperLodash_default.flatMapDepth = collection_default_default.flatMapDepth; -wrapperLodash_default.flatten = array_default_default.flatten; -wrapperLodash_default.flattenDeep = array_default_default.flattenDeep; -wrapperLodash_default.flattenDepth = array_default_default.flattenDepth; -wrapperLodash_default.flip = function_default_default.flip; -wrapperLodash_default.flow = util_default_default.flow; -wrapperLodash_default.flowRight = util_default_default.flowRight; -wrapperLodash_default.fromPairs = array_default_default.fromPairs; -wrapperLodash_default.functions = object_default_default.functions; -wrapperLodash_default.functionsIn = object_default_default.functionsIn; -wrapperLodash_default.groupBy = collection_default_default.groupBy; -wrapperLodash_default.initial = array_default_default.initial; -wrapperLodash_default.intersection = array_default_default.intersection; -wrapperLodash_default.intersectionBy = array_default_default.intersectionBy; -wrapperLodash_default.intersectionWith = array_default_default.intersectionWith; -wrapperLodash_default.invert = object_default_default.invert; -wrapperLodash_default.invertBy = object_default_default.invertBy; -wrapperLodash_default.invokeMap = collection_default_default.invokeMap; -wrapperLodash_default.iteratee = util_default_default.iteratee; -wrapperLodash_default.keyBy = collection_default_default.keyBy; -wrapperLodash_default.keys = keys_default; -wrapperLodash_default.keysIn = object_default_default.keysIn; -wrapperLodash_default.map = collection_default_default.map; -wrapperLodash_default.mapKeys = object_default_default.mapKeys; -wrapperLodash_default.mapValues = object_default_default.mapValues; -wrapperLodash_default.matches = util_default_default.matches; -wrapperLodash_default.matchesProperty = util_default_default.matchesProperty; -wrapperLodash_default.memoize = function_default_default.memoize; -wrapperLodash_default.merge = object_default_default.merge; -wrapperLodash_default.mergeWith = object_default_default.mergeWith; -wrapperLodash_default.method = util_default_default.method; -wrapperLodash_default.methodOf = util_default_default.methodOf; -wrapperLodash_default.mixin = mixin2; -wrapperLodash_default.negate = negate_default; -wrapperLodash_default.nthArg = util_default_default.nthArg; -wrapperLodash_default.omit = object_default_default.omit; -wrapperLodash_default.omitBy = object_default_default.omitBy; -wrapperLodash_default.once = function_default_default.once; -wrapperLodash_default.orderBy = collection_default_default.orderBy; -wrapperLodash_default.over = util_default_default.over; -wrapperLodash_default.overArgs = function_default_default.overArgs; -wrapperLodash_default.overEvery = util_default_default.overEvery; -wrapperLodash_default.overSome = util_default_default.overSome; -wrapperLodash_default.partial = function_default_default.partial; -wrapperLodash_default.partialRight = function_default_default.partialRight; -wrapperLodash_default.partition = collection_default_default.partition; -wrapperLodash_default.pick = object_default_default.pick; -wrapperLodash_default.pickBy = object_default_default.pickBy; -wrapperLodash_default.property = util_default_default.property; -wrapperLodash_default.propertyOf = util_default_default.propertyOf; -wrapperLodash_default.pull = array_default_default.pull; -wrapperLodash_default.pullAll = array_default_default.pullAll; -wrapperLodash_default.pullAllBy = array_default_default.pullAllBy; -wrapperLodash_default.pullAllWith = array_default_default.pullAllWith; -wrapperLodash_default.pullAt = array_default_default.pullAt; -wrapperLodash_default.range = util_default_default.range; -wrapperLodash_default.rangeRight = util_default_default.rangeRight; -wrapperLodash_default.rearg = function_default_default.rearg; -wrapperLodash_default.reject = collection_default_default.reject; -wrapperLodash_default.remove = array_default_default.remove; -wrapperLodash_default.rest = function_default_default.rest; -wrapperLodash_default.reverse = array_default_default.reverse; -wrapperLodash_default.sampleSize = collection_default_default.sampleSize; -wrapperLodash_default.set = object_default_default.set; -wrapperLodash_default.setWith = object_default_default.setWith; -wrapperLodash_default.shuffle = collection_default_default.shuffle; -wrapperLodash_default.slice = array_default_default.slice; -wrapperLodash_default.sortBy = collection_default_default.sortBy; -wrapperLodash_default.sortedUniq = array_default_default.sortedUniq; -wrapperLodash_default.sortedUniqBy = array_default_default.sortedUniqBy; -wrapperLodash_default.split = string_default_default.split; -wrapperLodash_default.spread = function_default_default.spread; -wrapperLodash_default.tail = array_default_default.tail; -wrapperLodash_default.take = array_default_default.take; -wrapperLodash_default.takeRight = array_default_default.takeRight; -wrapperLodash_default.takeRightWhile = array_default_default.takeRightWhile; -wrapperLodash_default.takeWhile = array_default_default.takeWhile; -wrapperLodash_default.tap = seq_default_default.tap; -wrapperLodash_default.throttle = function_default_default.throttle; -wrapperLodash_default.thru = thru_default; -wrapperLodash_default.toArray = lang_default_default.toArray; -wrapperLodash_default.toPairs = object_default_default.toPairs; -wrapperLodash_default.toPairsIn = object_default_default.toPairsIn; -wrapperLodash_default.toPath = util_default_default.toPath; -wrapperLodash_default.toPlainObject = lang_default_default.toPlainObject; -wrapperLodash_default.transform = object_default_default.transform; -wrapperLodash_default.unary = function_default_default.unary; -wrapperLodash_default.union = array_default_default.union; -wrapperLodash_default.unionBy = array_default_default.unionBy; -wrapperLodash_default.unionWith = array_default_default.unionWith; -wrapperLodash_default.uniq = array_default_default.uniq; -wrapperLodash_default.uniqBy = array_default_default.uniqBy; -wrapperLodash_default.uniqWith = array_default_default.uniqWith; -wrapperLodash_default.unset = object_default_default.unset; -wrapperLodash_default.unzip = array_default_default.unzip; -wrapperLodash_default.unzipWith = array_default_default.unzipWith; -wrapperLodash_default.update = object_default_default.update; -wrapperLodash_default.updateWith = object_default_default.updateWith; -wrapperLodash_default.values = object_default_default.values; -wrapperLodash_default.valuesIn = object_default_default.valuesIn; -wrapperLodash_default.without = array_default_default.without; -wrapperLodash_default.words = string_default_default.words; -wrapperLodash_default.wrap = function_default_default.wrap; -wrapperLodash_default.xor = array_default_default.xor; -wrapperLodash_default.xorBy = array_default_default.xorBy; -wrapperLodash_default.xorWith = array_default_default.xorWith; -wrapperLodash_default.zip = array_default_default.zip; -wrapperLodash_default.zipObject = array_default_default.zipObject; -wrapperLodash_default.zipObjectDeep = array_default_default.zipObjectDeep; -wrapperLodash_default.zipWith = array_default_default.zipWith; -wrapperLodash_default.entries = object_default_default.toPairs; -wrapperLodash_default.entriesIn = object_default_default.toPairsIn; -wrapperLodash_default.extend = object_default_default.assignIn; -wrapperLodash_default.extendWith = object_default_default.assignInWith; -mixin2(wrapperLodash_default, wrapperLodash_default); -wrapperLodash_default.add = math_default_default.add; -wrapperLodash_default.attempt = util_default_default.attempt; -wrapperLodash_default.camelCase = string_default_default.camelCase; -wrapperLodash_default.capitalize = string_default_default.capitalize; -wrapperLodash_default.ceil = math_default_default.ceil; -wrapperLodash_default.clamp = number_default_default.clamp; -wrapperLodash_default.clone = lang_default_default.clone; -wrapperLodash_default.cloneDeep = lang_default_default.cloneDeep; -wrapperLodash_default.cloneDeepWith = lang_default_default.cloneDeepWith; -wrapperLodash_default.cloneWith = lang_default_default.cloneWith; -wrapperLodash_default.conformsTo = lang_default_default.conformsTo; -wrapperLodash_default.deburr = string_default_default.deburr; -wrapperLodash_default.defaultTo = util_default_default.defaultTo; -wrapperLodash_default.divide = math_default_default.divide; -wrapperLodash_default.endsWith = string_default_default.endsWith; -wrapperLodash_default.eq = lang_default_default.eq; -wrapperLodash_default.escape = string_default_default.escape; -wrapperLodash_default.escapeRegExp = string_default_default.escapeRegExp; -wrapperLodash_default.every = collection_default_default.every; -wrapperLodash_default.find = collection_default_default.find; -wrapperLodash_default.findIndex = array_default_default.findIndex; -wrapperLodash_default.findKey = object_default_default.findKey; -wrapperLodash_default.findLast = collection_default_default.findLast; -wrapperLodash_default.findLastIndex = array_default_default.findLastIndex; -wrapperLodash_default.findLastKey = object_default_default.findLastKey; -wrapperLodash_default.floor = math_default_default.floor; -wrapperLodash_default.forEach = collection_default_default.forEach; -wrapperLodash_default.forEachRight = collection_default_default.forEachRight; -wrapperLodash_default.forIn = object_default_default.forIn; -wrapperLodash_default.forInRight = object_default_default.forInRight; -wrapperLodash_default.forOwn = object_default_default.forOwn; -wrapperLodash_default.forOwnRight = object_default_default.forOwnRight; -wrapperLodash_default.get = object_default_default.get; -wrapperLodash_default.gt = lang_default_default.gt; -wrapperLodash_default.gte = lang_default_default.gte; -wrapperLodash_default.has = object_default_default.has; -wrapperLodash_default.hasIn = object_default_default.hasIn; -wrapperLodash_default.head = array_default_default.head; -wrapperLodash_default.identity = identity_default; -wrapperLodash_default.includes = collection_default_default.includes; -wrapperLodash_default.indexOf = array_default_default.indexOf; -wrapperLodash_default.inRange = number_default_default.inRange; -wrapperLodash_default.invoke = object_default_default.invoke; -wrapperLodash_default.isArguments = lang_default_default.isArguments; -wrapperLodash_default.isArray = isArray_default; -wrapperLodash_default.isArrayBuffer = lang_default_default.isArrayBuffer; -wrapperLodash_default.isArrayLike = lang_default_default.isArrayLike; -wrapperLodash_default.isArrayLikeObject = lang_default_default.isArrayLikeObject; -wrapperLodash_default.isBoolean = lang_default_default.isBoolean; -wrapperLodash_default.isBuffer = lang_default_default.isBuffer; -wrapperLodash_default.isDate = lang_default_default.isDate; -wrapperLodash_default.isElement = lang_default_default.isElement; -wrapperLodash_default.isEmpty = lang_default_default.isEmpty; -wrapperLodash_default.isEqual = lang_default_default.isEqual; -wrapperLodash_default.isEqualWith = lang_default_default.isEqualWith; -wrapperLodash_default.isError = lang_default_default.isError; -wrapperLodash_default.isFinite = lang_default_default.isFinite; -wrapperLodash_default.isFunction = lang_default_default.isFunction; -wrapperLodash_default.isInteger = lang_default_default.isInteger; -wrapperLodash_default.isLength = lang_default_default.isLength; -wrapperLodash_default.isMap = lang_default_default.isMap; -wrapperLodash_default.isMatch = lang_default_default.isMatch; -wrapperLodash_default.isMatchWith = lang_default_default.isMatchWith; -wrapperLodash_default.isNaN = lang_default_default.isNaN; -wrapperLodash_default.isNative = lang_default_default.isNative; -wrapperLodash_default.isNil = lang_default_default.isNil; -wrapperLodash_default.isNull = lang_default_default.isNull; -wrapperLodash_default.isNumber = lang_default_default.isNumber; -wrapperLodash_default.isObject = isObject_default; -wrapperLodash_default.isObjectLike = lang_default_default.isObjectLike; -wrapperLodash_default.isPlainObject = lang_default_default.isPlainObject; -wrapperLodash_default.isRegExp = lang_default_default.isRegExp; -wrapperLodash_default.isSafeInteger = lang_default_default.isSafeInteger; -wrapperLodash_default.isSet = lang_default_default.isSet; -wrapperLodash_default.isString = lang_default_default.isString; -wrapperLodash_default.isSymbol = lang_default_default.isSymbol; -wrapperLodash_default.isTypedArray = lang_default_default.isTypedArray; -wrapperLodash_default.isUndefined = lang_default_default.isUndefined; -wrapperLodash_default.isWeakMap = lang_default_default.isWeakMap; -wrapperLodash_default.isWeakSet = lang_default_default.isWeakSet; -wrapperLodash_default.join = array_default_default.join; -wrapperLodash_default.kebabCase = string_default_default.kebabCase; -wrapperLodash_default.last = last_default; -wrapperLodash_default.lastIndexOf = array_default_default.lastIndexOf; -wrapperLodash_default.lowerCase = string_default_default.lowerCase; -wrapperLodash_default.lowerFirst = string_default_default.lowerFirst; -wrapperLodash_default.lt = lang_default_default.lt; -wrapperLodash_default.lte = lang_default_default.lte; -wrapperLodash_default.max = math_default_default.max; -wrapperLodash_default.maxBy = math_default_default.maxBy; -wrapperLodash_default.mean = math_default_default.mean; -wrapperLodash_default.meanBy = math_default_default.meanBy; -wrapperLodash_default.min = math_default_default.min; -wrapperLodash_default.minBy = math_default_default.minBy; -wrapperLodash_default.stubArray = util_default_default.stubArray; -wrapperLodash_default.stubFalse = util_default_default.stubFalse; -wrapperLodash_default.stubObject = util_default_default.stubObject; -wrapperLodash_default.stubString = util_default_default.stubString; -wrapperLodash_default.stubTrue = util_default_default.stubTrue; -wrapperLodash_default.multiply = math_default_default.multiply; -wrapperLodash_default.nth = array_default_default.nth; -wrapperLodash_default.noop = util_default_default.noop; -wrapperLodash_default.now = date_default_default.now; -wrapperLodash_default.pad = string_default_default.pad; -wrapperLodash_default.padEnd = string_default_default.padEnd; -wrapperLodash_default.padStart = string_default_default.padStart; -wrapperLodash_default.parseInt = string_default_default.parseInt; -wrapperLodash_default.random = number_default_default.random; -wrapperLodash_default.reduce = collection_default_default.reduce; -wrapperLodash_default.reduceRight = collection_default_default.reduceRight; -wrapperLodash_default.repeat = string_default_default.repeat; -wrapperLodash_default.replace = string_default_default.replace; -wrapperLodash_default.result = object_default_default.result; -wrapperLodash_default.round = math_default_default.round; -wrapperLodash_default.sample = collection_default_default.sample; -wrapperLodash_default.size = collection_default_default.size; -wrapperLodash_default.snakeCase = string_default_default.snakeCase; -wrapperLodash_default.some = collection_default_default.some; -wrapperLodash_default.sortedIndex = array_default_default.sortedIndex; -wrapperLodash_default.sortedIndexBy = array_default_default.sortedIndexBy; -wrapperLodash_default.sortedIndexOf = array_default_default.sortedIndexOf; -wrapperLodash_default.sortedLastIndex = array_default_default.sortedLastIndex; -wrapperLodash_default.sortedLastIndexBy = array_default_default.sortedLastIndexBy; -wrapperLodash_default.sortedLastIndexOf = array_default_default.sortedLastIndexOf; -wrapperLodash_default.startCase = string_default_default.startCase; -wrapperLodash_default.startsWith = string_default_default.startsWith; -wrapperLodash_default.subtract = math_default_default.subtract; -wrapperLodash_default.sum = math_default_default.sum; -wrapperLodash_default.sumBy = math_default_default.sumBy; -wrapperLodash_default.template = string_default_default.template; -wrapperLodash_default.times = util_default_default.times; -wrapperLodash_default.toFinite = lang_default_default.toFinite; -wrapperLodash_default.toInteger = toInteger_default; -wrapperLodash_default.toLength = lang_default_default.toLength; -wrapperLodash_default.toLower = string_default_default.toLower; -wrapperLodash_default.toNumber = lang_default_default.toNumber; -wrapperLodash_default.toSafeInteger = lang_default_default.toSafeInteger; -wrapperLodash_default.toString = lang_default_default.toString; -wrapperLodash_default.toUpper = string_default_default.toUpper; -wrapperLodash_default.trim = string_default_default.trim; -wrapperLodash_default.trimEnd = string_default_default.trimEnd; -wrapperLodash_default.trimStart = string_default_default.trimStart; -wrapperLodash_default.truncate = string_default_default.truncate; -wrapperLodash_default.unescape = string_default_default.unescape; -wrapperLodash_default.uniqueId = util_default_default.uniqueId; -wrapperLodash_default.upperCase = string_default_default.upperCase; -wrapperLodash_default.upperFirst = string_default_default.upperFirst; -wrapperLodash_default.each = collection_default_default.forEach; -wrapperLodash_default.eachRight = collection_default_default.forEachRight; -wrapperLodash_default.first = array_default_default.head; -mixin2(wrapperLodash_default, function() { - var source = {}; - baseForOwn_default(wrapperLodash_default, function(func, methodName) { - if (!hasOwnProperty26.call(wrapperLodash_default.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; -}(), { "chain": false }); -wrapperLodash_default.VERSION = VERSION; -(wrapperLodash_default.templateSettings = string_default_default.templateSettings).imports._ = wrapperLodash_default; -arrayEach_default(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { - wrapperLodash_default[methodName].placeholder = wrapperLodash_default; -}); -arrayEach_default(["drop", "take"], function(methodName, index3) { - LazyWrapper_default.prototype[methodName] = function(n3) { - n3 = n3 === void 0 ? 1 : nativeMax17(toInteger_default(n3), 0); - var result2 = this.__filtered__ && !index3 ? new LazyWrapper_default(this) : this.clone(); - if (result2.__filtered__) { - result2.__takeCount__ = nativeMin15(n3, result2.__takeCount__); - } else { - result2.__views__.push({ - "size": nativeMin15(n3, MAX_ARRAY_LENGTH7), - "type": methodName + (result2.__dir__ < 0 ? "Right" : "") - }); - } - return result2; - }; - LazyWrapper_default.prototype[methodName + "Right"] = function(n3) { - return this.reverse()[methodName](n3).reverse(); - }; -}); -arrayEach_default(["filter", "map", "takeWhile"], function(methodName, index3) { - var type4 = index3 + 1, isFilter = type4 == LAZY_FILTER_FLAG2 || type4 == LAZY_WHILE_FLAG; - LazyWrapper_default.prototype[methodName] = function(iteratee2) { - var result2 = this.clone(); - result2.__iteratees__.push({ - "iteratee": baseIteratee_default(iteratee2, 3), - "type": type4 - }); - result2.__filtered__ = result2.__filtered__ || isFilter; - return result2; - }; -}); -arrayEach_default(["head", "last"], function(methodName, index3) { - var takeName = "take" + (index3 ? "Right" : ""); - LazyWrapper_default.prototype[methodName] = function() { - return this[takeName](1).value()[0]; - }; -}); -arrayEach_default(["initial", "tail"], function(methodName, index3) { - var dropName = "drop" + (index3 ? "" : "Right"); - LazyWrapper_default.prototype[methodName] = function() { - return this.__filtered__ ? new LazyWrapper_default(this) : this[dropName](1); - }; -}); -LazyWrapper_default.prototype.compact = function() { - return this.filter(identity_default); -}; -LazyWrapper_default.prototype.find = function(predicate) { - return this.filter(predicate).head(); -}; -LazyWrapper_default.prototype.findLast = function(predicate) { - return this.reverse().find(predicate); -}; -LazyWrapper_default.prototype.invokeMap = baseRest_default(function(path2, args) { - if (typeof path2 == "function") { - return new LazyWrapper_default(this); - } - return this.map(function(value) { - return baseInvoke_default(value, path2, args); - }); -}); -LazyWrapper_default.prototype.reject = function(predicate) { - return this.filter(negate_default(baseIteratee_default(predicate))); -}; -LazyWrapper_default.prototype.slice = function(start, end) { - start = toInteger_default(start); - var result2 = this; - if (result2.__filtered__ && (start > 0 || end < 0)) { - return new LazyWrapper_default(result2); - } - if (start < 0) { - result2 = result2.takeRight(-start); - } else if (start) { - result2 = result2.drop(start); - } - if (end !== void 0) { - end = toInteger_default(end); - result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start); - } - return result2; -}; -LazyWrapper_default.prototype.takeRightWhile = function(predicate) { - return this.reverse().takeWhile(predicate).reverse(); -}; -LazyWrapper_default.prototype.toArray = function() { - return this.take(MAX_ARRAY_LENGTH7); -}; -baseForOwn_default(LazyWrapper_default.prototype, function(func, methodName) { - var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = wrapperLodash_default[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); - if (!lodashFunc) { - return; - } - wrapperLodash_default.prototype[methodName] = function() { - var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper_default, iteratee2 = args[0], useLazy = isLazy || isArray_default(value); - var interceptor = function(value2) { - var result3 = lodashFunc.apply(wrapperLodash_default, arrayPush_default([value2], args)); - return isTaker && chainAll ? result3[0] : result3; - }; - if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { - isLazy = useLazy = false; - } - var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; - if (!retUnwrapped && useLazy) { - value = onlyLazy ? value : new LazyWrapper_default(this); - var result2 = func.apply(value, args); - result2.__actions__.push({ "func": thru_default, "args": [interceptor], "thisArg": void 0 }); - return new LodashWrapper_default(result2, chainAll); - } - if (isUnwrapped && onlyLazy) { - return func.apply(this, args); - } - result2 = this.thru(interceptor); - return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; - }; -}); -arrayEach_default(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { - var func = arrayProto6[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); - wrapperLodash_default.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray_default(value) ? value : [], args); - } - return this[chainName](function(value2) { - return func.apply(isArray_default(value2) ? value2 : [], args); - }); - }; -}); -baseForOwn_default(LazyWrapper_default.prototype, function(func, methodName) { - var lodashFunc = wrapperLodash_default[methodName]; - if (lodashFunc) { - var key2 = lodashFunc.name + ""; - if (!hasOwnProperty26.call(realNames_default, key2)) { - realNames_default[key2] = []; - } - realNames_default[key2].push({ "name": methodName, "func": lodashFunc }); - } -}); -realNames_default[createHybrid_default(void 0, WRAP_BIND_KEY_FLAG7).name] = [{ - "name": "wrapper", - "func": void 0 -}]; -LazyWrapper_default.prototype.clone = lazyClone_default; -LazyWrapper_default.prototype.reverse = lazyReverse_default; -LazyWrapper_default.prototype.value = lazyValue_default; -wrapperLodash_default.prototype.at = seq_default_default.at; -wrapperLodash_default.prototype.chain = seq_default_default.wrapperChain; -wrapperLodash_default.prototype.commit = seq_default_default.commit; -wrapperLodash_default.prototype.next = seq_default_default.next; -wrapperLodash_default.prototype.plant = seq_default_default.plant; -wrapperLodash_default.prototype.reverse = seq_default_default.reverse; -wrapperLodash_default.prototype.toJSON = wrapperLodash_default.prototype.valueOf = wrapperLodash_default.prototype.value = seq_default_default.value; -wrapperLodash_default.prototype.first = wrapperLodash_default.prototype.head; -if (symIterator2) { - wrapperLodash_default.prototype[symIterator2] = seq_default_default.toIterator; -} - -// node_modules/ant-design-vue/es/space/Compact.js -var spaceCompactItemProps = () => ({ - compactSize: String, - compactDirection: vue_types_default.oneOf(tuple("horizontal", "vertical")).def("horizontal"), - isFirstItem: booleanType(), - isLastItem: booleanType() -}); -var SpaceCompactItemContext = createContext_default(null); -var useCompactItemContext = (prefixCls, direction) => { - const compactItemContext = SpaceCompactItemContext.useInject(); - const compactItemClassnames = computed(() => { - if (!compactItemContext || isEmpty_default(compactItemContext)) return ""; - const { - compactDirection, - isFirstItem, - isLastItem - } = compactItemContext; - const separator = compactDirection === "vertical" ? "-vertical-" : "-"; - return classNames_default({ - [`${prefixCls.value}-compact${separator}item`]: true, - [`${prefixCls.value}-compact${separator}first-item`]: isFirstItem, - [`${prefixCls.value}-compact${separator}last-item`]: isLastItem, - [`${prefixCls.value}-compact${separator}item-rtl`]: direction.value === "rtl" - }); - }); - return { - compactSize: computed(() => compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize), - compactDirection: computed(() => compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection), - compactItemClassnames - }; -}; -var NoCompactStyle = defineComponent({ - name: "NoCompactStyle", - setup(_2, _ref) { - let { - slots - } = _ref; - SpaceCompactItemContext.useProvide(null); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var spaceCompactProps = () => ({ - prefixCls: String, - size: { - type: String - }, - direction: vue_types_default.oneOf(tuple("horizontal", "vertical")).def("horizontal"), - align: vue_types_default.oneOf(tuple("start", "end", "center", "baseline")), - block: { - type: Boolean, - default: void 0 - } -}); -var CompactItem = defineComponent({ - name: "CompactItem", - props: spaceCompactItemProps(), - setup(props4, _ref2) { - let { - slots - } = _ref2; - SpaceCompactItemContext.useProvide(props4); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var Compact = defineComponent({ - name: "ASpaceCompact", - inheritAttrs: false, - props: spaceCompactProps(), - setup(props4, _ref3) { - let { - attrs, - slots - } = _ref3; - const { - prefixCls, - direction: directionConfig - } = useConfigInject_default("space-compact", props4); - const compactItemContext = SpaceCompactItemContext.useInject(); - const [wrapSSR, hashId] = style_default4(prefixCls); - const clx = computed(() => { - return classNames_default(prefixCls.value, hashId.value, { - [`${prefixCls.value}-rtl`]: directionConfig.value === "rtl", - [`${prefixCls.value}-block`]: props4.block, - [`${prefixCls.value}-vertical`]: props4.direction === "vertical" - }); - }); - return () => { - var _a2; - const childNodes = flattenChildren(((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || []); - if (childNodes.length === 0) { - return null; - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [clx.value, attrs.class] - }), [childNodes.map((child, i3) => { - var _a3; - const key2 = child && child.key || `${prefixCls.value}-item-${i3}`; - const noCompactItemContext = !compactItemContext || isEmpty_default(compactItemContext); - return createVNode(CompactItem, { - "key": key2, - "compactSize": (_a3 = props4.size) !== null && _a3 !== void 0 ? _a3 : "middle", - "compactDirection": props4.direction, - "isFirstItem": i3 === 0 && (noCompactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)), - "isLastItem": i3 === childNodes.length - 1 && (noCompactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem)) - }, { - default: () => [child] - }); - })])); - }; - } -}); -var Compact_default = Compact; - -// node_modules/ant-design-vue/es/style/motion/motion.js -var initMotionCommon = (duration) => ({ - animationDuration: duration, - animationFillMode: "both" -}); -var initMotionCommonLeave = (duration) => ({ - animationDuration: duration, - animationFillMode: "both" -}); -var initMotion = function(motionCls, inKeyframes, outKeyframes, duration) { - let sameLevel = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false; - const sameLevelPrefix = sameLevel ? "&" : ""; - return { - [` - ${sameLevelPrefix}${motionCls}-enter, - ${sameLevelPrefix}${motionCls}-appear - `]: _extends(_extends({}, initMotionCommon(duration)), { - animationPlayState: "paused" - }), - [`${sameLevelPrefix}${motionCls}-leave`]: _extends(_extends({}, initMotionCommonLeave(duration)), { - animationPlayState: "paused" - }), - [` - ${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active, - ${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active - `]: { - animationName: inKeyframes, - animationPlayState: "running" - }, - [`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: { - animationName: outKeyframes, - animationPlayState: "running", - pointerEvents: "none" - } - }; -}; - -// node_modules/ant-design-vue/es/style/motion/fade.js -var fadeIn = new Keyframes_default("antFadeIn", { - "0%": { - opacity: 0 - }, - "100%": { - opacity: 1 - } -}); -var fadeOut = new Keyframes_default("antFadeOut", { - "0%": { - opacity: 1 - }, - "100%": { - opacity: 0 - } -}); -var initFadeMotion = function(token2) { - let sameLevel = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const { - antCls - } = token2; - const motionCls = `${antCls}-fade`; - const sameLevelPrefix = sameLevel ? "&" : ""; - return [initMotion(motionCls, fadeIn, fadeOut, token2.motionDurationMid, sameLevel), { - [` - ${sameLevelPrefix}${motionCls}-enter, - ${sameLevelPrefix}${motionCls}-appear - `]: { - opacity: 0, - animationTimingFunction: "linear" - }, - [`${sameLevelPrefix}${motionCls}-leave`]: { - animationTimingFunction: "linear" - } - }]; -}; - -// node_modules/ant-design-vue/es/style/motion/move.js -var moveDownIn = new Keyframes_default("antMoveDownIn", { - "0%": { - transform: "translate3d(0, 100%, 0)", - transformOrigin: "0 0", - opacity: 0 - }, - "100%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - } -}); -var moveDownOut = new Keyframes_default("antMoveDownOut", { - "0%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - }, - "100%": { - transform: "translate3d(0, 100%, 0)", - transformOrigin: "0 0", - opacity: 0 - } -}); -var moveLeftIn = new Keyframes_default("antMoveLeftIn", { - "0%": { - transform: "translate3d(-100%, 0, 0)", - transformOrigin: "0 0", - opacity: 0 - }, - "100%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - } -}); -var moveLeftOut = new Keyframes_default("antMoveLeftOut", { - "0%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - }, - "100%": { - transform: "translate3d(-100%, 0, 0)", - transformOrigin: "0 0", - opacity: 0 - } -}); -var moveRightIn = new Keyframes_default("antMoveRightIn", { - "0%": { - transform: "translate3d(100%, 0, 0)", - transformOrigin: "0 0", - opacity: 0 - }, - "100%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - } -}); -var moveRightOut = new Keyframes_default("antMoveRightOut", { - "0%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - }, - "100%": { - transform: "translate3d(100%, 0, 0)", - transformOrigin: "0 0", - opacity: 0 - } -}); -var moveUpIn = new Keyframes_default("antMoveUpIn", { - "0%": { - transform: "translate3d(0, -100%, 0)", - transformOrigin: "0 0", - opacity: 0 - }, - "100%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - } -}); -var moveUpOut = new Keyframes_default("antMoveUpOut", { - "0%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - }, - "100%": { - transform: "translate3d(0, -100%, 0)", - transformOrigin: "0 0", - opacity: 0 - } -}); -var moveMotion = { - "move-up": { - inKeyframes: moveUpIn, - outKeyframes: moveUpOut - }, - "move-down": { - inKeyframes: moveDownIn, - outKeyframes: moveDownOut - }, - "move-left": { - inKeyframes: moveLeftIn, - outKeyframes: moveLeftOut - }, - "move-right": { - inKeyframes: moveRightIn, - outKeyframes: moveRightOut - } -}; -var initMoveMotion = (token2, motionName) => { - const { - antCls - } = token2; - const motionCls = `${antCls}-${motionName}`; - const { - inKeyframes, - outKeyframes - } = moveMotion[motionName]; - return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), { - [` - ${motionCls}-enter, - ${motionCls}-appear - `]: { - opacity: 0, - animationTimingFunction: token2.motionEaseOutCirc - }, - [`${motionCls}-leave`]: { - animationTimingFunction: token2.motionEaseInOutCirc - } - }]; -}; - -// node_modules/ant-design-vue/es/style/motion/slide.js -var slideUpIn = new Keyframes_default("antSlideUpIn", { - "0%": { - transform: "scaleY(0.8)", - transformOrigin: "0% 0%", - opacity: 0 - }, - "100%": { - transform: "scaleY(1)", - transformOrigin: "0% 0%", - opacity: 1 - } -}); -var slideUpOut = new Keyframes_default("antSlideUpOut", { - "0%": { - transform: "scaleY(1)", - transformOrigin: "0% 0%", - opacity: 1 - }, - "100%": { - transform: "scaleY(0.8)", - transformOrigin: "0% 0%", - opacity: 0 - } -}); -var slideDownIn = new Keyframes_default("antSlideDownIn", { - "0%": { - transform: "scaleY(0.8)", - transformOrigin: "100% 100%", - opacity: 0 - }, - "100%": { - transform: "scaleY(1)", - transformOrigin: "100% 100%", - opacity: 1 - } -}); -var slideDownOut = new Keyframes_default("antSlideDownOut", { - "0%": { - transform: "scaleY(1)", - transformOrigin: "100% 100%", - opacity: 1 - }, - "100%": { - transform: "scaleY(0.8)", - transformOrigin: "100% 100%", - opacity: 0 - } -}); -var slideLeftIn = new Keyframes_default("antSlideLeftIn", { - "0%": { - transform: "scaleX(0.8)", - transformOrigin: "0% 0%", - opacity: 0 - }, - "100%": { - transform: "scaleX(1)", - transformOrigin: "0% 0%", - opacity: 1 - } -}); -var slideLeftOut = new Keyframes_default("antSlideLeftOut", { - "0%": { - transform: "scaleX(1)", - transformOrigin: "0% 0%", - opacity: 1 - }, - "100%": { - transform: "scaleX(0.8)", - transformOrigin: "0% 0%", - opacity: 0 - } -}); -var slideRightIn = new Keyframes_default("antSlideRightIn", { - "0%": { - transform: "scaleX(0.8)", - transformOrigin: "100% 0%", - opacity: 0 - }, - "100%": { - transform: "scaleX(1)", - transformOrigin: "100% 0%", - opacity: 1 - } -}); -var slideRightOut = new Keyframes_default("antSlideRightOut", { - "0%": { - transform: "scaleX(1)", - transformOrigin: "100% 0%", - opacity: 1 - }, - "100%": { - transform: "scaleX(0.8)", - transformOrigin: "100% 0%", - opacity: 0 - } -}); -var slideMotion = { - "slide-up": { - inKeyframes: slideUpIn, - outKeyframes: slideUpOut - }, - "slide-down": { - inKeyframes: slideDownIn, - outKeyframes: slideDownOut - }, - "slide-left": { - inKeyframes: slideLeftIn, - outKeyframes: slideLeftOut - }, - "slide-right": { - inKeyframes: slideRightIn, - outKeyframes: slideRightOut - } -}; -var initSlideMotion = (token2, motionName) => { - const { - antCls - } = token2; - const motionCls = `${antCls}-${motionName}`; - const { - inKeyframes, - outKeyframes - } = slideMotion[motionName]; - return [initMotion(motionCls, inKeyframes, outKeyframes, token2.motionDurationMid), { - [` - ${motionCls}-enter, - ${motionCls}-appear - `]: { - transform: "scale(0)", - transformOrigin: "0% 0%", - opacity: 0, - animationTimingFunction: token2.motionEaseOutQuint - }, - [`${motionCls}-leave`]: { - animationTimingFunction: token2.motionEaseInQuint - } - }]; -}; - -// node_modules/ant-design-vue/es/style/motion/zoom.js -var zoomIn = new Keyframes_default("antZoomIn", { - "0%": { - transform: "scale(0.2)", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - opacity: 1 - } -}); -var zoomOut = new Keyframes_default("antZoomOut", { - "0%": { - transform: "scale(1)" - }, - "100%": { - transform: "scale(0.2)", - opacity: 0 - } -}); -var zoomBigIn = new Keyframes_default("antZoomBigIn", { - "0%": { - transform: "scale(0.8)", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - opacity: 1 - } -}); -var zoomBigOut = new Keyframes_default("antZoomBigOut", { - "0%": { - transform: "scale(1)" - }, - "100%": { - transform: "scale(0.8)", - opacity: 0 - } -}); -var zoomUpIn = new Keyframes_default("antZoomUpIn", { - "0%": { - transform: "scale(0.8)", - transformOrigin: "50% 0%", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - transformOrigin: "50% 0%" - } -}); -var zoomUpOut = new Keyframes_default("antZoomUpOut", { - "0%": { - transform: "scale(1)", - transformOrigin: "50% 0%" - }, - "100%": { - transform: "scale(0.8)", - transformOrigin: "50% 0%", - opacity: 0 - } -}); -var zoomLeftIn = new Keyframes_default("antZoomLeftIn", { - "0%": { - transform: "scale(0.8)", - transformOrigin: "0% 50%", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - transformOrigin: "0% 50%" - } -}); -var zoomLeftOut = new Keyframes_default("antZoomLeftOut", { - "0%": { - transform: "scale(1)", - transformOrigin: "0% 50%" - }, - "100%": { - transform: "scale(0.8)", - transformOrigin: "0% 50%", - opacity: 0 - } -}); -var zoomRightIn = new Keyframes_default("antZoomRightIn", { - "0%": { - transform: "scale(0.8)", - transformOrigin: "100% 50%", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - transformOrigin: "100% 50%" - } -}); -var zoomRightOut = new Keyframes_default("antZoomRightOut", { - "0%": { - transform: "scale(1)", - transformOrigin: "100% 50%" - }, - "100%": { - transform: "scale(0.8)", - transformOrigin: "100% 50%", - opacity: 0 - } -}); -var zoomDownIn = new Keyframes_default("antZoomDownIn", { - "0%": { - transform: "scale(0.8)", - transformOrigin: "50% 100%", - opacity: 0 - }, - "100%": { - transform: "scale(1)", - transformOrigin: "50% 100%" - } -}); -var zoomDownOut = new Keyframes_default("antZoomDownOut", { - "0%": { - transform: "scale(1)", - transformOrigin: "50% 100%" - }, - "100%": { - transform: "scale(0.8)", - transformOrigin: "50% 100%", - opacity: 0 - } -}); -var zoomMotion = { - zoom: { - inKeyframes: zoomIn, - outKeyframes: zoomOut - }, - "zoom-big": { - inKeyframes: zoomBigIn, - outKeyframes: zoomBigOut - }, - "zoom-big-fast": { - inKeyframes: zoomBigIn, - outKeyframes: zoomBigOut - }, - "zoom-left": { - inKeyframes: zoomLeftIn, - outKeyframes: zoomLeftOut - }, - "zoom-right": { - inKeyframes: zoomRightIn, - outKeyframes: zoomRightOut - }, - "zoom-up": { - inKeyframes: zoomUpIn, - outKeyframes: zoomUpOut - }, - "zoom-down": { - inKeyframes: zoomDownIn, - outKeyframes: zoomDownOut - } -}; -var initZoomMotion = (token2, motionName) => { - const { - antCls - } = token2; - const motionCls = `${antCls}-${motionName}`; - const { - inKeyframes, - outKeyframes - } = zoomMotion[motionName]; - return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === "zoom-big-fast" ? token2.motionDurationFast : token2.motionDurationMid), { - [` - ${motionCls}-enter, - ${motionCls}-appear - `]: { - transform: "scale(0)", - opacity: 0, - animationTimingFunction: token2.motionEaseOutCirc, - "&-prepare": { - transform: "none" - } - }, - [`${motionCls}-leave`]: { - animationTimingFunction: token2.motionEaseInOutCirc - } - }]; -}; - -// node_modules/ant-design-vue/es/style/motion/collapse.js -var genCollapseMotion = (token2) => ({ - [token2.componentCls]: { - // For common/openAnimation - [`${token2.antCls}-motion-collapse-legacy`]: { - overflow: "hidden", - "&-active": { - transition: `height ${token2.motionDurationMid} ${token2.motionEaseInOut}, - opacity ${token2.motionDurationMid} ${token2.motionEaseInOut} !important` - } - }, - [`${token2.antCls}-motion-collapse`]: { - overflow: "hidden", - transition: `height ${token2.motionDurationMid} ${token2.motionEaseInOut}, - opacity ${token2.motionDurationMid} ${token2.motionEaseInOut} !important` - } - } -}); -var collapse_default = genCollapseMotion; - -// node_modules/ant-design-vue/es/select/style/dropdown.js -var genItemStyle = (token2) => { - const { - controlPaddingHorizontal - } = token2; - return { - position: "relative", - display: "block", - minHeight: token2.controlHeight, - padding: `${(token2.controlHeight - token2.fontSize * token2.lineHeight) / 2}px ${controlPaddingHorizontal}px`, - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - boxSizing: "border-box" - }; -}; -var genSingleStyle = (token2) => { - const { - antCls, - componentCls - } = token2; - const selectItemCls = `${componentCls}-item`; - return [ - { - [`${componentCls}-dropdown`]: _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: -9999, - zIndex: token2.zIndexPopup, - boxSizing: "border-box", - padding: token2.paddingXXS, - overflow: "hidden", - fontSize: token2.fontSize, - // Fix select render lag of long text in chrome - // https://github.com/ant-design/ant-design/issues/11456 - // https://github.com/ant-design/ant-design/issues/11843 - fontVariant: "initial", - backgroundColor: token2.colorBgElevated, - borderRadius: token2.borderRadiusLG, - outline: "none", - boxShadow: token2.boxShadowSecondary, - [` - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomLeft, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomLeft - `]: { - animationName: slideUpIn - }, - [` - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topLeft, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topLeft - `]: { - animationName: slideDownIn - }, - [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomLeft`]: { - animationName: slideUpOut - }, - [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topLeft`]: { - animationName: slideDownOut - }, - "&-hidden": { - display: "none" - }, - "&-empty": { - color: token2.colorTextDisabled - }, - // ========================= Options ========================= - [`${selectItemCls}-empty`]: _extends(_extends({}, genItemStyle(token2)), { - color: token2.colorTextDisabled - }), - [`${selectItemCls}`]: _extends(_extends({}, genItemStyle(token2)), { - cursor: "pointer", - transition: `background ${token2.motionDurationSlow} ease`, - borderRadius: token2.borderRadiusSM, - // =========== Group ============ - "&-group": { - color: token2.colorTextDescription, - fontSize: token2.fontSizeSM, - cursor: "default" - }, - // =========== Option =========== - "&-option": { - display: "flex", - "&-content": _extends({ - flex: "auto" - }, textEllipsis), - "&-state": { - flex: "none" - }, - [`&-active:not(${selectItemCls}-option-disabled)`]: { - backgroundColor: token2.controlItemBgHover - }, - [`&-selected:not(${selectItemCls}-option-disabled)`]: { - color: token2.colorText, - fontWeight: token2.fontWeightStrong, - backgroundColor: token2.controlItemBgActive, - [`${selectItemCls}-option-state`]: { - color: token2.colorPrimary - } - }, - "&-disabled": { - [`&${selectItemCls}-option-selected`]: { - backgroundColor: token2.colorBgContainerDisabled - }, - color: token2.colorTextDisabled, - cursor: "not-allowed" - }, - "&-grouped": { - paddingInlineStart: token2.controlPaddingHorizontal * 2 - } - } - }), - // =========================== RTL =========================== - "&-rtl": { - direction: "rtl" - } - }) - }, - // Follow code may reuse in other components - initSlideMotion(token2, "slide-up"), - initSlideMotion(token2, "slide-down"), - initMoveMotion(token2, "move-up"), - initMoveMotion(token2, "move-down") - ]; -}; -var dropdown_default = genSingleStyle; - -// node_modules/ant-design-vue/es/select/style/multiple.js -var FIXED_ITEM_MARGIN = 2; -function getSelectItemStyle(_ref) { - let { - controlHeightSM, - controlHeight, - lineWidth: borderWidth - } = _ref; - const selectItemDist = (controlHeight - controlHeightSM) / 2 - borderWidth; - const selectItemMargin = Math.ceil(selectItemDist / 2); - return [selectItemDist, selectItemMargin]; -} -function genSizeStyle(token2, suffix) { - const { - componentCls, - iconCls - } = token2; - const selectOverflowPrefixCls = `${componentCls}-selection-overflow`; - const selectItemHeight = token2.controlHeightSM; - const [selectItemDist] = getSelectItemStyle(token2); - const suffixCls = suffix ? `${componentCls}-${suffix}` : ""; - return { - [`${componentCls}-multiple${suffixCls}`]: { - fontSize: token2.fontSize, - /** - * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome - * may update to redesign with its align logic. - */ - // =========================== Overflow =========================== - [selectOverflowPrefixCls]: { - position: "relative", - display: "flex", - flex: "auto", - flexWrap: "wrap", - maxWidth: "100%", - "&-item": { - flex: "none", - alignSelf: "center", - maxWidth: "100%", - display: "inline-flex" - } - }, - // ========================= Selector ========================= - [`${componentCls}-selector`]: { - display: "flex", - flexWrap: "wrap", - alignItems: "center", - // Multiple is little different that horizontal is follow the vertical - padding: `${selectItemDist - FIXED_ITEM_MARGIN}px ${FIXED_ITEM_MARGIN * 2}px`, - borderRadius: token2.borderRadius, - [`${componentCls}-show-search&`]: { - cursor: "text" - }, - [`${componentCls}-disabled&`]: { - background: token2.colorBgContainerDisabled, - cursor: "not-allowed" - }, - "&:after": { - display: "inline-block", - width: 0, - margin: `${FIXED_ITEM_MARGIN}px 0`, - lineHeight: `${selectItemHeight}px`, - content: '"\\a0"' - } - }, - [` - &${componentCls}-show-arrow ${componentCls}-selector, - &${componentCls}-allow-clear ${componentCls}-selector - `]: { - paddingInlineEnd: token2.fontSizeIcon + token2.controlPaddingHorizontal - }, - // ======================== Selections ======================== - [`${componentCls}-selection-item`]: { - position: "relative", - display: "flex", - flex: "none", - boxSizing: "border-box", - maxWidth: "100%", - height: selectItemHeight, - marginTop: FIXED_ITEM_MARGIN, - marginBottom: FIXED_ITEM_MARGIN, - lineHeight: `${selectItemHeight - token2.lineWidth * 2}px`, - background: token2.colorFillSecondary, - border: `${token2.lineWidth}px solid ${token2.colorSplit}`, - borderRadius: token2.borderRadiusSM, - cursor: "default", - transition: `font-size ${token2.motionDurationSlow}, line-height ${token2.motionDurationSlow}, height ${token2.motionDurationSlow}`, - userSelect: "none", - marginInlineEnd: FIXED_ITEM_MARGIN * 2, - paddingInlineStart: token2.paddingXS, - paddingInlineEnd: token2.paddingXS / 2, - [`${componentCls}-disabled&`]: { - color: token2.colorTextDisabled, - borderColor: token2.colorBorder, - cursor: "not-allowed" - }, - // It's ok not to do this, but 24px makes bottom narrow in view should adjust - "&-content": { - display: "inline-block", - marginInlineEnd: token2.paddingXS / 2, - overflow: "hidden", - whiteSpace: "pre", - textOverflow: "ellipsis" - }, - "&-remove": _extends(_extends({}, resetIcon()), { - display: "inline-block", - color: token2.colorIcon, - fontWeight: "bold", - fontSize: 10, - lineHeight: "inherit", - cursor: "pointer", - [`> ${iconCls}`]: { - verticalAlign: "-0.2em" - }, - "&:hover": { - color: token2.colorIconHover - } - }) - }, - // ========================== Input ========================== - [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: { - [`${componentCls}-selection-search`]: { - marginInlineStart: 0 - } - }, - [`${componentCls}-selection-search`]: { - display: "inline-flex", - position: "relative", - maxWidth: "100%", - marginInlineStart: token2.inputPaddingHorizontalBase - selectItemDist, - [` - &-input, - &-mirror - `]: { - height: selectItemHeight, - fontFamily: token2.fontFamily, - lineHeight: `${selectItemHeight}px`, - transition: `all ${token2.motionDurationSlow}` - }, - "&-input": { - width: "100%", - minWidth: 4.1 - // fix search cursor missing - }, - "&-mirror": { - position: "absolute", - top: 0, - insetInlineStart: 0, - insetInlineEnd: "auto", - zIndex: 999, - whiteSpace: "pre", - visibility: "hidden" - } - }, - // ======================= Placeholder ======================= - [`${componentCls}-selection-placeholder `]: { - position: "absolute", - top: "50%", - insetInlineStart: token2.inputPaddingHorizontalBase, - insetInlineEnd: token2.inputPaddingHorizontalBase, - transform: "translateY(-50%)", - transition: `all ${token2.motionDurationSlow}` - } - } - }; -} -function genMultipleStyle(token2) { - const { - componentCls - } = token2; - const smallToken = merge(token2, { - controlHeight: token2.controlHeightSM, - controlHeightSM: token2.controlHeightXS, - borderRadius: token2.borderRadiusSM, - borderRadiusSM: token2.borderRadiusXS - }); - const [, smSelectItemMargin] = getSelectItemStyle(token2); - return [ - genSizeStyle(token2), - // ======================== Small ======================== - // Shared - genSizeStyle(smallToken, "sm"), - // Padding - { - [`${componentCls}-multiple${componentCls}-sm`]: { - [`${componentCls}-selection-placeholder`]: { - insetInlineStart: token2.controlPaddingHorizontalSM - token2.lineWidth, - insetInlineEnd: "auto" - }, - // https://github.com/ant-design/ant-design/issues/29559 - [`${componentCls}-selection-search`]: { - marginInlineStart: smSelectItemMargin - } - } - }, - // ======================== Large ======================== - // Shared - genSizeStyle(merge(token2, { - fontSize: token2.fontSizeLG, - controlHeight: token2.controlHeightLG, - controlHeightSM: token2.controlHeight, - borderRadius: token2.borderRadiusLG, - borderRadiusSM: token2.borderRadius - }), "lg") - ]; -} - -// node_modules/ant-design-vue/es/select/style/single.js -function genSizeStyle2(token2, suffix) { - const { - componentCls, - inputPaddingHorizontalBase, - borderRadius - } = token2; - const selectHeightWithoutBorder = token2.controlHeight - token2.lineWidth * 2; - const selectionItemPadding = Math.ceil(token2.fontSize * 1.25); - const suffixCls = suffix ? `${componentCls}-${suffix}` : ""; - return { - [`${componentCls}-single${suffixCls}`]: { - fontSize: token2.fontSize, - // ========================= Selector ========================= - [`${componentCls}-selector`]: _extends(_extends({}, resetComponent(token2)), { - display: "flex", - borderRadius, - [`${componentCls}-selection-search`]: { - position: "absolute", - top: 0, - insetInlineStart: inputPaddingHorizontalBase, - insetInlineEnd: inputPaddingHorizontalBase, - bottom: 0, - "&-input": { - width: "100%" - } - }, - [` - ${componentCls}-selection-item, - ${componentCls}-selection-placeholder - `]: { - padding: 0, - lineHeight: `${selectHeightWithoutBorder}px`, - transition: `all ${token2.motionDurationSlow}`, - // Firefox inline-block position calculation is not same as Chrome & Safari. Patch this: - "@supports (-moz-appearance: meterbar)": { - lineHeight: `${selectHeightWithoutBorder}px` - } - }, - [`${componentCls}-selection-item`]: { - position: "relative", - userSelect: "none" - }, - [`${componentCls}-selection-placeholder`]: { - transition: "none", - pointerEvents: "none" - }, - // For common baseline align - [[ - "&:after", - /* For '' value baseline align */ - `${componentCls}-selection-item:after`, - /* For undefined value baseline align */ - `${componentCls}-selection-placeholder:after` - ].join(",")]: { - display: "inline-block", - width: 0, - visibility: "hidden", - content: '"\\a0"' - } - }), - [` - &${componentCls}-show-arrow ${componentCls}-selection-item, - &${componentCls}-show-arrow ${componentCls}-selection-placeholder - `]: { - paddingInlineEnd: selectionItemPadding - }, - // Opacity selection if open - [`&${componentCls}-open ${componentCls}-selection-item`]: { - color: token2.colorTextPlaceholder - }, - // ========================== Input ========================== - // We only change the style of non-customize input which is only support by `combobox` mode. - // Not customize - [`&:not(${componentCls}-customize-input)`]: { - [`${componentCls}-selector`]: { - width: "100%", - height: token2.controlHeight, - padding: `0 ${inputPaddingHorizontalBase}px`, - [`${componentCls}-selection-search-input`]: { - height: selectHeightWithoutBorder - }, - "&:after": { - lineHeight: `${selectHeightWithoutBorder}px` - } - } - }, - [`&${componentCls}-customize-input`]: { - [`${componentCls}-selector`]: { - "&:after": { - display: "none" - }, - [`${componentCls}-selection-search`]: { - position: "static", - width: "100%" - }, - [`${componentCls}-selection-placeholder`]: { - position: "absolute", - insetInlineStart: 0, - insetInlineEnd: 0, - padding: `0 ${inputPaddingHorizontalBase}px`, - "&:after": { - display: "none" - } - } - } - } - } - }; -} -function genSingleStyle2(token2) { - const { - componentCls - } = token2; - const inputPaddingHorizontalSM = token2.controlPaddingHorizontalSM - token2.lineWidth; - return [ - genSizeStyle2(token2), - // ======================== Small ======================== - // Shared - genSizeStyle2(merge(token2, { - controlHeight: token2.controlHeightSM, - borderRadius: token2.borderRadiusSM - }), "sm"), - // padding - { - [`${componentCls}-single${componentCls}-sm`]: { - [`&:not(${componentCls}-customize-input)`]: { - [`${componentCls}-selection-search`]: { - insetInlineStart: inputPaddingHorizontalSM, - insetInlineEnd: inputPaddingHorizontalSM - }, - [`${componentCls}-selector`]: { - padding: `0 ${inputPaddingHorizontalSM}px` - }, - // With arrow should provides `padding-right` to show the arrow - [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: { - insetInlineEnd: inputPaddingHorizontalSM + token2.fontSize * 1.5 - }, - [` - &${componentCls}-show-arrow ${componentCls}-selection-item, - &${componentCls}-show-arrow ${componentCls}-selection-placeholder - `]: { - paddingInlineEnd: token2.fontSize * 1.5 - } - } - } - }, - // ======================== Large ======================== - // Shared - genSizeStyle2(merge(token2, { - controlHeight: token2.controlHeightLG, - fontSize: token2.fontSizeLG, - borderRadius: token2.borderRadiusLG - }), "lg") - ]; -} - -// node_modules/ant-design-vue/es/style/compact-item.js -function compactItemBorder(token2, parentCls, options) { - const { - focusElCls, - focus, - borderElCls - } = options; - const childCombinator = borderElCls ? "> *" : ""; - const hoverEffects = ["hover", focus ? "focus" : null, "active"].filter(Boolean).map((n3) => `&:${n3} ${childCombinator}`).join(","); - return { - [`&-item:not(${parentCls}-last-item)`]: { - marginInlineEnd: -token2.lineWidth - }, - "&-item": _extends(_extends({ - [hoverEffects]: { - zIndex: 2 - } - }, focusElCls ? { - [`&${focusElCls}`]: { - zIndex: 2 - } - } : {}), { - [`&[disabled] ${childCombinator}`]: { - zIndex: 0 - } - }) - }; -} -function compactItemBorderRadius(prefixCls, parentCls, options) { - const { - borderElCls - } = options; - const childCombinator = borderElCls ? `> ${borderElCls}` : ""; - return { - [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item) ${childCombinator}`]: { - borderRadius: 0 - }, - [`&-item:not(${parentCls}-last-item)${parentCls}-first-item`]: { - [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: { - borderStartEndRadius: 0, - borderEndEndRadius: 0 - } - }, - [`&-item:not(${parentCls}-first-item)${parentCls}-last-item`]: { - [`& ${childCombinator}, &${prefixCls}-sm ${childCombinator}, &${prefixCls}-lg ${childCombinator}`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0 - } - } - }; -} -function genCompactItemStyle(token2) { - let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { - focus: true - }; - const { - componentCls - } = token2; - const compactCls = `${componentCls}-compact`; - return { - [compactCls]: _extends(_extends({}, compactItemBorder(token2, compactCls, options)), compactItemBorderRadius(componentCls, compactCls, options)) - }; -} - -// node_modules/ant-design-vue/es/select/style/index.js -var genSelectorStyle = (token2) => { - const { - componentCls - } = token2; - return { - position: "relative", - backgroundColor: token2.colorBgContainer, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`, - input: { - cursor: "pointer" - }, - [`${componentCls}-show-search&`]: { - cursor: "text", - input: { - cursor: "auto", - color: "inherit" - } - }, - [`${componentCls}-disabled&`]: { - color: token2.colorTextDisabled, - background: token2.colorBgContainerDisabled, - cursor: "not-allowed", - [`${componentCls}-multiple&`]: { - background: token2.colorBgContainerDisabled - }, - input: { - cursor: "not-allowed" - } - } - }; -}; -var genStatusStyle = function(rootSelectCls, token2) { - let overwriteDefaultBorder = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - const { - componentCls, - borderHoverColor, - outlineColor, - antCls - } = token2; - const overwriteStyle = overwriteDefaultBorder ? { - [`${componentCls}-selector`]: { - borderColor: borderHoverColor - } - } : {}; - return { - [rootSelectCls]: { - [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: _extends(_extends({}, overwriteStyle), { - [`${componentCls}-focused& ${componentCls}-selector`]: { - borderColor: borderHoverColor, - boxShadow: `0 0 0 ${token2.controlOutlineWidth}px ${outlineColor}`, - borderInlineEndWidth: `${token2.controlLineWidth}px !important`, - outline: 0 - }, - [`&:hover ${componentCls}-selector`]: { - borderColor: borderHoverColor, - borderInlineEndWidth: `${token2.controlLineWidth}px !important` - } - }) - } - }; -}; -var getSearchInputWithoutBorderStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-selection-search-input`]: { - margin: 0, - padding: 0, - background: "transparent", - border: "none", - outline: "none", - appearance: "none", - "&::-webkit-search-cancel-button": { - display: "none", - "-webkit-appearance": "none" - } - } - }; -}; -var genBaseStyle = (token2) => { - const { - componentCls, - inputPaddingHorizontalBase, - iconCls - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-block", - cursor: "pointer", - [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: _extends(_extends({}, genSelectorStyle(token2)), getSearchInputWithoutBorderStyle(token2)), - // [`&:not(&-disabled):hover ${selectCls}-selector`]: { - // ...genHoverStyle(token), - // }, - // ======================== Selection ======================== - [`${componentCls}-selection-item`]: _extends({ - flex: 1, - fontWeight: "normal" - }, textEllipsis), - // ======================= Placeholder ======================= - [`${componentCls}-selection-placeholder`]: _extends(_extends({}, textEllipsis), { - flex: 1, - color: token2.colorTextPlaceholder, - pointerEvents: "none" - }), - // ========================== Arrow ========================== - [`${componentCls}-arrow`]: _extends(_extends({}, resetIcon()), { - position: "absolute", - top: "50%", - insetInlineStart: "auto", - insetInlineEnd: inputPaddingHorizontalBase, - height: token2.fontSizeIcon, - marginTop: -token2.fontSizeIcon / 2, - color: token2.colorTextQuaternary, - fontSize: token2.fontSizeIcon, - lineHeight: 1, - textAlign: "center", - pointerEvents: "none", - display: "flex", - alignItems: "center", - [iconCls]: { - verticalAlign: "top", - transition: `transform ${token2.motionDurationSlow}`, - "> svg": { - verticalAlign: "top" - }, - [`&:not(${componentCls}-suffix)`]: { - pointerEvents: "auto" - } - }, - [`${componentCls}-disabled &`]: { - cursor: "not-allowed" - }, - "> *:not(:last-child)": { - marginInlineEnd: 8 - // FIXME: magic - } - }), - // ========================== Clear ========================== - [`${componentCls}-clear`]: { - position: "absolute", - top: "50%", - insetInlineStart: "auto", - insetInlineEnd: inputPaddingHorizontalBase, - zIndex: 1, - display: "inline-block", - width: token2.fontSizeIcon, - height: token2.fontSizeIcon, - marginTop: -token2.fontSizeIcon / 2, - color: token2.colorTextQuaternary, - fontSize: token2.fontSizeIcon, - fontStyle: "normal", - lineHeight: 1, - textAlign: "center", - textTransform: "none", - background: token2.colorBgContainer, - cursor: "pointer", - opacity: 0, - transition: `color ${token2.motionDurationMid} ease, opacity ${token2.motionDurationSlow} ease`, - textRendering: "auto", - "&:before": { - display: "block" - }, - "&:hover": { - color: token2.colorTextTertiary - } - }, - "&:hover": { - [`${componentCls}-clear`]: { - opacity: 1 - } - } - }), - // ========================= Feedback ========================== - [`${componentCls}-has-feedback`]: { - [`${componentCls}-clear`]: { - insetInlineEnd: inputPaddingHorizontalBase + token2.fontSize + token2.paddingXXS - } - } - }; -}; -var genSelectStyle = (token2) => { - const { - componentCls - } = token2; - return [ - { - [componentCls]: { - // ==================== BorderLess ==================== - [`&-borderless ${componentCls}-selector`]: { - backgroundColor: `transparent !important`, - borderColor: `transparent !important`, - boxShadow: `none !important` - }, - // ==================== In Form ==================== - [`&${componentCls}-in-form-item`]: { - width: "100%" - } - } - }, - // ===================================================== - // == LTR == - // ===================================================== - // Base - genBaseStyle(token2), - // Single - genSingleStyle2(token2), - // Multiple - genMultipleStyle(token2), - // Dropdown - dropdown_default(token2), - // ===================================================== - // == RTL == - // ===================================================== - { - [`${componentCls}-rtl`]: { - direction: "rtl" - } - }, - // ===================================================== - // == Status == - // ===================================================== - genStatusStyle(componentCls, merge(token2, { - borderHoverColor: token2.colorPrimaryHover, - outlineColor: token2.controlOutline - })), - genStatusStyle(`${componentCls}-status-error`, merge(token2, { - borderHoverColor: token2.colorErrorHover, - outlineColor: token2.colorErrorOutline - }), true), - genStatusStyle(`${componentCls}-status-warning`, merge(token2, { - borderHoverColor: token2.colorWarningHover, - outlineColor: token2.colorWarningOutline - }), true), - // ===================================================== - // == Space Compact == - // ===================================================== - genCompactItemStyle(token2, { - borderElCls: `${componentCls}-selector`, - focusElCls: `${componentCls}-focused` - }) - ]; -}; -var style_default5 = genComponentStyleHook("Select", (token2, _ref) => { - let { - rootPrefixCls - } = _ref; - const selectToken = merge(token2, { - rootPrefixCls, - inputPaddingHorizontalBase: token2.paddingSM - 1 - }); - return [genSelectStyle(selectToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase + 50 -})); - -// node_modules/ant-design-vue/es/select/index.js -var selectProps2 = () => _extends(_extends({}, omit_default(selectProps(), ["inputIcon", "mode", "getInputElement", "getRawInputElement", "backfill"])), { - value: someType([Array, Object, String, Number]), - defaultValue: someType([Array, Object, String, Number]), - notFoundContent: vue_types_default.any, - suffixIcon: vue_types_default.any, - itemIcon: vue_types_default.any, - size: stringType(), - mode: stringType(), - bordered: booleanType(true), - transitionName: String, - choiceTransitionName: stringType(""), - popupClassName: String, - /** @deprecated Please use `popupClassName` instead */ - dropdownClassName: String, - placement: stringType(), - status: stringType(), - "onUpdate:value": functionType() -}); -var SECRET_COMBOBOX_MODE_DO_NOT_USE = "SECRET_COMBOBOX_MODE_DO_NOT_USE"; -var Select = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASelect", - Option: Option_default, - OptGroup: OptGroup_default, - inheritAttrs: false, - props: initDefaultProps_default(selectProps2(), { - listHeight: 256, - listItemHeight: 24 - }), - SECRET_COMBOBOX_MODE_DO_NOT_USE, - slots: Object, - setup(props4, _ref) { - let { - attrs, - emit, - slots, - expose - } = _ref; - const selectRef = ref(); - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const focus = () => { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - const scrollTo3 = (arg) => { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(arg); - }; - const mode = computed(() => { - const { - mode: mode2 - } = props4; - if (mode2 === "combobox") { - return void 0; - } - if (mode2 === SECRET_COMBOBOX_MODE_DO_NOT_USE) { - return "combobox"; - } - return mode2; - }); - if (true) { - devWarning_default(!props4.dropdownClassName, "Select", "`dropdownClassName` is deprecated. Please use `popupClassName` instead."); - } - const { - prefixCls, - direction, - configProvider, - renderEmpty: renderEmpty2, - size: contextSize, - getPrefixCls, - getPopupContainer, - disabled, - select - } = useConfigInject_default("select", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => compactSize.value || contextSize.value); - const contextDisabled = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : contextDisabled.value; - }); - const [wrapSSR, hashId] = style_default5(prefixCls); - const rootPrefixCls = computed(() => getPrefixCls()); - const placement = computed(() => { - if (props4.placement !== void 0) { - return props4.placement; - } - return direction.value === "rtl" ? "bottomRight" : "bottomLeft"; - }); - const transitionName2 = computed(() => getTransitionName2(rootPrefixCls.value, getTransitionDirection(placement.value), props4.transitionName)); - const mergedClassName = computed(() => classNames_default({ - [`${prefixCls.value}-lg`]: mergedSize.value === "large", - [`${prefixCls.value}-sm`]: mergedSize.value === "small", - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-borderless`]: !props4.bordered, - [`${prefixCls.value}-in-form-item`]: formItemInputContext.isFormItemInput - }, getStatusClassNames(prefixCls.value, mergedStatus.value, formItemInputContext.hasFeedback), compactItemClassnames.value, hashId.value)); - const triggerChange = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - emit("update:value", args[0]); - emit("change", ...args); - formItemContext.onFieldChange(); - }; - const handleBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - expose({ - blur, - focus, - scrollTo: scrollTo3 - }); - const isMultiple2 = computed(() => mode.value === "multiple" || mode.value === "tags"); - const mergedShowArrow = computed(() => props4.showArrow !== void 0 ? props4.showArrow : props4.loading || !(isMultiple2.value || mode.value === "combobox")); - return () => { - var _a2, _b, _c, _d; - const { - notFoundContent, - listHeight = 256, - listItemHeight = 24, - popupClassName, - dropdownClassName, - virtual, - dropdownMatchSelectWidth, - id = formItemContext.id.value, - placeholder = (_a2 = slots.placeholder) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - showArrow - } = props4; - const { - hasFeedback, - feedbackIcon - } = formItemInputContext; - const {} = configProvider; - let mergedNotFound; - if (notFoundContent !== void 0) { - mergedNotFound = notFoundContent; - } else if (slots.notFoundContent) { - mergedNotFound = slots.notFoundContent(); - } else if (mode.value === "combobox") { - mergedNotFound = null; - } else { - mergedNotFound = (renderEmpty2 === null || renderEmpty2 === void 0 ? void 0 : renderEmpty2("Select")) || createVNode(DefaultRenderEmpty, { - "componentName": "Select" - }, null); - } - const { - suffixIcon, - itemIcon, - removeIcon, - clearIcon - } = getIcons(_extends(_extends({}, props4), { - multiple: isMultiple2.value, - prefixCls: prefixCls.value, - hasFeedback, - feedbackIcon, - showArrow: mergedShowArrow.value - }), slots); - const selectProps3 = omit_default(props4, ["prefixCls", "suffixIcon", "itemIcon", "removeIcon", "clearIcon", "size", "bordered", "status"]); - const rcSelectRtlDropdownClassName = classNames_default(popupClassName || dropdownClassName, { - [`${prefixCls.value}-dropdown-${direction.value}`]: direction.value === "rtl" - }, hashId.value); - return wrapSSR(createVNode(vc_select_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": selectRef, - "virtual": virtual, - "dropdownMatchSelectWidth": dropdownMatchSelectWidth - }, selectProps3), attrs), {}, { - "showSearch": (_b = props4.showSearch) !== null && _b !== void 0 ? _b : (_c = select === null || select === void 0 ? void 0 : select.value) === null || _c === void 0 ? void 0 : _c.showSearch, - "placeholder": placeholder, - "listHeight": listHeight, - "listItemHeight": listItemHeight, - "mode": mode.value, - "prefixCls": prefixCls.value, - "direction": direction.value, - "inputIcon": suffixIcon, - "menuItemSelectedIcon": itemIcon, - "removeIcon": removeIcon, - "clearIcon": clearIcon, - "notFoundContent": mergedNotFound, - "class": [mergedClassName.value, attrs.class], - "getPopupContainer": getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - "dropdownClassName": rcSelectRtlDropdownClassName, - "onChange": triggerChange, - "onBlur": handleBlur, - "id": id, - "dropdownRender": selectProps3.dropdownRender || slots.dropdownRender, - "transitionName": transitionName2.value, - "children": (_d = slots.default) === null || _d === void 0 ? void 0 : _d.call(slots), - "tagRender": props4.tagRender || slots.tagRender, - "optionLabelRender": slots.optionLabel, - "maxTagPlaceholder": props4.maxTagPlaceholder || slots.maxTagPlaceholder, - "showArrow": hasFeedback || showArrow, - "disabled": mergedDisabled.value - }), { - option: slots.option - })); - }; - } -}); -Select.install = function(app) { - app.component(Select.name, Select); - app.component(Select.Option.displayName, Select.Option); - app.component(Select.OptGroup.displayName, Select.OptGroup); - return app; -}; -var SelectOption = Select.Option; -var SelectOptGroup = Select.OptGroup; -var select_default = Select; - -// node_modules/ant-design-vue/es/auto-complete/Option.js -var Option2 = () => null; -Option2.isSelectOption = true; -Option2.displayName = "AAutoCompleteOption"; -var Option_default2 = Option2; - -// node_modules/ant-design-vue/es/auto-complete/OptGroup.js -var OptGroup2 = () => null; -OptGroup2.isSelectOptGroup = true; -OptGroup2.displayName = "AAutoCompleteOptGroup"; -var OptGroup_default2 = OptGroup2; - -// node_modules/ant-design-vue/es/auto-complete/index.js -function isSelectOptionOrSelectOptGroup(child) { - var _a2, _b; - return ((_a2 = child === null || child === void 0 ? void 0 : child.type) === null || _a2 === void 0 ? void 0 : _a2.isSelectOption) || ((_b = child === null || child === void 0 ? void 0 : child.type) === null || _b === void 0 ? void 0 : _b.isSelectOptGroup); -} -var autoCompleteProps = () => _extends(_extends({}, omit_default(selectProps2(), ["loading", "mode", "optionLabelProp", "labelInValue"])), { - dataSource: Array, - dropdownMenuStyle: { - type: Object, - default: void 0 - }, - // optionLabelProp: String, - dropdownMatchSelectWidth: { - type: [Number, Boolean], - default: true - }, - prefixCls: String, - showSearch: { - type: Boolean, - default: void 0 - }, - transitionName: String, - choiceTransitionName: { - type: String, - default: "zoom" - }, - autofocus: { - type: Boolean, - default: void 0 - }, - backfill: { - type: Boolean, - default: void 0 - }, - // optionLabelProp: PropTypes.string.def('children'), - filterOption: { - type: [Boolean, Function], - default: false - }, - defaultActiveFirstOption: { - type: Boolean, - default: true - }, - status: String -}); -var AutoCompleteOption = Option_default2; -var AutoCompleteOptGroup = OptGroup_default2; -var AutoComplete = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAutoComplete", - inheritAttrs: false, - props: autoCompleteProps(), - // emits: ['change', 'select', 'focus', 'blur'], - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - warning_default2(!("dataSource" in slots), "AutoComplete", "`dataSource` slot is deprecated, please use props `options` instead."); - warning_default2(!("options" in slots), "AutoComplete", "`options` slot is deprecated, please use props `options` instead."); - warning_default2(!props4.dropdownClassName, "AutoComplete", "`dropdownClassName` is deprecated, please use `popupClassName` instead."); - const selectRef = ref(); - const getInputElement = () => { - var _a2; - const children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - const element = children.length ? children[0] : void 0; - return element; - }; - const focus = () => { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - const { - prefixCls - } = useConfigInject_default("select", props4); - return () => { - var _a2, _b, _c; - const { - size: size2, - dataSource, - notFoundContent = (_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = props4; - let optionChildren; - const { - class: className - } = attrs; - const cls = { - [className]: !!className, - [`${prefixCls.value}-lg`]: size2 === "large", - [`${prefixCls.value}-sm`]: size2 === "small", - [`${prefixCls.value}-show-search`]: true, - [`${prefixCls.value}-auto-complete`]: true - }; - if (props4.options === void 0) { - const childArray = ((_b = slots.dataSource) === null || _b === void 0 ? void 0 : _b.call(slots)) || ((_c = slots.options) === null || _c === void 0 ? void 0 : _c.call(slots)) || []; - if (childArray.length && isSelectOptionOrSelectOptGroup(childArray[0])) { - optionChildren = childArray; - } else { - optionChildren = dataSource ? dataSource.map((item) => { - if (isValidElement(item)) { - return item; - } - switch (typeof item) { - case "string": - return createVNode(Option_default2, { - "key": item, - "value": item - }, { - default: () => [item] - }); - case "object": - return createVNode(Option_default2, { - "key": item.value, - "value": item.value - }, { - default: () => [item.text] - }); - default: - throw new Error("AutoComplete[dataSource] only supports type `string[] | Object[]`."); - } - }) : []; - } - } - const selectProps3 = omit_default(_extends(_extends(_extends({}, props4), attrs), { - mode: select_default.SECRET_COMBOBOX_MODE_DO_NOT_USE, - // optionLabelProp, - getInputElement, - notFoundContent, - // placeholder: '', - class: cls, - popupClassName: props4.popupClassName || props4.dropdownClassName, - ref: selectRef - }), ["dataSource", "loading"]); - return createVNode(select_default, selectProps3, _objectSpread2({ - default: () => [optionChildren] - }, omit_default(slots, ["default", "dataSource", "options"]))); - }; - } -}); -var auto_complete_default = _extends(AutoComplete, { - Option: Option_default2, - OptGroup: OptGroup_default2, - install(app) { - app.component(AutoComplete.name, AutoComplete); - app.component(Option_default2.displayName, Option_default2); - app.component(OptGroup_default2.displayName, OptGroup_default2); - return app; - } -}); - -// node_modules/ant-design-vue/es/alert/style/index.js -var genAlertTypeStyle = (bgColor, borderColor, iconColor, token2, alertCls) => ({ - backgroundColor: bgColor, - border: `${token2.lineWidth}px ${token2.lineType} ${borderColor}`, - [`${alertCls}-icon`]: { - color: iconColor - } -}); -var genBaseStyle2 = (token2) => { - const { - componentCls, - motionDurationSlow: duration, - marginXS, - marginSM, - fontSize, - fontSizeLG, - lineHeight, - borderRadiusLG: borderRadius, - motionEaseInOutCirc, - alertIconSizeLG, - colorText, - paddingContentVerticalSM, - alertPaddingHorizontal, - paddingMD, - paddingContentHorizontalLG - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "flex", - alignItems: "center", - padding: `${paddingContentVerticalSM}px ${alertPaddingHorizontal}px`, - wordWrap: "break-word", - borderRadius, - [`&${componentCls}-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-content`]: { - flex: 1, - minWidth: 0 - }, - [`${componentCls}-icon`]: { - marginInlineEnd: marginXS, - lineHeight: 0 - }, - [`&-description`]: { - display: "none", - fontSize, - lineHeight - }, - "&-message": { - color: colorText - }, - [`&${componentCls}-motion-leave`]: { - overflow: "hidden", - opacity: 1, - transition: `max-height ${duration} ${motionEaseInOutCirc}, opacity ${duration} ${motionEaseInOutCirc}, - padding-top ${duration} ${motionEaseInOutCirc}, padding-bottom ${duration} ${motionEaseInOutCirc}, - margin-bottom ${duration} ${motionEaseInOutCirc}` - }, - [`&${componentCls}-motion-leave-active`]: { - maxHeight: 0, - marginBottom: "0 !important", - paddingTop: 0, - paddingBottom: 0, - opacity: 0 - } - }), - [`${componentCls}-with-description`]: { - alignItems: "flex-start", - paddingInline: paddingContentHorizontalLG, - paddingBlock: paddingMD, - [`${componentCls}-icon`]: { - marginInlineEnd: marginSM, - fontSize: alertIconSizeLG, - lineHeight: 0 - }, - [`${componentCls}-message`]: { - display: "block", - marginBottom: marginXS, - color: colorText, - fontSize: fontSizeLG - }, - [`${componentCls}-description`]: { - display: "block" - } - }, - [`${componentCls}-banner`]: { - marginBottom: 0, - border: "0 !important", - borderRadius: 0 - } - }; -}; -var genTypeStyle = (token2) => { - const { - componentCls, - colorSuccess, - colorSuccessBorder, - colorSuccessBg, - colorWarning, - colorWarningBorder, - colorWarningBg, - colorError, - colorErrorBorder, - colorErrorBg, - colorInfo, - colorInfoBorder, - colorInfoBg - } = token2; - return { - [componentCls]: { - "&-success": genAlertTypeStyle(colorSuccessBg, colorSuccessBorder, colorSuccess, token2, componentCls), - "&-info": genAlertTypeStyle(colorInfoBg, colorInfoBorder, colorInfo, token2, componentCls), - "&-warning": genAlertTypeStyle(colorWarningBg, colorWarningBorder, colorWarning, token2, componentCls), - "&-error": _extends(_extends({}, genAlertTypeStyle(colorErrorBg, colorErrorBorder, colorError, token2, componentCls)), { - [`${componentCls}-description > pre`]: { - margin: 0, - padding: 0 - } - }) - } - }; -}; -var genActionStyle = (token2) => { - const { - componentCls, - iconCls, - motionDurationMid, - marginXS, - fontSizeIcon, - colorIcon, - colorIconHover - } = token2; - return { - [componentCls]: { - [`&-action`]: { - marginInlineStart: marginXS - }, - [`${componentCls}-close-icon`]: { - marginInlineStart: marginXS, - padding: 0, - overflow: "hidden", - fontSize: fontSizeIcon, - lineHeight: `${fontSizeIcon}px`, - backgroundColor: "transparent", - border: "none", - outline: "none", - cursor: "pointer", - [`${iconCls}-close`]: { - color: colorIcon, - transition: `color ${motionDurationMid}`, - "&:hover": { - color: colorIconHover - } - } - }, - "&-close-text": { - color: colorIcon, - transition: `color ${motionDurationMid}`, - "&:hover": { - color: colorIconHover - } - } - } - }; -}; -var genAlertStyle = (token2) => [genBaseStyle2(token2), genTypeStyle(token2), genActionStyle(token2)]; -var style_default6 = genComponentStyleHook("Alert", (token2) => { - const { - fontSizeHeading3 - } = token2; - const alertToken = merge(token2, { - alertIconSizeLG: fontSizeHeading3, - alertPaddingHorizontal: 12 - // Fixed value here. - }); - return [genAlertStyle(alertToken)]; -}); - -// node_modules/ant-design-vue/es/alert/index.js -var iconMapFilled = { - success: CheckCircleFilled_default, - info: InfoCircleFilled_default, - error: CloseCircleFilled_default, - warning: ExclamationCircleFilled_default -}; -var iconMapOutlined = { - success: CheckCircleOutlined_default, - info: InfoCircleOutlined_default, - error: CloseCircleOutlined_default, - warning: ExclamationCircleOutlined_default -}; -var AlertTypes = tuple("success", "info", "warning", "error"); -var alertProps = () => ({ - /** - * Type of Alert styles, options: `success`, `info`, `warning`, `error` - */ - type: vue_types_default.oneOf(AlertTypes), - /** Whether Alert can be closed */ - closable: { - type: Boolean, - default: void 0 - }, - /** Close text to show */ - closeText: vue_types_default.any, - /** Content of Alert */ - message: vue_types_default.any, - /** Additional content of Alert */ - description: vue_types_default.any, - /** Trigger when animation ending of Alert */ - afterClose: Function, - /** Whether to show icon */ - showIcon: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - banner: { - type: Boolean, - default: void 0 - }, - icon: vue_types_default.any, - closeIcon: vue_types_default.any, - onClose: Function -}); -var Alert = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAlert", - inheritAttrs: false, - props: alertProps(), - setup(props4, _ref) { - let { - slots, - emit, - attrs, - expose - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("alert", props4); - const [wrapSSR, hashId] = style_default6(prefixCls); - const closing = shallowRef(false); - const closed = shallowRef(false); - const alertNode = shallowRef(); - const handleClose = (e3) => { - e3.preventDefault(); - const dom = alertNode.value; - dom.style.height = `${dom.offsetHeight}px`; - dom.style.height = `${dom.offsetHeight}px`; - closing.value = true; - emit("close", e3); - }; - const animationEnd = () => { - var _a2; - closing.value = false; - closed.value = true; - (_a2 = props4.afterClose) === null || _a2 === void 0 ? void 0 : _a2.call(props4); - }; - const mergedType = computed(() => { - const { - type: type4 - } = props4; - if (type4 !== void 0) { - return type4; - } - return props4.banner ? "warning" : "info"; - }); - expose({ - animationEnd - }); - const motionStyle = shallowRef({}); - return () => { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k; - const { - banner, - closeIcon: customCloseIcon = (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = props4; - let { - closable, - showIcon - } = props4; - const closeText = (_b = props4.closeText) !== null && _b !== void 0 ? _b : (_c = slots.closeText) === null || _c === void 0 ? void 0 : _c.call(slots); - const description = (_d = props4.description) !== null && _d !== void 0 ? _d : (_e = slots.description) === null || _e === void 0 ? void 0 : _e.call(slots); - const message = (_f = props4.message) !== null && _f !== void 0 ? _f : (_g = slots.message) === null || _g === void 0 ? void 0 : _g.call(slots); - const icon = (_h = props4.icon) !== null && _h !== void 0 ? _h : (_j = slots.icon) === null || _j === void 0 ? void 0 : _j.call(slots); - const action = (_k = slots.action) === null || _k === void 0 ? void 0 : _k.call(slots); - showIcon = banner && showIcon === void 0 ? true : showIcon; - const IconType = (description ? iconMapOutlined : iconMapFilled)[mergedType.value] || null; - if (closeText) { - closable = true; - } - const prefixClsValue = prefixCls.value; - const alertCls = classNames_default(prefixClsValue, { - [`${prefixClsValue}-${mergedType.value}`]: true, - [`${prefixClsValue}-closing`]: closing.value, - [`${prefixClsValue}-with-description`]: !!description, - [`${prefixClsValue}-no-icon`]: !showIcon, - [`${prefixClsValue}-banner`]: !!banner, - [`${prefixClsValue}-closable`]: closable, - [`${prefixClsValue}-rtl`]: direction.value === "rtl", - [hashId.value]: true - }); - const closeIcon = closable ? createVNode("button", { - "type": "button", - "onClick": handleClose, - "class": `${prefixClsValue}-close-icon`, - "tabindex": 0 - }, [closeText ? createVNode("span", { - "class": `${prefixClsValue}-close-text` - }, [closeText]) : customCloseIcon === void 0 ? createVNode(CloseOutlined_default, null, null) : customCloseIcon]) : null; - const iconNode = icon && (isValidElement(icon) ? cloneElement(icon, { - class: `${prefixClsValue}-icon` - }) : createVNode("span", { - "class": `${prefixClsValue}-icon` - }, [icon])) || createVNode(IconType, { - "class": `${prefixClsValue}-icon` - }, null); - const transitionProps = getTransitionProps(`${prefixClsValue}-motion`, { - appear: false, - css: true, - onAfterLeave: animationEnd, - onBeforeLeave: (node2) => { - node2.style.maxHeight = `${node2.offsetHeight}px`; - }, - onLeave: (node2) => { - node2.style.maxHeight = "0px"; - } - }); - return wrapSSR(closed.value ? null : createVNode(Transition, transitionProps, { - default: () => [withDirectives(createVNode("div", _objectSpread2(_objectSpread2({ - "role": "alert" - }, attrs), {}, { - "style": [attrs.style, motionStyle.value], - "class": [attrs.class, alertCls], - "data-show": !closing.value, - "ref": alertNode - }), [showIcon ? iconNode : null, createVNode("div", { - "class": `${prefixClsValue}-content` - }, [message ? createVNode("div", { - "class": `${prefixClsValue}-message` - }, [message]) : null, description ? createVNode("div", { - "class": `${prefixClsValue}-description` - }, [description]) : null]), action ? createVNode("div", { - "class": `${prefixClsValue}-action` - }, [action]) : null, closeIcon]), [[vShow, !closing.value]])] - })); - }; - } -}); -var alert_default = withInstall(Alert); - -// node_modules/ant-design-vue/es/_util/responsiveObserve.js -var responsiveArray = ["xxxl", "xxl", "xl", "lg", "md", "sm", "xs"]; -var getResponsiveMap = (token2) => ({ - xs: `(max-width: ${token2.screenXSMax}px)`, - sm: `(min-width: ${token2.screenSM}px)`, - md: `(min-width: ${token2.screenMD}px)`, - lg: `(min-width: ${token2.screenLG}px)`, - xl: `(min-width: ${token2.screenXL}px)`, - xxl: `(min-width: ${token2.screenXXL}px)`, - xxxl: `{min-width: ${token2.screenXXXL}px}` -}); -function useResponsiveObserver() { - const [, token2] = useToken(); - return computed(() => { - const responsiveMap = getResponsiveMap(token2.value); - const subscribers = /* @__PURE__ */ new Map(); - let subUid = -1; - let screens = {}; - return { - matchHandlers: {}, - dispatch(pointMap) { - screens = pointMap; - subscribers.forEach((func) => func(screens)); - return subscribers.size >= 1; - }, - subscribe(func) { - if (!subscribers.size) this.register(); - subUid += 1; - subscribers.set(subUid, func); - func(screens); - return subUid; - }, - unsubscribe(paramToken) { - subscribers.delete(paramToken); - if (!subscribers.size) this.unregister(); - }, - unregister() { - Object.keys(responsiveMap).forEach((screen) => { - const matchMediaQuery = responsiveMap[screen]; - const handler2 = this.matchHandlers[matchMediaQuery]; - handler2 === null || handler2 === void 0 ? void 0 : handler2.mql.removeListener(handler2 === null || handler2 === void 0 ? void 0 : handler2.listener); - }); - subscribers.clear(); - }, - register() { - Object.keys(responsiveMap).forEach((screen) => { - const matchMediaQuery = responsiveMap[screen]; - const listener = (_ref) => { - let { - matches: matches2 - } = _ref; - this.dispatch(_extends(_extends({}, screens), { - [screen]: matches2 - })); - }; - const mql = window.matchMedia(matchMediaQuery); - mql.addListener(listener); - this.matchHandlers[matchMediaQuery] = { - mql, - listener - }; - listener(mql); - }); - }, - responsiveMap - }; - }); -} - -// node_modules/ant-design-vue/es/_util/hooks/useBreakpoint.js -function useBreakpoint() { - const screens = shallowRef({}); - let token2 = null; - const responsiveObserve = useResponsiveObserver(); - onMounted(() => { - token2 = responsiveObserve.value.subscribe((supportScreens) => { - screens.value = supportScreens; - }); - }); - onUnmounted(() => { - responsiveObserve.value.unsubscribe(token2); - }); - return screens; -} -var useBreakpoint_default = useBreakpoint; - -// node_modules/ant-design-vue/es/_util/eagerComputed.js -function eagerComputed(fn) { - const result2 = shallowRef(); - watchEffect(() => { - result2.value = fn(); - }, { - flush: "sync" - // needed so updates are immediate. - }); - return result2; -} - -// node_modules/ant-design-vue/es/avatar/style/index.js -var genBaseStyle3 = (token2) => { - const { - antCls, - componentCls, - iconCls, - avatarBg, - avatarColor, - containerSize, - containerSizeLG, - containerSizeSM, - textFontSize, - textFontSizeLG, - textFontSizeSM, - borderRadius, - borderRadiusLG, - borderRadiusSM, - lineWidth, - lineType - } = token2; - const avatarSizeStyle = (size2, fontSize, radius) => ({ - width: size2, - height: size2, - lineHeight: `${size2 - lineWidth * 2}px`, - borderRadius: "50%", - [`&${componentCls}-square`]: { - borderRadius: radius - }, - [`${componentCls}-string`]: { - position: "absolute", - left: { - _skip_check_: true, - value: "50%" - }, - transformOrigin: "0 center" - }, - [`&${componentCls}-icon`]: { - fontSize, - [`> ${iconCls}`]: { - margin: 0 - } - } - }); - return { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-block", - overflow: "hidden", - color: avatarColor, - whiteSpace: "nowrap", - textAlign: "center", - verticalAlign: "middle", - background: avatarBg, - border: `${lineWidth}px ${lineType} transparent`, - [`&-image`]: { - background: "transparent" - }, - [`${antCls}-image-img`]: { - display: "block" - } - }), avatarSizeStyle(containerSize, textFontSize, borderRadius)), { - [`&-lg`]: _extends({}, avatarSizeStyle(containerSizeLG, textFontSizeLG, borderRadiusLG)), - [`&-sm`]: _extends({}, avatarSizeStyle(containerSizeSM, textFontSizeSM, borderRadiusSM)), - "> img": { - display: "block", - width: "100%", - height: "100%", - objectFit: "cover" - } - }) - }; -}; -var genGroupStyle = (token2) => { - const { - componentCls, - groupBorderColor, - groupOverlapping, - groupSpace - } = token2; - return { - [`${componentCls}-group`]: { - display: "inline-flex", - [`${componentCls}`]: { - borderColor: groupBorderColor - }, - [`> *:not(:first-child)`]: { - marginInlineStart: groupOverlapping - } - }, - [`${componentCls}-group-popover`]: { - [`${componentCls} + ${componentCls}`]: { - marginInlineStart: groupSpace - } - } - }; -}; -var style_default7 = genComponentStyleHook("Avatar", (token2) => { - const { - colorTextLightSolid, - colorTextPlaceholder - } = token2; - const avatarToken = merge(token2, { - avatarBg: colorTextPlaceholder, - avatarColor: colorTextLightSolid - }); - return [genBaseStyle3(avatarToken), genGroupStyle(avatarToken)]; -}, (token2) => { - const { - controlHeight, - controlHeightLG, - controlHeightSM, - fontSize, - fontSizeLG, - fontSizeXL, - fontSizeHeading3, - marginXS, - marginXXS, - colorBorderBg - } = token2; - return { - containerSize: controlHeight, - containerSizeLG: controlHeightLG, - containerSizeSM: controlHeightSM, - textFontSize: Math.round((fontSizeLG + fontSizeXL) / 2), - textFontSizeLG: fontSizeHeading3, - textFontSizeSM: fontSize, - groupSpace: marginXXS, - groupOverlapping: -marginXS, - groupBorderColor: colorBorderBg - }; -}); - -// node_modules/ant-design-vue/es/avatar/AvatarContext.js -var AvatarContextKey = Symbol("AvatarContextKey"); -var useAvatarInjectContext = () => { - return inject(AvatarContextKey, {}); -}; -var useAvatarProviderContext = (context2) => { - return provide(AvatarContextKey, context2); -}; - -// node_modules/ant-design-vue/es/avatar/Avatar.js -var avatarProps = () => ({ - prefixCls: String, - shape: { - type: String, - default: "circle" - }, - size: { - type: [Number, String, Object], - default: () => "default" - }, - src: String, - /** Srcset of image avatar */ - srcset: String, - icon: vue_types_default.any, - alt: String, - gap: Number, - draggable: { - type: Boolean, - default: void 0 - }, - crossOrigin: String, - loadError: { - type: Function - } -}); -var Avatar = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAvatar", - inheritAttrs: false, - props: avatarProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const isImgExist = shallowRef(true); - const isMounted = shallowRef(false); - const scale = shallowRef(1); - const avatarChildrenRef = shallowRef(null); - const avatarNodeRef = shallowRef(null); - const { - prefixCls - } = useConfigInject_default("avatar", props4); - const [wrapSSR, hashId] = style_default7(prefixCls); - const avatarCtx = useAvatarInjectContext(); - const size2 = computed(() => { - return props4.size === "default" ? avatarCtx.size : props4.size; - }); - const screens = useBreakpoint_default(); - const responsiveSize = eagerComputed(() => { - if (typeof props4.size !== "object") { - return void 0; - } - const currentBreakpoint = responsiveArray.find((screen) => screens.value[screen]); - const currentSize = props4.size[currentBreakpoint]; - return currentSize; - }); - const responsiveSizeStyle = (hasIcon) => { - if (responsiveSize.value) { - return { - width: `${responsiveSize.value}px`, - height: `${responsiveSize.value}px`, - lineHeight: `${responsiveSize.value}px`, - fontSize: `${hasIcon ? responsiveSize.value / 2 : 18}px` - }; - } - return {}; - }; - const setScaleParam = () => { - if (!avatarChildrenRef.value || !avatarNodeRef.value) { - return; - } - const childrenWidth = avatarChildrenRef.value.offsetWidth; - const nodeWidth = avatarNodeRef.value.offsetWidth; - if (childrenWidth !== 0 && nodeWidth !== 0) { - const { - gap = 4 - } = props4; - if (gap * 2 < nodeWidth) { - scale.value = nodeWidth - gap * 2 < childrenWidth ? (nodeWidth - gap * 2) / childrenWidth : 1; - } - } - }; - const handleImgLoadError = () => { - const { - loadError - } = props4; - const errorFlag = loadError === null || loadError === void 0 ? void 0 : loadError(); - if (errorFlag !== false) { - isImgExist.value = false; - } - }; - watch(() => props4.src, () => { - nextTick(() => { - isImgExist.value = true; - scale.value = 1; - }); - }); - watch(() => props4.gap, () => { - nextTick(() => { - setScaleParam(); - }); - }); - onMounted(() => { - nextTick(() => { - setScaleParam(); - isMounted.value = true; - }); - }); - return () => { - var _a2, _b; - const { - shape, - src, - alt, - srcset, - draggable, - crossOrigin - } = props4; - const mergeShape = (_a2 = avatarCtx.shape) !== null && _a2 !== void 0 ? _a2 : shape; - const icon = getPropsSlot(slots, props4, "icon"); - const pre = prefixCls.value; - const classString = { - [`${attrs.class}`]: !!attrs.class, - [pre]: true, - [`${pre}-lg`]: size2.value === "large", - [`${pre}-sm`]: size2.value === "small", - [`${pre}-${mergeShape}`]: true, - [`${pre}-image`]: src && isImgExist.value, - [`${pre}-icon`]: icon, - [hashId.value]: true - }; - const sizeStyle = typeof size2.value === "number" ? { - width: `${size2.value}px`, - height: `${size2.value}px`, - lineHeight: `${size2.value}px`, - fontSize: icon ? `${size2.value / 2}px` : "18px" - } : {}; - const children = (_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots); - let childrenToRender; - if (src && isImgExist.value) { - childrenToRender = createVNode("img", { - "draggable": draggable, - "src": src, - "srcset": srcset, - "onError": handleImgLoadError, - "alt": alt, - "crossorigin": crossOrigin - }, null); - } else if (icon) { - childrenToRender = icon; - } else if (isMounted.value || scale.value !== 1) { - const transformString = `scale(${scale.value}) translateX(-50%)`; - const childrenStyle = { - msTransform: transformString, - WebkitTransform: transformString, - transform: transformString - }; - const sizeChildrenStyle = typeof size2.value === "number" ? { - lineHeight: `${size2.value}px` - } : {}; - childrenToRender = createVNode(vc_resize_observer_default, { - "onResize": setScaleParam - }, { - default: () => [createVNode("span", { - "class": `${pre}-string`, - "ref": avatarChildrenRef, - "style": _extends(_extends({}, sizeChildrenStyle), childrenStyle) - }, [children])] - }); - } else { - childrenToRender = createVNode("span", { - "class": `${pre}-string`, - "ref": avatarChildrenRef, - "style": { - opacity: 0 - } - }, [children]); - } - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "ref": avatarNodeRef, - "class": classString, - "style": [sizeStyle, responsiveSizeStyle(!!icon), attrs.style] - }), [childrenToRender])); - }; - } -}); -var Avatar_default = Avatar; - -// node_modules/ant-design-vue/es/vc-tooltip/src/placements.js -var autoAdjustOverflow = { - adjustX: 1, - adjustY: 1 -}; -var targetOffset = [0, 0]; -var placements = { - left: { - points: ["cr", "cl"], - overflow: autoAdjustOverflow, - offset: [-4, 0], - targetOffset - }, - right: { - points: ["cl", "cr"], - overflow: autoAdjustOverflow, - offset: [4, 0], - targetOffset - }, - top: { - points: ["bc", "tc"], - overflow: autoAdjustOverflow, - offset: [0, -4], - targetOffset - }, - bottom: { - points: ["tc", "bc"], - overflow: autoAdjustOverflow, - offset: [0, 4], - targetOffset - }, - topLeft: { - points: ["bl", "tl"], - overflow: autoAdjustOverflow, - offset: [0, -4], - targetOffset - }, - leftTop: { - points: ["tr", "tl"], - overflow: autoAdjustOverflow, - offset: [-4, 0], - targetOffset - }, - topRight: { - points: ["br", "tr"], - overflow: autoAdjustOverflow, - offset: [0, -4], - targetOffset - }, - rightTop: { - points: ["tl", "tr"], - overflow: autoAdjustOverflow, - offset: [4, 0], - targetOffset - }, - bottomRight: { - points: ["tr", "br"], - overflow: autoAdjustOverflow, - offset: [0, 4], - targetOffset - }, - rightBottom: { - points: ["bl", "br"], - overflow: autoAdjustOverflow, - offset: [4, 0], - targetOffset - }, - bottomLeft: { - points: ["tl", "bl"], - overflow: autoAdjustOverflow, - offset: [0, 4], - targetOffset - }, - leftBottom: { - points: ["br", "bl"], - overflow: autoAdjustOverflow, - offset: [-4, 0], - targetOffset - } -}; - -// node_modules/ant-design-vue/es/vc-tooltip/src/Content.js -var tooltipContentProps = { - prefixCls: String, - id: String, - overlayInnerStyle: vue_types_default.any -}; -var Content_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TooltipContent", - props: tooltipContentProps, - setup(props4, _ref) { - let { - slots - } = _ref; - return () => { - var _a2; - return createVNode("div", { - "class": `${props4.prefixCls}-inner`, - "id": props4.id, - "role": "tooltip", - "style": props4.overlayInnerStyle - }, [(_a2 = slots.overlay) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tooltip/src/Tooltip.js -var __rest11 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function noop6() { -} -var Tooltip_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Tooltip", - inheritAttrs: false, - props: { - trigger: vue_types_default.any.def(["hover"]), - defaultVisible: { - type: Boolean, - default: void 0 - }, - visible: { - type: Boolean, - default: void 0 - }, - placement: vue_types_default.string.def("right"), - transitionName: String, - animation: vue_types_default.any, - afterVisibleChange: vue_types_default.func.def(() => { - }), - overlayStyle: { - type: Object, - default: void 0 - }, - overlayClassName: String, - prefixCls: vue_types_default.string.def("rc-tooltip"), - mouseEnterDelay: vue_types_default.number.def(0.1), - mouseLeaveDelay: vue_types_default.number.def(0.1), - getPopupContainer: Function, - destroyTooltipOnHide: { - type: Boolean, - default: false - }, - align: vue_types_default.object.def(() => ({})), - arrowContent: vue_types_default.any.def(null), - tipId: String, - builtinPlacements: vue_types_default.object, - overlayInnerStyle: { - type: Object, - default: void 0 - }, - popupVisible: { - type: Boolean, - default: void 0 - }, - onVisibleChange: Function, - onPopupAlign: Function - }, - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const triggerDOM = shallowRef(); - const getPopupElement = () => { - const { - prefixCls, - tipId, - overlayInnerStyle - } = props4; - return [createVNode("div", { - "class": `${prefixCls}-arrow`, - "key": "arrow" - }, [getPropsSlot(slots, props4, "arrowContent")]), createVNode(Content_default, { - "key": "content", - "prefixCls": prefixCls, - "id": tipId, - "overlayInnerStyle": overlayInnerStyle - }, { - overlay: slots.overlay - })]; - }; - const getPopupDomNode = () => { - return triggerDOM.value.getPopupDomNode(); - }; - expose({ - getPopupDomNode, - triggerDOM, - forcePopupAlign: () => { - var _a2; - return (_a2 = triggerDOM.value) === null || _a2 === void 0 ? void 0 : _a2.forcePopupAlign(); - } - }); - const destroyTooltip = shallowRef(false); - const autoDestroy = shallowRef(false); - watchEffect(() => { - const { - destroyTooltipOnHide - } = props4; - if (typeof destroyTooltipOnHide === "boolean") { - destroyTooltip.value = destroyTooltipOnHide; - } else if (destroyTooltipOnHide && typeof destroyTooltipOnHide === "object") { - const { - keepParent - } = destroyTooltipOnHide; - destroyTooltip.value = keepParent === true; - autoDestroy.value = keepParent === false; - } - }); - return () => { - const { - overlayClassName, - trigger: trigger2, - mouseEnterDelay, - mouseLeaveDelay, - overlayStyle, - prefixCls, - afterVisibleChange, - transitionName: transitionName2, - animation, - placement, - align, - destroyTooltipOnHide, - defaultVisible - } = props4, restProps = __rest11(props4, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible"]); - const extraProps = _extends({}, restProps); - if (props4.visible !== void 0) { - extraProps.popupVisible = props4.visible; - } - const triggerProps2 = _extends(_extends(_extends({ - popupClassName: overlayClassName, - prefixCls, - action: trigger2, - builtinPlacements: placements, - popupPlacement: placement, - popupAlign: align, - afterPopupVisibleChange: afterVisibleChange, - popupTransitionName: transitionName2, - popupAnimation: animation, - defaultPopupVisible: defaultVisible, - destroyPopupOnHide: destroyTooltip.value, - autoDestroy: autoDestroy.value, - mouseLeaveDelay, - popupStyle: overlayStyle, - mouseEnterDelay - }, extraProps), attrs), { - onPopupVisibleChange: props4.onVisibleChange || noop6, - onPopupAlign: props4.onPopupAlign || noop6, - ref: triggerDOM, - popup: getPopupElement() - }); - return createVNode(vc_trigger_default, triggerProps2, { - default: slots.default - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tooltip/index.js -var vc_tooltip_default = Tooltip_default; - -// node_modules/ant-design-vue/es/tooltip/abstractTooltipProps.js -var abstractTooltipProps_default = () => ({ - trigger: [String, Array], - open: { - type: Boolean, - default: void 0 - }, - /** @deprecated Please use `open` instead. */ - visible: { - type: Boolean, - default: void 0 - }, - placement: String, - color: String, - transitionName: String, - overlayStyle: objectType(), - overlayInnerStyle: objectType(), - overlayClassName: String, - openClassName: String, - prefixCls: String, - mouseEnterDelay: Number, - mouseLeaveDelay: Number, - getPopupContainer: Function, - arrowPointAtCenter: { - type: Boolean, - default: void 0 - }, - autoAdjustOverflow: { - type: [Boolean, Object], - default: void 0 - }, - destroyTooltipOnHide: { - type: Boolean, - default: void 0 - }, - align: objectType(), - builtinPlacements: objectType(), - children: Array, - /** @deprecated Please use `onOpenChange` instead. */ - onVisibleChange: Function, - /** @deprecated Please use `onUpdate:open` instead. */ - "onUpdate:visible": Function, - onOpenChange: Function, - "onUpdate:open": Function -}); - -// node_modules/ant-design-vue/es/_util/placements.js -var autoAdjustOverflowEnabled = { - adjustX: 1, - adjustY: 1 -}; -var autoAdjustOverflowDisabled = { - adjustX: 0, - adjustY: 0 -}; -var targetOffset2 = [0, 0]; -function getOverflowOptions(autoAdjustOverflow4) { - if (typeof autoAdjustOverflow4 === "boolean") { - return autoAdjustOverflow4 ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled; - } - return _extends(_extends({}, autoAdjustOverflowDisabled), autoAdjustOverflow4); -} -function getPlacements(config) { - const { - arrowWidth = 4, - horizontalArrowShift = 16, - verticalArrowShift = 8, - autoAdjustOverflow: autoAdjustOverflow4, - arrowPointAtCenter - } = config; - const placementMap = { - left: { - points: ["cr", "cl"], - offset: [-4, 0] - }, - right: { - points: ["cl", "cr"], - offset: [4, 0] - }, - top: { - points: ["bc", "tc"], - offset: [0, -4] - }, - bottom: { - points: ["tc", "bc"], - offset: [0, 4] - }, - topLeft: { - points: ["bl", "tc"], - offset: [-(horizontalArrowShift + arrowWidth), -4] - }, - leftTop: { - points: ["tr", "cl"], - offset: [-4, -(verticalArrowShift + arrowWidth)] - }, - topRight: { - points: ["br", "tc"], - offset: [horizontalArrowShift + arrowWidth, -4] - }, - rightTop: { - points: ["tl", "cr"], - offset: [4, -(verticalArrowShift + arrowWidth)] - }, - bottomRight: { - points: ["tr", "bc"], - offset: [horizontalArrowShift + arrowWidth, 4] - }, - rightBottom: { - points: ["bl", "cr"], - offset: [4, verticalArrowShift + arrowWidth] - }, - bottomLeft: { - points: ["tl", "bc"], - offset: [-(horizontalArrowShift + arrowWidth), 4] - }, - leftBottom: { - points: ["br", "cl"], - offset: [-4, verticalArrowShift + arrowWidth] - } - }; - Object.keys(placementMap).forEach((key2) => { - placementMap[key2] = arrowPointAtCenter ? _extends(_extends({}, placementMap[key2]), { - overflow: getOverflowOptions(autoAdjustOverflow4), - targetOffset: targetOffset2 - }) : _extends(_extends({}, placements[key2]), { - overflow: getOverflowOptions(autoAdjustOverflow4) - }); - placementMap[key2].ignoreShake = true; - }); - return placementMap; -} - -// node_modules/ant-design-vue/es/_util/firstNotUndefined.js -function firstNotUndefined() { - let arr = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - for (let i3 = 0, len = arr.length; i3 < len; i3++) { - if (arr[i3] !== void 0) { - return arr[i3]; - } - } - return void 0; -} -var firstNotUndefined_default = firstNotUndefined; - -// node_modules/ant-design-vue/es/_util/colors.js -var inverseColors = PresetColors.map((color) => `${color}-inverse`); -var PresetStatusColorTypes = ["success", "processing", "error", "default", "warning"]; -function isPresetColor(color) { - let includeInverse = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - if (includeInverse) { - return [...inverseColors, ...PresetColors].includes(color); - } - return PresetColors.includes(color); -} -function isPresetStatusColor(color) { - return PresetStatusColorTypes.includes(color); -} - -// node_modules/ant-design-vue/es/tooltip/util.js -function parseColor(prefixCls, color) { - const isInternalColor = isPresetColor(color); - const className = classNames_default({ - [`${prefixCls}-${color}`]: color && isInternalColor - }); - const overlayStyle = {}; - const arrowStyle = {}; - if (color && !isInternalColor) { - overlayStyle.background = color; - arrowStyle["--antd-arrow-background-color"] = color; - } - return { - className, - overlayStyle, - arrowStyle - }; -} - -// node_modules/ant-design-vue/es/style/placementArrow.js -function connectArrowCls(classList) { - let showArrowCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; - return classList.map((cls) => `${showArrowCls}${cls}`).join(","); -} -var MAX_VERTICAL_CONTENT_RADIUS = 8; -function getArrowOffset(options) { - const maxVerticalContentRadius = MAX_VERTICAL_CONTENT_RADIUS; - const { - sizePopupArrow, - contentRadius, - borderRadiusOuter, - limitVerticalRadius - } = options; - const arrowInnerOffset = sizePopupArrow / 2 - Math.ceil(borderRadiusOuter * (Math.sqrt(2) - 1)); - const dropdownArrowOffset = (contentRadius > 12 ? contentRadius + 2 : 12) - arrowInnerOffset; - const dropdownArrowOffsetVertical = limitVerticalRadius ? maxVerticalContentRadius - arrowInnerOffset : dropdownArrowOffset; - return { - dropdownArrowOffset, - dropdownArrowOffsetVertical - }; -} -function getArrowStyle(token2, options) { - const { - componentCls, - sizePopupArrow, - marginXXS, - borderRadiusXS, - borderRadiusOuter, - boxShadowPopoverArrow - } = token2; - const { - colorBg, - showArrowCls, - contentRadius = token2.borderRadiusLG, - limitVerticalRadius - } = options; - const { - dropdownArrowOffsetVertical, - dropdownArrowOffset - } = getArrowOffset({ - sizePopupArrow, - contentRadius, - borderRadiusOuter, - limitVerticalRadius - }); - const dropdownArrowDistance = sizePopupArrow / 2 + marginXXS; - return { - [componentCls]: { - // ============================ Basic ============================ - [`${componentCls}-arrow`]: [_extends(_extends({ - position: "absolute", - zIndex: 1, - display: "block" - }, roundedArrow(sizePopupArrow, borderRadiusXS, borderRadiusOuter, colorBg, boxShadowPopoverArrow)), { - "&:before": { - background: colorBg - } - })], - // ========================== Placement ========================== - // Here handle the arrow position and rotate stuff - // >>>>> Top - [[`&-placement-top ${componentCls}-arrow`, `&-placement-topLeft ${componentCls}-arrow`, `&-placement-topRight ${componentCls}-arrow`].join(",")]: { - bottom: 0, - transform: "translateY(100%) rotate(180deg)" - }, - [`&-placement-top ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: "50%" - }, - transform: "translateX(-50%) translateY(100%) rotate(180deg)" - }, - [`&-placement-topLeft ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - [`&-placement-topRight ${componentCls}-arrow`]: { - right: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - // >>>>> Bottom - [[`&-placement-bottom ${componentCls}-arrow`, `&-placement-bottomLeft ${componentCls}-arrow`, `&-placement-bottomRight ${componentCls}-arrow`].join(",")]: { - top: 0, - transform: `translateY(-100%)` - }, - [`&-placement-bottom ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: "50%" - }, - transform: `translateX(-50%) translateY(-100%)` - }, - [`&-placement-bottomLeft ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - [`&-placement-bottomRight ${componentCls}-arrow`]: { - right: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - // >>>>> Left - [[`&-placement-left ${componentCls}-arrow`, `&-placement-leftTop ${componentCls}-arrow`, `&-placement-leftBottom ${componentCls}-arrow`].join(",")]: { - right: { - _skip_check_: true, - value: 0 - }, - transform: "translateX(100%) rotate(90deg)" - }, - [`&-placement-left ${componentCls}-arrow`]: { - top: { - _skip_check_: true, - value: "50%" - }, - transform: "translateY(-50%) translateX(100%) rotate(90deg)" - }, - [`&-placement-leftTop ${componentCls}-arrow`]: { - top: dropdownArrowOffsetVertical - }, - [`&-placement-leftBottom ${componentCls}-arrow`]: { - bottom: dropdownArrowOffsetVertical - }, - // >>>>> Right - [[`&-placement-right ${componentCls}-arrow`, `&-placement-rightTop ${componentCls}-arrow`, `&-placement-rightBottom ${componentCls}-arrow`].join(",")]: { - left: { - _skip_check_: true, - value: 0 - }, - transform: "translateX(-100%) rotate(-90deg)" - }, - [`&-placement-right ${componentCls}-arrow`]: { - top: { - _skip_check_: true, - value: "50%" - }, - transform: "translateY(-50%) translateX(-100%) rotate(-90deg)" - }, - [`&-placement-rightTop ${componentCls}-arrow`]: { - top: dropdownArrowOffsetVertical - }, - [`&-placement-rightBottom ${componentCls}-arrow`]: { - bottom: dropdownArrowOffsetVertical - }, - // =========================== Offset ============================ - // Offset the popover to account for the dropdown arrow - // >>>>> Top - [connectArrowCls([`&-placement-topLeft`, `&-placement-top`, `&-placement-topRight`], showArrowCls)]: { - paddingBottom: dropdownArrowDistance - }, - // >>>>> Bottom - [connectArrowCls([`&-placement-bottomLeft`, `&-placement-bottom`, `&-placement-bottomRight`], showArrowCls)]: { - paddingTop: dropdownArrowDistance - }, - // >>>>> Left - [connectArrowCls([`&-placement-leftTop`, `&-placement-left`, `&-placement-leftBottom`], showArrowCls)]: { - paddingRight: { - _skip_check_: true, - value: dropdownArrowDistance - } - }, - // >>>>> Right - [connectArrowCls([`&-placement-rightTop`, `&-placement-right`, `&-placement-rightBottom`], showArrowCls)]: { - paddingLeft: { - _skip_check_: true, - value: dropdownArrowDistance - } - } - } - }; -} - -// node_modules/ant-design-vue/es/tooltip/style/index.js -var genTooltipStyle = (token2) => { - const { - componentCls, - // ant-tooltip - tooltipMaxWidth, - tooltipColor, - tooltipBg, - tooltipBorderRadius, - zIndexPopup, - controlHeight, - boxShadowSecondary, - paddingSM, - paddingXS, - tooltipRadiusOuter - } = token2; - return [ - { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "absolute", - zIndex: zIndexPopup, - display: "block", - "&": [{ - width: "max-content" - }, { - width: "intrinsic" - }], - maxWidth: tooltipMaxWidth, - visibility: "visible", - "&-hidden": { - display: "none" - }, - "--antd-arrow-background-color": tooltipBg, - // Wrapper for the tooltip content - [`${componentCls}-inner`]: { - minWidth: controlHeight, - minHeight: controlHeight, - padding: `${paddingSM / 2}px ${paddingXS}px`, - color: tooltipColor, - textAlign: "start", - textDecoration: "none", - wordWrap: "break-word", - backgroundColor: tooltipBg, - borderRadius: tooltipBorderRadius, - boxShadow: boxShadowSecondary - }, - // Limit left and right placement radius - [[`&-placement-left`, `&-placement-leftTop`, `&-placement-leftBottom`, `&-placement-right`, `&-placement-rightTop`, `&-placement-rightBottom`].join(",")]: { - [`${componentCls}-inner`]: { - borderRadius: Math.min(tooltipBorderRadius, MAX_VERTICAL_CONTENT_RADIUS) - } - }, - [`${componentCls}-content`]: { - position: "relative" - } - }), genPresetColor(token2, (colorKey, _ref) => { - let { - darkColor - } = _ref; - return { - [`&${componentCls}-${colorKey}`]: { - [`${componentCls}-inner`]: { - backgroundColor: darkColor - }, - [`${componentCls}-arrow`]: { - "--antd-arrow-background-color": darkColor - } - } - }; - })), { - // RTL - "&-rtl": { - direction: "rtl" - } - }) - }, - // Arrow Style - getArrowStyle(merge(token2, { - borderRadiusOuter: tooltipRadiusOuter - }), { - colorBg: "var(--antd-arrow-background-color)", - showArrowCls: "", - contentRadius: tooltipBorderRadius, - limitVerticalRadius: true - }), - // Pure Render - { - [`${componentCls}-pure`]: { - position: "relative", - maxWidth: "none" - } - } - ]; -}; -var style_default8 = (prefixCls, injectStyle) => { - const useOriginHook = genComponentStyleHook("Tooltip", (token2) => { - if ((injectStyle === null || injectStyle === void 0 ? void 0 : injectStyle.value) === false) { - return []; - } - const { - borderRadius, - colorTextLightSolid, - colorBgDefault, - borderRadiusOuter - } = token2; - const TooltipToken = merge(token2, { - // default variables - tooltipMaxWidth: 250, - tooltipColor: colorTextLightSolid, - tooltipBorderRadius: borderRadius, - tooltipBg: colorBgDefault, - tooltipRadiusOuter: borderRadiusOuter > 4 ? 4 : borderRadiusOuter - }); - return [genTooltipStyle(TooltipToken), initZoomMotion(token2, "zoom-big-fast")]; - }, (_ref2) => { - let { - zIndexPopupBase, - colorBgSpotlight - } = _ref2; - return { - zIndexPopup: zIndexPopupBase + 70, - colorBgDefault: colorBgSpotlight - }; - }); - return useOriginHook(prefixCls); -}; - -// node_modules/ant-design-vue/es/tooltip/Tooltip.js -var splitObject = (obj, keys2) => { - const picked = {}; - const omitted = _extends({}, obj); - keys2.forEach((key2) => { - if (obj && key2 in obj) { - picked[key2] = obj[key2]; - delete omitted[key2]; - } - }); - return { - picked, - omitted - }; -}; -var tooltipProps = () => _extends(_extends({}, abstractTooltipProps_default()), { - title: vue_types_default.any -}); -var tooltipDefaultProps = () => ({ - trigger: "hover", - align: {}, - placement: "top", - mouseEnterDelay: 0.1, - mouseLeaveDelay: 0.1, - arrowPointAtCenter: false, - autoAdjustOverflow: true -}); -var Tooltip_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATooltip", - inheritAttrs: false, - props: initDefaultProps_default(tooltipProps(), { - trigger: "hover", - align: {}, - placement: "top", - mouseEnterDelay: 0.1, - mouseLeaveDelay: 0.1, - arrowPointAtCenter: false, - autoAdjustOverflow: true - }), - slots: Object, - // emits: ['update:visible', 'visibleChange'], - setup(props4, _ref) { - let { - slots, - emit, - attrs, - expose - } = _ref; - if (true) { - [["visible", "open"], ["onVisibleChange", "onOpenChange"]].forEach((_ref2) => { - let [deprecatedName, newName] = _ref2; - warning_default2(props4[deprecatedName] === void 0, "Tooltip", `\`${deprecatedName}\` is deprecated, please use \`${newName}\` instead.`); - }); - } - const { - prefixCls, - getPopupContainer, - direction, - rootPrefixCls - } = useConfigInject_default("tooltip", props4); - const mergedOpen = computed(() => { - var _a2; - return (_a2 = props4.open) !== null && _a2 !== void 0 ? _a2 : props4.visible; - }); - const innerOpen = ref(firstNotUndefined_default([props4.open, props4.visible])); - const tooltip = ref(); - let rafId; - watch(mergedOpen, (val) => { - wrapperRaf.cancel(rafId); - rafId = wrapperRaf(() => { - innerOpen.value = !!val; - }); - }); - const isNoTitle = () => { - var _a2; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : slots.title; - return !title && title !== 0; - }; - const handleVisibleChange = (val) => { - const noTitle = isNoTitle(); - if (mergedOpen.value === void 0) { - innerOpen.value = noTitle ? false : val; - } - if (!noTitle) { - emit("update:visible", val); - emit("visibleChange", val); - emit("update:open", val); - emit("openChange", val); - } - }; - const getPopupDomNode = () => { - return tooltip.value.getPopupDomNode(); - }; - expose({ - getPopupDomNode, - open: innerOpen, - forcePopupAlign: () => { - var _a2; - return (_a2 = tooltip.value) === null || _a2 === void 0 ? void 0 : _a2.forcePopupAlign(); - } - }); - const tooltipPlacements = computed(() => { - const { - builtinPlacements, - arrowPointAtCenter, - autoAdjustOverflow: autoAdjustOverflow4 - } = props4; - return builtinPlacements || getPlacements({ - arrowPointAtCenter, - autoAdjustOverflow: autoAdjustOverflow4 - }); - }); - const isTrueProps = (val) => { - return val || val === ""; - }; - const getDisabledCompatibleChildren = (ele) => { - const elementType = ele.type; - if (typeof elementType === "object" && ele.props) { - if ((elementType.__ANT_BUTTON === true || elementType === "button") && isTrueProps(ele.props.disabled) || elementType.__ANT_SWITCH === true && (isTrueProps(ele.props.disabled) || isTrueProps(ele.props.loading)) || elementType.__ANT_RADIO === true && isTrueProps(ele.props.disabled)) { - const { - picked, - omitted - } = splitObject(getStyle(ele), ["position", "left", "right", "top", "bottom", "float", "display", "zIndex"]); - const spanStyle = _extends(_extends({ - display: "inline-block" - }, picked), { - cursor: "not-allowed", - lineHeight: 1, - width: ele.props && ele.props.block ? "100%" : void 0 - }); - const buttonStyle = _extends(_extends({}, omitted), { - pointerEvents: "none" - }); - const child = cloneElement(ele, { - style: buttonStyle - }, true); - return createVNode("span", { - "style": spanStyle, - "class": `${prefixCls.value}-disabled-compatible-wrapper` - }, [child]); - } - } - return ele; - }; - const getOverlay = () => { - var _a2, _b; - return (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - }; - const onPopupAlign = (domNode, align) => { - const placements5 = tooltipPlacements.value; - const placement = Object.keys(placements5).find((key2) => { - var _a2, _b; - return placements5[key2].points[0] === ((_a2 = align.points) === null || _a2 === void 0 ? void 0 : _a2[0]) && placements5[key2].points[1] === ((_b = align.points) === null || _b === void 0 ? void 0 : _b[1]); - }); - if (placement) { - const rect = domNode.getBoundingClientRect(); - const transformOrigin = { - top: "50%", - left: "50%" - }; - if (placement.indexOf("top") >= 0 || placement.indexOf("Bottom") >= 0) { - transformOrigin.top = `${rect.height - align.offset[1]}px`; - } else if (placement.indexOf("Top") >= 0 || placement.indexOf("bottom") >= 0) { - transformOrigin.top = `${-align.offset[1]}px`; - } - if (placement.indexOf("left") >= 0 || placement.indexOf("Right") >= 0) { - transformOrigin.left = `${rect.width - align.offset[0]}px`; - } else if (placement.indexOf("right") >= 0 || placement.indexOf("Left") >= 0) { - transformOrigin.left = `${-align.offset[0]}px`; - } - domNode.style.transformOrigin = `${transformOrigin.left} ${transformOrigin.top}`; - } - }; - const colorInfo = computed(() => parseColor(prefixCls.value, props4.color)); - const injectFromPopover = computed(() => attrs["data-popover-inject"]); - const [wrapSSR, hashId] = style_default8(prefixCls, computed(() => !injectFromPopover.value)); - return () => { - var _a2, _b; - const { - openClassName, - overlayClassName, - overlayStyle, - overlayInnerStyle - } = props4; - let children = (_b = filterEmpty((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))) !== null && _b !== void 0 ? _b : null; - children = children.length === 1 ? children[0] : children; - let tempVisible = innerOpen.value; - if (mergedOpen.value === void 0 && isNoTitle()) { - tempVisible = false; - } - if (!children) { - return null; - } - const child = getDisabledCompatibleChildren(isValidElement(children) && !isFragment(children) ? children : createVNode("span", null, [children])); - const childCls = classNames_default({ - [openClassName || `${prefixCls.value}-open`]: true, - [child.props && child.props.class]: child.props && child.props.class - }); - const customOverlayClassName = classNames_default(overlayClassName, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, colorInfo.value.className, hashId.value); - const formattedOverlayInnerStyle = _extends(_extends({}, colorInfo.value.overlayStyle), overlayInnerStyle); - const arrowContentStyle = colorInfo.value.arrowStyle; - const vcTooltipProps = _extends(_extends(_extends({}, attrs), props4), { - prefixCls: prefixCls.value, - getPopupContainer: getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - builtinPlacements: tooltipPlacements.value, - visible: tempVisible, - ref: tooltip, - overlayClassName: customOverlayClassName, - overlayStyle: _extends(_extends({}, arrowContentStyle), overlayStyle), - overlayInnerStyle: formattedOverlayInnerStyle, - onVisibleChange: handleVisibleChange, - onPopupAlign, - transitionName: getTransitionName2(rootPrefixCls.value, "zoom-big-fast", props4.transitionName) - }); - return wrapSSR(createVNode(vc_tooltip_default, vcTooltipProps, { - default: () => [innerOpen.value ? cloneElement(child, { - class: childCls - }) : child], - arrowContent: () => createVNode("span", { - "class": `${prefixCls.value}-arrow-content` - }, null), - overlay: getOverlay - })); - }; - } -}); - -// node_modules/ant-design-vue/es/tooltip/index.js -var tooltip_default = withInstall(Tooltip_default2); - -// node_modules/ant-design-vue/es/popover/style/index.js -var genBaseStyle4 = (token2) => { - const { - componentCls, - popoverBg, - popoverColor, - width, - fontWeightStrong, - popoverPadding, - boxShadowSecondary, - colorTextHeading, - borderRadiusLG: borderRadius, - zIndexPopup, - marginXS, - colorBgElevated - } = token2; - return [ - { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: 0, - // use `left` to fix https://github.com/ant-design/ant-design/issues/39195 - left: { - _skip_check_: true, - value: 0 - }, - zIndex: zIndexPopup, - fontWeight: "normal", - whiteSpace: "normal", - textAlign: "start", - cursor: "auto", - userSelect: "text", - "--antd-arrow-background-color": colorBgElevated, - "&-rtl": { - direction: "rtl" - }, - "&-hidden": { - display: "none" - }, - [`${componentCls}-content`]: { - position: "relative" - }, - [`${componentCls}-inner`]: { - backgroundColor: popoverBg, - backgroundClip: "padding-box", - borderRadius, - boxShadow: boxShadowSecondary, - padding: popoverPadding - }, - [`${componentCls}-title`]: { - minWidth: width, - marginBottom: marginXS, - color: colorTextHeading, - fontWeight: fontWeightStrong - }, - [`${componentCls}-inner-content`]: { - color: popoverColor - } - }) - }, - // Arrow Style - getArrowStyle(token2, { - colorBg: "var(--antd-arrow-background-color)" - }), - // Pure Render - { - [`${componentCls}-pure`]: { - position: "relative", - maxWidth: "none", - [`${componentCls}-content`]: { - display: "inline-block" - } - } - } - ]; -}; -var genColorStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: PresetColors.map((colorKey) => { - const lightColor = token2[`${colorKey}-6`]; - return { - [`&${componentCls}-${colorKey}`]: { - "--antd-arrow-background-color": lightColor, - [`${componentCls}-inner`]: { - backgroundColor: lightColor - }, - [`${componentCls}-arrow`]: { - background: "transparent" - } - } - }; - }) - }; -}; -var genWireframeStyle = (token2) => { - const { - componentCls, - lineWidth, - lineType, - colorSplit, - paddingSM, - controlHeight, - fontSize, - lineHeight, - padding - } = token2; - const titlePaddingBlockDist = controlHeight - Math.round(fontSize * lineHeight); - const popoverTitlePaddingBlockTop = titlePaddingBlockDist / 2; - const popoverTitlePaddingBlockBottom = titlePaddingBlockDist / 2 - lineWidth; - const popoverPaddingHorizontal = padding; - return { - [componentCls]: { - [`${componentCls}-inner`]: { - padding: 0 - }, - [`${componentCls}-title`]: { - margin: 0, - padding: `${popoverTitlePaddingBlockTop}px ${popoverPaddingHorizontal}px ${popoverTitlePaddingBlockBottom}px`, - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}` - }, - [`${componentCls}-inner-content`]: { - padding: `${paddingSM}px ${popoverPaddingHorizontal}px` - } - } - }; -}; -var style_default9 = genComponentStyleHook("Popover", (token2) => { - const { - colorBgElevated, - colorText, - wireframe - } = token2; - const popoverToken = merge(token2, { - popoverBg: colorBgElevated, - popoverColor: colorText, - popoverPadding: 12 - // Fixed Value - }); - return [genBaseStyle4(popoverToken), genColorStyle(popoverToken), wireframe && genWireframeStyle(popoverToken), initZoomMotion(popoverToken, "zoom-big")]; -}, (_ref) => { - let { - zIndexPopupBase - } = _ref; - return { - zIndexPopup: zIndexPopupBase + 30, - width: 177 - }; -}); - -// node_modules/ant-design-vue/es/popover/index.js -var popoverProps = () => _extends(_extends({}, abstractTooltipProps_default()), { - content: anyType(), - title: anyType() -}); -var Popover = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "APopover", - inheritAttrs: false, - props: initDefaultProps_default(popoverProps(), _extends(_extends({}, tooltipDefaultProps()), { - trigger: "hover", - placement: "top", - mouseEnterDelay: 0.1, - mouseLeaveDelay: 0.1 - })), - setup(props4, _ref) { - let { - expose, - slots, - attrs - } = _ref; - const tooltipRef = ref(); - warning_default2(props4.visible === void 0, "popover", `\`visible\` will be removed in next major version, please use \`open\` instead.`); - expose({ - getPopupDomNode: () => { - var _a2, _b; - return (_b = (_a2 = tooltipRef.value) === null || _a2 === void 0 ? void 0 : _a2.getPopupDomNode) === null || _b === void 0 ? void 0 : _b.call(_a2); - } - }); - const { - prefixCls, - configProvider - } = useConfigInject_default("popover", props4); - const [wrapSSR, hashId] = style_default9(prefixCls); - const rootPrefixCls = computed(() => configProvider.getPrefixCls()); - const getOverlay = () => { - var _a2, _b; - const { - title = filterEmpty((_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots)), - content = filterEmpty((_b = slots.content) === null || _b === void 0 ? void 0 : _b.call(slots)) - } = props4; - const hasTitle = !!(Array.isArray(title) ? title.length : title); - const hasContent = !!(Array.isArray(content) ? content.length : title); - if (!hasTitle && !hasContent) return null; - return createVNode(Fragment, null, [hasTitle && createVNode("div", { - "class": `${prefixCls.value}-title` - }, [title]), createVNode("div", { - "class": `${prefixCls.value}-inner-content` - }, [content])]); - }; - return () => { - const overlayCls = classNames_default(props4.overlayClassName, hashId.value); - return wrapSSR(createVNode(tooltip_default, _objectSpread2(_objectSpread2(_objectSpread2({}, omit_default(props4, ["title", "content"])), attrs), {}, { - "prefixCls": prefixCls.value, - "ref": tooltipRef, - "overlayClassName": overlayCls, - "transitionName": getTransitionName2(rootPrefixCls.value, "zoom-big", props4.transitionName), - "data-popover-inject": true - }), { - title: getOverlay, - default: slots.default - })); - }; - } -}); -var popover_default = withInstall(Popover); - -// node_modules/ant-design-vue/es/avatar/Group.js -var groupProps = () => ({ - prefixCls: String, - maxCount: Number, - maxStyle: { - type: Object, - default: void 0 - }, - maxPopoverPlacement: { - type: String, - default: "top" - }, - maxPopoverTrigger: String, - /* - * Size of avatar, options: `large`, `small`, `default` - * or a custom number size - * */ - size: { - type: [Number, String, Object], - default: "default" - }, - shape: { - type: String, - default: "circle" - } -}); -var Group = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AAvatarGroup", - inheritAttrs: false, - props: groupProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("avatar", props4); - const groupPrefixCls = computed(() => `${prefixCls.value}-group`); - const [wrapSSR, hashId] = style_default7(prefixCls); - watchEffect(() => { - const context2 = { - size: props4.size, - shape: props4.shape - }; - useAvatarProviderContext(context2); - }); - return () => { - const { - maxPopoverPlacement = "top", - maxCount: maxCount3, - maxStyle, - maxPopoverTrigger = "hover", - shape - } = props4; - const cls = { - [groupPrefixCls.value]: true, - [`${groupPrefixCls.value}-rtl`]: direction.value === "rtl", - [`${attrs.class}`]: !!attrs.class, - [hashId.value]: true - }; - const children = getPropsSlot(slots, props4); - const childrenWithProps = flattenChildren(children).map((child, index3) => cloneElement(child, { - key: `avatar-key-${index3}` - })); - const numOfChildren = childrenWithProps.length; - if (maxCount3 && maxCount3 < numOfChildren) { - const childrenShow = childrenWithProps.slice(0, maxCount3); - const childrenHidden = childrenWithProps.slice(maxCount3, numOfChildren); - childrenShow.push(createVNode(popover_default, { - "key": "avatar-popover-key", - "content": childrenHidden, - "trigger": maxPopoverTrigger, - "placement": maxPopoverPlacement, - "overlayClassName": `${groupPrefixCls.value}-popover` - }, { - default: () => [createVNode(Avatar_default, { - "style": maxStyle, - "shape": shape - }, { - default: () => [`+${numOfChildren - maxCount3}`] - })] - })); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": cls, - "style": attrs.style - }), [childrenShow])); - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": cls, - "style": attrs.style - }), [childrenWithProps])); - }; - } -}); -var Group_default = Group; - -// node_modules/ant-design-vue/es/avatar/index.js -Avatar_default.Group = Group_default; -Avatar_default.install = function(app) { - app.component(Avatar_default.name, Avatar_default); - app.component(Group_default.name, Group_default); - return app; -}; -var avatar_default = Avatar_default; - -// node_modules/ant-design-vue/es/badge/SingleNumber.js -function UnitNumber(_ref) { - let { - prefixCls, - value, - current, - offset: offset4 = 0 - } = _ref; - let style; - if (offset4) { - style = { - position: "absolute", - top: `${offset4}00%`, - left: 0 - }; - } - return createVNode("p", { - "style": style, - "class": classNames_default(`${prefixCls}-only-unit`, { - current - }) - }, [value]); -} -function getOffset2(start, end, unit) { - let index3 = start; - let offset4 = 0; - while ((index3 + 10) % 10 !== end) { - index3 += unit; - offset4 += unit; - } - return offset4; -} -var SingleNumber_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "SingleNumber", - props: { - prefixCls: String, - value: String, - count: Number - }, - setup(props4) { - const originValue = computed(() => Number(props4.value)); - const originCount = computed(() => Math.abs(props4.count)); - const state = reactive({ - prevValue: originValue.value, - prevCount: originCount.value - }); - const onTransitionEnd = () => { - state.prevValue = originValue.value; - state.prevCount = originCount.value; - }; - const timeout = ref(); - watch(originValue, () => { - clearTimeout(timeout.value); - timeout.value = setTimeout(() => { - onTransitionEnd(); - }, 1e3); - }, { - flush: "post" - }); - onUnmounted(() => { - clearTimeout(timeout.value); - }); - return () => { - let unitNodes; - let offsetStyle = {}; - const value = originValue.value; - if (state.prevValue === value || Number.isNaN(value) || Number.isNaN(state.prevValue)) { - unitNodes = [UnitNumber(_extends(_extends({}, props4), { - current: true - }))]; - offsetStyle = { - transition: "none" - }; - } else { - unitNodes = []; - const end = value + 10; - const unitNumberList = []; - for (let index3 = value; index3 <= end; index3 += 1) { - unitNumberList.push(index3); - } - const prevIndex = unitNumberList.findIndex((n3) => n3 % 10 === state.prevValue); - unitNodes = unitNumberList.map((n3, index3) => { - const singleUnit = n3 % 10; - return UnitNumber(_extends(_extends({}, props4), { - value: singleUnit, - offset: index3 - prevIndex, - current: index3 === prevIndex - })); - }); - const unit = state.prevCount < originCount.value ? 1 : -1; - offsetStyle = { - transform: `translateY(${-getOffset2(state.prevValue, value, unit)}00%)` - }; - } - return createVNode("span", { - "class": `${props4.prefixCls}-only`, - "style": offsetStyle, - "onTransitionend": () => onTransitionEnd() - }, [unitNodes]); - }; - } -}); - -// node_modules/ant-design-vue/es/badge/ScrollNumber.js -var __rest12 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var scrollNumberProps = { - prefixCls: String, - count: vue_types_default.any, - component: String, - title: vue_types_default.any, - show: Boolean -}; -var ScrollNumber_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ScrollNumber", - inheritAttrs: false, - props: scrollNumberProps, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("scroll-number", props4); - return () => { - var _a2; - const _b = _extends(_extends({}, props4), attrs), { - prefixCls: customizePrefixCls, - count, - title, - show, - component: Tag2 = "sup", - class: className, - style - } = _b, restProps = __rest12(_b, ["prefixCls", "count", "title", "show", "component", "class", "style"]); - const newProps = _extends(_extends({}, restProps), { - style, - "data-show": props4.show, - class: classNames_default(prefixCls.value, className), - title - }); - let numberNodes = count; - if (count && Number(count) % 1 === 0) { - const numberList = String(count).split(""); - numberNodes = numberList.map((num, i3) => createVNode(SingleNumber_default, { - "prefixCls": prefixCls.value, - "count": Number(count), - "value": num, - "key": numberList.length - i3 - }, null)); - } - if (style && style.borderColor) { - newProps.style = _extends(_extends({}, style), { - boxShadow: `0 0 0 1px ${style.borderColor} inset` - }); - } - const children = filterEmpty((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - if (children && children.length) { - return cloneElement(children, { - class: classNames_default(`${prefixCls.value}-custom-component`) - }, false); - } - return createVNode(Tag2, newProps, { - default: () => [numberNodes] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/badge/style/index.js -var antStatusProcessing = new Keyframes_default("antStatusProcessing", { - "0%": { - transform: "scale(0.8)", - opacity: 0.5 - }, - "100%": { - transform: "scale(2.4)", - opacity: 0 - } -}); -var antZoomBadgeIn = new Keyframes_default("antZoomBadgeIn", { - "0%": { - transform: "scale(0) translate(50%, -50%)", - opacity: 0 - }, - "100%": { - transform: "scale(1) translate(50%, -50%)" - } -}); -var antZoomBadgeOut = new Keyframes_default("antZoomBadgeOut", { - "0%": { - transform: "scale(1) translate(50%, -50%)" - }, - "100%": { - transform: "scale(0) translate(50%, -50%)", - opacity: 0 - } -}); -var antNoWrapperZoomBadgeIn = new Keyframes_default("antNoWrapperZoomBadgeIn", { - "0%": { - transform: "scale(0)", - opacity: 0 - }, - "100%": { - transform: "scale(1)" - } -}); -var antNoWrapperZoomBadgeOut = new Keyframes_default("antNoWrapperZoomBadgeOut", { - "0%": { - transform: "scale(1)" - }, - "100%": { - transform: "scale(0)", - opacity: 0 - } -}); -var antBadgeLoadingCircle = new Keyframes_default("antBadgeLoadingCircle", { - "0%": { - transformOrigin: "50%" - }, - "100%": { - transform: "translate(50%, -50%) rotate(360deg)", - transformOrigin: "50%" - } -}); -var genSharedBadgeStyle = (token2) => { - const { - componentCls, - iconCls, - antCls, - badgeFontHeight, - badgeShadowSize, - badgeHeightSm, - motionDurationSlow, - badgeStatusSize, - marginXS, - badgeRibbonOffset - } = token2; - const numberPrefixCls = `${antCls}-scroll-number`; - const ribbonPrefixCls = `${antCls}-ribbon`; - const ribbonWrapperPrefixCls = `${antCls}-ribbon-wrapper`; - const colorPreset = genPresetColor(token2, (colorKey, _ref) => { - let { - darkColor - } = _ref; - return { - [`&${componentCls} ${componentCls}-color-${colorKey}`]: { - background: darkColor, - [`&:not(${componentCls}-count)`]: { - color: darkColor - } - } - }; - }); - const statusRibbonPreset = genPresetColor(token2, (colorKey, _ref2) => { - let { - darkColor - } = _ref2; - return { - [`&${ribbonPrefixCls}-color-${colorKey}`]: { - background: darkColor, - color: darkColor - } - }; - }); - return { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-block", - width: "fit-content", - lineHeight: 1, - [`${componentCls}-count`]: { - zIndex: token2.badgeZIndex, - minWidth: token2.badgeHeight, - height: token2.badgeHeight, - color: token2.badgeTextColor, - fontWeight: token2.badgeFontWeight, - fontSize: token2.badgeFontSize, - lineHeight: `${token2.badgeHeight}px`, - whiteSpace: "nowrap", - textAlign: "center", - background: token2.badgeColor, - borderRadius: token2.badgeHeight / 2, - boxShadow: `0 0 0 ${badgeShadowSize}px ${token2.badgeShadowColor}`, - transition: `background ${token2.motionDurationMid}`, - a: { - color: token2.badgeTextColor - }, - "a:hover": { - color: token2.badgeTextColor - }, - "a:hover &": { - background: token2.badgeColorHover - } - }, - [`${componentCls}-count-sm`]: { - minWidth: badgeHeightSm, - height: badgeHeightSm, - fontSize: token2.badgeFontSizeSm, - lineHeight: `${badgeHeightSm}px`, - borderRadius: badgeHeightSm / 2 - }, - [`${componentCls}-multiple-words`]: { - padding: `0 ${token2.paddingXS}px` - }, - [`${componentCls}-dot`]: { - zIndex: token2.badgeZIndex, - width: token2.badgeDotSize, - minWidth: token2.badgeDotSize, - height: token2.badgeDotSize, - background: token2.badgeColor, - borderRadius: "100%", - boxShadow: `0 0 0 ${badgeShadowSize}px ${token2.badgeShadowColor}` - }, - [`${componentCls}-dot${numberPrefixCls}`]: { - transition: `background ${motionDurationSlow}` - }, - [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: { - position: "absolute", - top: 0, - insetInlineEnd: 0, - transform: "translate(50%, -50%)", - transformOrigin: "100% 0%", - [`&${iconCls}-spin`]: { - animationName: antBadgeLoadingCircle, - animationDuration: "1s", - animationIterationCount: "infinite", - animationTimingFunction: "linear" - } - }, - [`&${componentCls}-status`]: { - lineHeight: "inherit", - verticalAlign: "baseline", - [`${componentCls}-status-dot`]: { - position: "relative", - top: -1, - display: "inline-block", - width: badgeStatusSize, - height: badgeStatusSize, - verticalAlign: "middle", - borderRadius: "50%" - }, - [`${componentCls}-status-success`]: { - backgroundColor: token2.colorSuccess - }, - [`${componentCls}-status-processing`]: { - overflow: "visible", - color: token2.colorPrimary, - backgroundColor: token2.colorPrimary, - "&::after": { - position: "absolute", - top: 0, - insetInlineStart: 0, - width: "100%", - height: "100%", - borderWidth: badgeShadowSize, - borderStyle: "solid", - borderColor: "inherit", - borderRadius: "50%", - animationName: antStatusProcessing, - animationDuration: token2.badgeProcessingDuration, - animationIterationCount: "infinite", - animationTimingFunction: "ease-in-out", - content: '""' - } - }, - [`${componentCls}-status-default`]: { - backgroundColor: token2.colorTextPlaceholder - }, - [`${componentCls}-status-error`]: { - backgroundColor: token2.colorError - }, - [`${componentCls}-status-warning`]: { - backgroundColor: token2.colorWarning - }, - [`${componentCls}-status-text`]: { - marginInlineStart: marginXS, - color: token2.colorText, - fontSize: token2.fontSize - } - } - }), colorPreset), { - [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: { - animationName: antZoomBadgeIn, - animationDuration: token2.motionDurationSlow, - animationTimingFunction: token2.motionEaseOutBack, - animationFillMode: "both" - }, - [`${componentCls}-zoom-leave`]: { - animationName: antZoomBadgeOut, - animationDuration: token2.motionDurationSlow, - animationTimingFunction: token2.motionEaseOutBack, - animationFillMode: "both" - }, - [`&${componentCls}-not-a-wrapper`]: { - [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: { - animationName: antNoWrapperZoomBadgeIn, - animationDuration: token2.motionDurationSlow, - animationTimingFunction: token2.motionEaseOutBack - }, - [`${componentCls}-zoom-leave`]: { - animationName: antNoWrapperZoomBadgeOut, - animationDuration: token2.motionDurationSlow, - animationTimingFunction: token2.motionEaseOutBack - }, - [`&:not(${componentCls}-status)`]: { - verticalAlign: "middle" - }, - [`${numberPrefixCls}-custom-component, ${componentCls}-count`]: { - transform: "none" - }, - [`${numberPrefixCls}-custom-component, ${numberPrefixCls}`]: { - position: "relative", - top: "auto", - display: "block", - transformOrigin: "50% 50%" - } - }, - [`${numberPrefixCls}`]: { - overflow: "hidden", - [`${numberPrefixCls}-only`]: { - position: "relative", - display: "inline-block", - height: token2.badgeHeight, - transition: `all ${token2.motionDurationSlow} ${token2.motionEaseOutBack}`, - WebkitTransformStyle: "preserve-3d", - WebkitBackfaceVisibility: "hidden", - [`> p${numberPrefixCls}-only-unit`]: { - height: token2.badgeHeight, - margin: 0, - WebkitTransformStyle: "preserve-3d", - WebkitBackfaceVisibility: "hidden" - } - }, - [`${numberPrefixCls}-symbol`]: { - verticalAlign: "top" - } - }, - // ====================== RTL ======================= - "&-rtl": { - direction: "rtl", - [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: { - transform: "translate(-50%, -50%)" - } - } - }), - [`${ribbonWrapperPrefixCls}`]: { - position: "relative" - }, - [`${ribbonPrefixCls}`]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: marginXS, - padding: `0 ${token2.paddingXS}px`, - color: token2.colorPrimary, - lineHeight: `${badgeFontHeight}px`, - whiteSpace: "nowrap", - backgroundColor: token2.colorPrimary, - borderRadius: token2.borderRadiusSM, - [`${ribbonPrefixCls}-text`]: { - color: token2.colorTextLightSolid - }, - [`${ribbonPrefixCls}-corner`]: { - position: "absolute", - top: "100%", - width: badgeRibbonOffset, - height: badgeRibbonOffset, - color: "currentcolor", - border: `${badgeRibbonOffset / 2}px solid`, - transform: token2.badgeRibbonCornerTransform, - transformOrigin: "top", - filter: token2.badgeRibbonCornerFilter - } - }), statusRibbonPreset), { - [`&${ribbonPrefixCls}-placement-end`]: { - insetInlineEnd: -badgeRibbonOffset, - borderEndEndRadius: 0, - [`${ribbonPrefixCls}-corner`]: { - insetInlineEnd: 0, - borderInlineEndColor: "transparent", - borderBlockEndColor: "transparent" - } - }, - [`&${ribbonPrefixCls}-placement-start`]: { - insetInlineStart: -badgeRibbonOffset, - borderEndStartRadius: 0, - [`${ribbonPrefixCls}-corner`]: { - insetInlineStart: 0, - borderBlockEndColor: "transparent", - borderInlineStartColor: "transparent" - } - }, - // ====================== RTL ======================= - "&-rtl": { - direction: "rtl" - } - }) - }; -}; -var style_default10 = genComponentStyleHook("Badge", (token2) => { - const { - fontSize, - lineHeight, - fontSizeSM, - lineWidth, - marginXS, - colorBorderBg - } = token2; - const badgeFontHeight = Math.round(fontSize * lineHeight); - const badgeShadowSize = lineWidth; - const badgeZIndex = "auto"; - const badgeHeight = badgeFontHeight - 2 * badgeShadowSize; - const badgeTextColor = token2.colorBgContainer; - const badgeFontWeight = "normal"; - const badgeFontSize = fontSizeSM; - const badgeColor = token2.colorError; - const badgeColorHover = token2.colorErrorHover; - const badgeHeightSm = fontSize; - const badgeDotSize = fontSizeSM / 2; - const badgeFontSizeSm = fontSizeSM; - const badgeStatusSize = fontSizeSM / 2; - const badgeToken = merge(token2, { - badgeFontHeight, - badgeShadowSize, - badgeZIndex, - badgeHeight, - badgeTextColor, - badgeFontWeight, - badgeFontSize, - badgeColor, - badgeColorHover, - badgeShadowColor: colorBorderBg, - badgeHeightSm, - badgeDotSize, - badgeFontSizeSm, - badgeStatusSize, - badgeProcessingDuration: "1.2s", - badgeRibbonOffset: marginXS, - // Follow token just by Design. Not related with token - badgeRibbonCornerTransform: "scaleY(0.75)", - badgeRibbonCornerFilter: `brightness(75%)` - }); - return [genSharedBadgeStyle(badgeToken)]; -}); - -// node_modules/ant-design-vue/es/badge/Ribbon.js -var __rest13 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var ribbonProps = () => ({ - prefix: String, - color: { - type: String - }, - text: vue_types_default.any, - placement: { - type: String, - default: "end" - } -}); -var Ribbon_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABadgeRibbon", - inheritAttrs: false, - props: ribbonProps(), - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("ribbon", props4); - const [wrapSSR, hashId] = style_default10(prefixCls); - const colorInPreset = computed(() => isPresetColor(props4.color, false)); - const ribbonCls = computed(() => [prefixCls.value, `${prefixCls.value}-placement-${props4.placement}`, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-color-${props4.color}`]: colorInPreset.value - }]); - return () => { - var _a2, _b; - const { - class: className, - style - } = attrs, restAttrs = __rest13(attrs, ["class", "style"]); - const colorStyle = {}; - const cornerColorStyle = {}; - if (props4.color && !colorInPreset.value) { - colorStyle.background = props4.color; - cornerColorStyle.color = props4.color; - } - return wrapSSR(createVNode("div", _objectSpread2({ - "class": `${prefixCls.value}-wrapper ${hashId.value}` - }, restAttrs), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots), createVNode("div", { - "class": [ribbonCls.value, className, hashId.value], - "style": _extends(_extends({}, colorStyle), style) - }, [createVNode("span", { - "class": `${prefixCls.value}-text` - }, [props4.text || ((_b = slots.text) === null || _b === void 0 ? void 0 : _b.call(slots))]), createVNode("div", { - "class": `${prefixCls.value}-corner`, - "style": cornerColorStyle - }, null)])])); - }; - } -}); - -// node_modules/ant-design-vue/es/_util/isNumeric.js -var isNumeric = (value) => { - return !isNaN(parseFloat(value)) && isFinite(value); -}; -var isNumeric_default = isNumeric; - -// node_modules/ant-design-vue/es/badge/Badge.js -var badgeProps = () => ({ - /** Number to show in badge */ - count: vue_types_default.any.def(null), - showZero: { - type: Boolean, - default: void 0 - }, - /** Max count to show */ - overflowCount: { - type: Number, - default: 99 - }, - /** whether to show red dot without number */ - dot: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - scrollNumberPrefixCls: String, - status: { - type: String - }, - size: { - type: String, - default: "default" - }, - color: String, - text: vue_types_default.any, - offset: Array, - numberStyle: { - type: Object, - default: void 0 - }, - title: String -}); -var Badge_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABadge", - Ribbon: Ribbon_default, - inheritAttrs: false, - props: badgeProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("badge", props4); - const [wrapSSR, hashId] = style_default10(prefixCls); - const numberedDisplayCount = computed(() => { - return props4.count > props4.overflowCount ? `${props4.overflowCount}+` : props4.count; - }); - const isZero = computed(() => numberedDisplayCount.value === "0" || numberedDisplayCount.value === 0); - const ignoreCount = computed(() => props4.count === null || isZero.value && !props4.showZero); - const hasStatus = computed(() => (props4.status !== null && props4.status !== void 0 || props4.color !== null && props4.color !== void 0) && ignoreCount.value); - const showAsDot = computed(() => props4.dot && !isZero.value); - const mergedCount = computed(() => showAsDot.value ? "" : numberedDisplayCount.value); - const isHidden = computed(() => { - const isEmpty3 = mergedCount.value === null || mergedCount.value === void 0 || mergedCount.value === ""; - return (isEmpty3 || isZero.value && !props4.showZero) && !showAsDot.value; - }); - const livingCount = ref(props4.count); - const displayCount = ref(mergedCount.value); - const isDotRef = ref(showAsDot.value); - watch([() => props4.count, mergedCount, showAsDot], () => { - if (!isHidden.value) { - livingCount.value = props4.count; - displayCount.value = mergedCount.value; - isDotRef.value = showAsDot.value; - } - }, { - immediate: true - }); - const isInternalColor = computed(() => isPresetColor(props4.color, false)); - const statusCls = computed(() => ({ - [`${prefixCls.value}-status-dot`]: hasStatus.value, - [`${prefixCls.value}-status-${props4.status}`]: !!props4.status, - [`${prefixCls.value}-color-${props4.color}`]: isInternalColor.value - })); - const statusStyle = computed(() => { - if (props4.color && !isInternalColor.value) { - return { - background: props4.color, - color: props4.color - }; - } else { - return {}; - } - }); - const scrollNumberCls = computed(() => ({ - [`${prefixCls.value}-dot`]: isDotRef.value, - [`${prefixCls.value}-count`]: !isDotRef.value, - [`${prefixCls.value}-count-sm`]: props4.size === "small", - [`${prefixCls.value}-multiple-words`]: !isDotRef.value && displayCount.value && displayCount.value.toString().length > 1, - [`${prefixCls.value}-status-${props4.status}`]: !!props4.status, - [`${prefixCls.value}-color-${props4.color}`]: isInternalColor.value - })); - return () => { - var _a2, _b; - const { - offset: offset4, - title, - color - } = props4; - const style = attrs.style; - const text = getPropsSlot(slots, props4, "text"); - const pre = prefixCls.value; - const count = livingCount.value; - let children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - children = children.length ? children : null; - const visible = !!(!isHidden.value || slots.count); - const mergedStyle = (() => { - if (!offset4) { - return _extends({}, style); - } - const offsetStyle = { - marginTop: isNumeric_default(offset4[1]) ? `${offset4[1]}px` : offset4[1] - }; - if (direction.value === "rtl") { - offsetStyle.left = `${parseInt(offset4[0], 10)}px`; - } else { - offsetStyle.right = `${-parseInt(offset4[0], 10)}px`; - } - return _extends(_extends({}, offsetStyle), style); - })(); - const titleNode = title !== null && title !== void 0 ? title : typeof count === "string" || typeof count === "number" ? count : void 0; - const statusTextNode = visible || !text ? null : createVNode("span", { - "class": `${pre}-status-text` - }, [text]); - const displayNode = typeof count === "object" || count === void 0 && slots.count ? cloneElement(count !== null && count !== void 0 ? count : (_b = slots.count) === null || _b === void 0 ? void 0 : _b.call(slots), { - style: mergedStyle - }, false) : null; - const badgeClassName = classNames_default(pre, { - [`${pre}-status`]: hasStatus.value, - [`${pre}-not-a-wrapper`]: !children, - [`${pre}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - if (!children && hasStatus.value) { - const statusTextColor = mergedStyle.color; - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": badgeClassName, - "style": mergedStyle - }), [createVNode("span", { - "class": statusCls.value, - "style": statusStyle.value - }, null), createVNode("span", { - "style": { - color: statusTextColor - }, - "class": `${pre}-status-text` - }, [text])])); - } - const transitionProps = getTransitionProps(children ? `${pre}-zoom` : "", { - appear: false - }); - let scrollNumberStyle = _extends(_extends({}, mergedStyle), props4.numberStyle); - if (color && !isInternalColor.value) { - scrollNumberStyle = scrollNumberStyle || {}; - scrollNumberStyle.background = color; - } - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": badgeClassName - }), [children, createVNode(Transition, transitionProps, { - default: () => [withDirectives(createVNode(ScrollNumber_default, { - "prefixCls": props4.scrollNumberPrefixCls, - "show": visible, - "class": scrollNumberCls.value, - "count": displayCount.value, - "title": titleNode, - "style": scrollNumberStyle, - "key": "scrollNumber" - }, { - default: () => [displayNode] - }), [[vShow, visible]])] - }), statusTextNode])); - }; - } -}); - -// node_modules/ant-design-vue/es/badge/index.js -Badge_default.install = function(app) { - app.component(Badge_default.name, Badge_default); - app.component(Ribbon_default.name, Ribbon_default); - return app; -}; -var badge_default = Badge_default; - -// node_modules/ant-design-vue/es/vc-dropdown/placements.js -var autoAdjustOverflow2 = { - adjustX: 1, - adjustY: 1 -}; -var targetOffset3 = [0, 0]; -var placements2 = { - topLeft: { - points: ["bl", "tl"], - overflow: autoAdjustOverflow2, - offset: [0, -4], - targetOffset: targetOffset3 - }, - topCenter: { - points: ["bc", "tc"], - overflow: autoAdjustOverflow2, - offset: [0, -4], - targetOffset: targetOffset3 - }, - topRight: { - points: ["br", "tr"], - overflow: autoAdjustOverflow2, - offset: [0, -4], - targetOffset: targetOffset3 - }, - bottomLeft: { - points: ["tl", "bl"], - overflow: autoAdjustOverflow2, - offset: [0, 4], - targetOffset: targetOffset3 - }, - bottomCenter: { - points: ["tc", "bc"], - overflow: autoAdjustOverflow2, - offset: [0, 4], - targetOffset: targetOffset3 - }, - bottomRight: { - points: ["tr", "br"], - overflow: autoAdjustOverflow2, - offset: [0, 4], - targetOffset: targetOffset3 - } -}; -var placements_default = placements2; - -// node_modules/ant-design-vue/es/vc-dropdown/Dropdown.js -var __rest14 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Dropdown_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - props: { - minOverlayWidthMatchTrigger: { - type: Boolean, - default: void 0 - }, - arrow: { - type: Boolean, - default: false - }, - prefixCls: vue_types_default.string.def("rc-dropdown"), - transitionName: String, - overlayClassName: vue_types_default.string.def(""), - openClassName: String, - animation: vue_types_default.any, - align: vue_types_default.object, - overlayStyle: { - type: Object, - default: void 0 - }, - placement: vue_types_default.string.def("bottomLeft"), - overlay: vue_types_default.any, - trigger: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.arrayOf(vue_types_default.string)]).def("hover"), - alignPoint: { - type: Boolean, - default: void 0 - }, - showAction: vue_types_default.array, - hideAction: vue_types_default.array, - getPopupContainer: Function, - visible: { - type: Boolean, - default: void 0 - }, - defaultVisible: { - type: Boolean, - default: false - }, - mouseEnterDelay: vue_types_default.number.def(0.15), - mouseLeaveDelay: vue_types_default.number.def(0.1) - }, - emits: ["visibleChange", "overlayClick"], - setup(props4, _ref) { - let { - slots, - emit, - expose - } = _ref; - const triggerVisible = ref(!!props4.visible); - watch(() => props4.visible, (val) => { - if (val !== void 0) { - triggerVisible.value = val; - } - }); - const triggerRef2 = ref(); - expose({ - triggerRef: triggerRef2 - }); - const onClick = (e3) => { - if (props4.visible === void 0) { - triggerVisible.value = false; - } - emit("overlayClick", e3); - }; - const onVisibleChange = (visible) => { - if (props4.visible === void 0) { - triggerVisible.value = visible; - } - emit("visibleChange", visible); - }; - const getMenuElement = () => { - var _a2; - const overlayElement = (_a2 = slots.overlay) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - const extraOverlayProps = { - prefixCls: `${props4.prefixCls}-menu`, - onClick - }; - return createVNode(Fragment, { - "key": skipFlattenKey - }, [props4.arrow && createVNode("div", { - "class": `${props4.prefixCls}-arrow` - }, null), cloneElement(overlayElement, extraOverlayProps, false)]); - }; - const minOverlayWidthMatchTrigger = computed(() => { - const { - minOverlayWidthMatchTrigger: matchTrigger = !props4.alignPoint - } = props4; - return matchTrigger; - }); - const renderChildren2 = () => { - var _a2; - const children = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - return triggerVisible.value && children ? cloneElement(children[0], { - class: props4.openClassName || `${props4.prefixCls}-open` - }, false) : children; - }; - const triggerHideAction = computed(() => { - if (!props4.hideAction && props4.trigger.indexOf("contextmenu") !== -1) { - return ["click"]; - } - return props4.hideAction; - }); - return () => { - const { - prefixCls, - arrow, - showAction, - overlayStyle, - trigger: trigger2, - placement, - align, - getPopupContainer, - transitionName: transitionName2, - animation, - overlayClassName - } = props4, otherProps = __rest14(props4, ["prefixCls", "arrow", "showAction", "overlayStyle", "trigger", "placement", "align", "getPopupContainer", "transitionName", "animation", "overlayClassName"]); - return createVNode(vc_trigger_default, _objectSpread2(_objectSpread2({}, otherProps), {}, { - "prefixCls": prefixCls, - "ref": triggerRef2, - "popupClassName": classNames_default(overlayClassName, { - [`${prefixCls}-show-arrow`]: arrow - }), - "popupStyle": overlayStyle, - "builtinPlacements": placements_default, - "action": trigger2, - "showAction": showAction, - "hideAction": triggerHideAction.value || [], - "popupPlacement": placement, - "popupAlign": align, - "popupTransitionName": transitionName2, - "popupAnimation": animation, - "popupVisible": triggerVisible.value, - "stretch": minOverlayWidthMatchTrigger.value ? "minWidth" : "", - "onPopupVisibleChange": onVisibleChange, - "getPopupContainer": getPopupContainer - }), { - popup: getMenuElement, - default: renderChildren2 - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-dropdown/index.js -var vc_dropdown_default = Dropdown_default; - -// node_modules/ant-design-vue/es/_util/wave/style.js -var genWaveStyle = (token2) => { - const { - componentCls, - colorPrimary - } = token2; - return { - [componentCls]: { - position: "absolute", - background: "transparent", - pointerEvents: "none", - boxSizing: "border-box", - color: `var(--wave-color, ${colorPrimary})`, - boxShadow: `0 0 0 0 currentcolor`, - opacity: 0.2, - // =================== Motion =================== - "&.wave-motion-appear": { - transition: [`box-shadow 0.4s ${token2.motionEaseOutCirc}`, `opacity 2s ${token2.motionEaseOutCirc}`].join(","), - "&-active": { - boxShadow: `0 0 0 6px currentcolor`, - opacity: 0 - } - } - } - }; -}; -var style_default11 = genComponentStyleHook("Wave", (token2) => [genWaveStyle(token2)]); - -// node_modules/ant-design-vue/es/_util/wave/util.js -function isNotGrey(color) { - const match3 = (color || "").match(/rgba?\((\d*), (\d*), (\d*)(, [\d.]*)?\)/); - if (match3 && match3[1] && match3[2] && match3[3]) { - return !(match3[1] === match3[2] && match3[2] === match3[3]); - } - return true; -} -function isValidWaveColor(color) { - return color && color !== "#fff" && color !== "#ffffff" && color !== "rgb(255, 255, 255)" && color !== "rgba(255, 255, 255, 1)" && isNotGrey(color) && !/rgba\((?:\d*, ){3}0\)/.test(color) && // any transparent rgba color - color !== "transparent"; -} -function getTargetWaveColor(node2) { - const { - borderTopColor, - borderColor, - backgroundColor - } = getComputedStyle(node2); - if (isValidWaveColor(borderTopColor)) { - return borderTopColor; - } - if (isValidWaveColor(borderColor)) { - return borderColor; - } - if (isValidWaveColor(backgroundColor)) { - return backgroundColor; - } - return null; -} - -// node_modules/ant-design-vue/es/_util/wave/WaveEffect.js -function validateNum(value) { - return Number.isNaN(value) ? 0 : value; -} -var WaveEffect = defineComponent({ - props: { - target: objectType(), - className: String - }, - setup(props4) { - const divRef = shallowRef(null); - const [color, setWaveColor] = useState(null); - const [borderRadius, setBorderRadius] = useState([]); - const [left, setLeft] = useState(0); - const [top, setTop] = useState(0); - const [width, setWidth] = useState(0); - const [height, setHeight] = useState(0); - const [enabled, setEnabled] = useState(false); - function syncPos() { - const { - target - } = props4; - const nodeStyle = getComputedStyle(target); - setWaveColor(getTargetWaveColor(target)); - const isStatic = nodeStyle.position === "static"; - const { - borderLeftWidth, - borderTopWidth - } = nodeStyle; - setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth))); - setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth))); - setWidth(target.offsetWidth); - setHeight(target.offsetHeight); - const { - borderTopLeftRadius, - borderTopRightRadius, - borderBottomLeftRadius, - borderBottomRightRadius - } = nodeStyle; - setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map((radius) => validateNum(parseFloat(radius)))); - } - let resizeObserver; - let rafId; - let timeoutId; - const clear = () => { - clearTimeout(timeoutId); - wrapperRaf.cancel(rafId); - resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect(); - }; - const removeDom = () => { - var _a2; - const holder = (_a2 = divRef.value) === null || _a2 === void 0 ? void 0 : _a2.parentElement; - if (holder) { - render(null, holder); - if (holder.parentElement) { - holder.parentElement.removeChild(holder); - } - } - }; - onMounted(() => { - clear(); - timeoutId = setTimeout(() => { - removeDom(); - }, 5e3); - const { - target - } = props4; - if (target) { - rafId = wrapperRaf(() => { - syncPos(); - setEnabled(true); - }); - if (typeof ResizeObserver !== "undefined") { - resizeObserver = new ResizeObserver(syncPos); - resizeObserver.observe(target); - } - } - }); - onBeforeUnmount(() => { - clear(); - }); - const onTransitionend = (e3) => { - if (e3.propertyName === "opacity") { - removeDom(); - } - }; - return () => { - if (!enabled.value) { - return null; - } - const waveStyle = { - left: `${left.value}px`, - top: `${top.value}px`, - width: `${width.value}px`, - height: `${height.value}px`, - borderRadius: borderRadius.value.map((radius) => `${radius}px`).join(" ") - }; - if (color) { - waveStyle["--wave-color"] = color.value; - } - return createVNode(Transition, { - "appear": true, - "name": "wave-motion", - "appearFromClass": "wave-motion-appear", - "appearActiveClass": "wave-motion-appear", - "appearToClass": "wave-motion-appear wave-motion-appear-active" - }, { - default: () => [createVNode("div", { - "ref": divRef, - "class": props4.className, - "style": waveStyle, - "onTransitionend": onTransitionend - }, null)] - }); - }; - } -}); -function showWaveEffect(node2, className) { - const holder = document.createElement("div"); - holder.style.position = "absolute"; - holder.style.left = `0px`; - holder.style.top = `0px`; - node2 === null || node2 === void 0 ? void 0 : node2.insertBefore(holder, node2 === null || node2 === void 0 ? void 0 : node2.firstChild); - render(createVNode(WaveEffect, { - "target": node2, - "className": className - }, null), holder); -} -var WaveEffect_default = showWaveEffect; - -// node_modules/ant-design-vue/es/_util/wave/useWave.js -function useWave(instance, className, wave) { - function showWave() { - var _a2; - const node2 = findDOMNode(instance); - if (((_a2 = wave === null || wave === void 0 ? void 0 : wave.value) === null || _a2 === void 0 ? void 0 : _a2.disabled) || !node2) { - return; - } - WaveEffect_default(node2, className.value); - } - return showWave; -} - -// node_modules/ant-design-vue/es/_util/wave/index.js -var wave_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Wave", - props: { - disabled: Boolean - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const instance = getCurrentInstance(); - const { - prefixCls, - wave - } = useConfigInject_default("wave", props4); - const [, hashId] = style_default11(prefixCls); - const showWave = useWave(instance, computed(() => classNames_default(prefixCls.value, hashId.value)), wave); - let onClick; - const clear = () => { - const node2 = findDOMNode(instance); - node2.removeEventListener("click", onClick, true); - }; - onMounted(() => { - watch(() => props4.disabled, () => { - clear(); - nextTick(() => { - const node2 = findDOMNode(instance); - node2 === null || node2 === void 0 ? void 0 : node2.removeEventListener("click", onClick, true); - if (!node2 || node2.nodeType !== 1 || props4.disabled) { - return; - } - onClick = (e3) => { - if (e3.target.tagName === "INPUT" || !isVisible_default(e3.target) || // No need wave - !node2.getAttribute || node2.getAttribute("disabled") || node2.disabled || node2.className.includes("disabled") || node2.className.includes("-leave")) { - return; - } - showWave(); - }; - node2.addEventListener("click", onClick, true); - }); - }, { - immediate: true, - flush: "post" - }); - }); - onBeforeUnmount(() => { - clear(); - }); - return () => { - var _a2; - const children = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)[0]; - return children; - }; - } -}); - -// node_modules/ant-design-vue/es/button/buttonTypes.js -function convertLegacyProps(type4) { - if (type4 === "danger") { - return { - danger: true - }; - } - return { - type: type4 - }; -} -var buttonProps = () => ({ - prefixCls: String, - type: String, - htmlType: { - type: String, - default: "button" - }, - shape: { - type: String - }, - size: { - type: String - }, - loading: { - type: [Boolean, Object], - default: () => false - }, - disabled: { - type: Boolean, - default: void 0 - }, - ghost: { - type: Boolean, - default: void 0 - }, - block: { - type: Boolean, - default: void 0 - }, - danger: { - type: Boolean, - default: void 0 - }, - icon: vue_types_default.any, - href: String, - target: String, - title: String, - onClick: eventType(), - onMousedown: eventType() -}); -var buttonTypes_default = buttonProps; - -// node_modules/ant-design-vue/es/button/LoadingIcon.js -var getCollapsedWidth = (node2) => { - if (node2) { - node2.style.width = "0px"; - node2.style.opacity = "0"; - node2.style.transform = "scale(0)"; - } -}; -var getRealWidth = (node2) => { - nextTick(() => { - if (node2) { - node2.style.width = `${node2.scrollWidth}px`; - node2.style.opacity = "1"; - node2.style.transform = "scale(1)"; - } - }); -}; -var resetStyle = (node2) => { - if (node2 && node2.style) { - node2.style.width = null; - node2.style.opacity = null; - node2.style.transform = null; - } -}; -var LoadingIcon_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "LoadingIcon", - props: { - prefixCls: String, - loading: [Boolean, Object], - existIcon: Boolean - }, - setup(props4) { - return () => { - const { - existIcon, - prefixCls, - loading - } = props4; - if (existIcon) { - return createVNode("span", { - "class": `${prefixCls}-loading-icon` - }, [createVNode(LoadingOutlined_default, null, null)]); - } - const visible = !!loading; - return createVNode(transition_default, { - "name": `${prefixCls}-loading-icon-motion`, - "onBeforeEnter": getCollapsedWidth, - "onEnter": getRealWidth, - "onAfterEnter": resetStyle, - "onBeforeLeave": getRealWidth, - "onLeave": (node2) => { - setTimeout(() => { - getCollapsedWidth(node2); - }); - }, - "onAfterLeave": resetStyle - }, { - default: () => [visible ? createVNode("span", { - "class": `${prefixCls}-loading-icon` - }, [createVNode(LoadingOutlined_default, null, null)]) : null] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/button/style/group.js -var genButtonBorderStyle = (buttonTypeCls, borderColor) => ({ - // Border - [`> span, > ${buttonTypeCls}`]: { - "&:not(:last-child)": { - [`&, & > ${buttonTypeCls}`]: { - "&:not(:disabled)": { - borderInlineEndColor: borderColor - } - } - }, - "&:not(:first-child)": { - [`&, & > ${buttonTypeCls}`]: { - "&:not(:disabled)": { - borderInlineStartColor: borderColor - } - } - } - } -}); -var genGroupStyle2 = (token2) => { - const { - componentCls, - fontSize, - lineWidth, - colorPrimaryHover, - colorErrorHover - } = token2; - return { - [`${componentCls}-group`]: [ - { - position: "relative", - display: "inline-flex", - // Border - [`> span, > ${componentCls}`]: { - "&:not(:last-child)": { - [`&, & > ${componentCls}`]: { - borderStartEndRadius: 0, - borderEndEndRadius: 0 - } - }, - "&:not(:first-child)": { - marginInlineStart: -lineWidth, - [`&, & > ${componentCls}`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0 - } - } - }, - [componentCls]: { - position: "relative", - zIndex: 1, - [`&:hover, - &:focus, - &:active`]: { - zIndex: 2 - }, - "&[disabled]": { - zIndex: 0 - } - }, - [`${componentCls}-icon-only`]: { - fontSize - } - }, - // Border Color - genButtonBorderStyle(`${componentCls}-primary`, colorPrimaryHover), - genButtonBorderStyle(`${componentCls}-danger`, colorErrorHover) - ] - }; -}; -var group_default = genGroupStyle2; - -// node_modules/ant-design-vue/es/style/compact-item-vertical.js -function compactItemVerticalBorder(token2, parentCls) { - return { - // border collapse - [`&-item:not(${parentCls}-last-item)`]: { - marginBottom: -token2.lineWidth - }, - "&-item": { - "&:hover,&:focus,&:active": { - zIndex: 2 - }, - "&[disabled]": { - zIndex: 0 - } - } - }; -} -function compactItemBorderVerticalRadius(prefixCls, parentCls) { - return { - [`&-item:not(${parentCls}-first-item):not(${parentCls}-last-item)`]: { - borderRadius: 0 - }, - [`&-item${parentCls}-first-item:not(${parentCls}-last-item)`]: { - [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: { - borderEndEndRadius: 0, - borderEndStartRadius: 0 - } - }, - [`&-item${parentCls}-last-item:not(${parentCls}-first-item)`]: { - [`&, &${prefixCls}-sm, &${prefixCls}-lg`]: { - borderStartStartRadius: 0, - borderStartEndRadius: 0 - } - } - }; -} -function genCompactItemVerticalStyle(token2) { - const compactCls = `${token2.componentCls}-compact-vertical`; - return { - [compactCls]: _extends(_extends({}, compactItemVerticalBorder(token2, compactCls)), compactItemBorderVerticalRadius(token2.componentCls, compactCls)) - }; -} - -// node_modules/ant-design-vue/es/button/style/index.js -var genSharedButtonStyle = (token2) => { - const { - componentCls, - iconCls - } = token2; - return { - [componentCls]: { - outline: "none", - position: "relative", - display: "inline-block", - fontWeight: 400, - whiteSpace: "nowrap", - textAlign: "center", - backgroundImage: "none", - backgroundColor: "transparent", - border: `${token2.lineWidth}px ${token2.lineType} transparent`, - cursor: "pointer", - transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`, - userSelect: "none", - touchAction: "manipulation", - lineHeight: token2.lineHeight, - color: token2.colorText, - "> span": { - display: "inline-block" - }, - // Leave a space between icon and text. - [`> ${iconCls} + span, > span + ${iconCls}`]: { - marginInlineStart: token2.marginXS - }, - "> a": { - color: "currentColor" - }, - "&:not(:disabled)": _extends({}, genFocusStyle(token2)), - // make `btn-icon-only` not too narrow - [`&-icon-only${componentCls}-compact-item`]: { - flex: "none" - }, - // Special styles for Primary Button - [`&-compact-item${componentCls}-primary`]: { - [`&:not([disabled]) + ${componentCls}-compact-item${componentCls}-primary:not([disabled])`]: { - position: "relative", - "&:before": { - position: "absolute", - top: -token2.lineWidth, - insetInlineStart: -token2.lineWidth, - display: "inline-block", - width: token2.lineWidth, - height: `calc(100% + ${token2.lineWidth * 2}px)`, - backgroundColor: token2.colorPrimaryHover, - content: '""' - } - } - }, - // Special styles for Primary Button - "&-compact-vertical-item": { - [`&${componentCls}-primary`]: { - [`&:not([disabled]) + ${componentCls}-compact-vertical-item${componentCls}-primary:not([disabled])`]: { - position: "relative", - "&:before": { - position: "absolute", - top: -token2.lineWidth, - insetInlineStart: -token2.lineWidth, - display: "inline-block", - width: `calc(100% + ${token2.lineWidth * 2}px)`, - height: token2.lineWidth, - backgroundColor: token2.colorPrimaryHover, - content: '""' - } - } - } - } - } - }; -}; -var genHoverActiveButtonStyle = (hoverStyle, activeStyle) => ({ - "&:not(:disabled)": { - "&:hover": hoverStyle, - "&:active": activeStyle - } -}); -var genCircleButtonStyle = (token2) => ({ - minWidth: token2.controlHeight, - paddingInlineStart: 0, - paddingInlineEnd: 0, - borderRadius: "50%" -}); -var genRoundButtonStyle = (token2) => ({ - borderRadius: token2.controlHeight, - paddingInlineStart: token2.controlHeight / 2, - paddingInlineEnd: token2.controlHeight / 2 -}); -var genDisabledStyle = (token2) => ({ - cursor: "not-allowed", - borderColor: token2.colorBorder, - color: token2.colorTextDisabled, - backgroundColor: token2.colorBgContainerDisabled, - boxShadow: "none" -}); -var genGhostButtonStyle = (btnCls, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) => ({ - [`&${btnCls}-background-ghost`]: _extends(_extends({ - color: textColor || void 0, - backgroundColor: "transparent", - borderColor: borderColor || void 0, - boxShadow: "none" - }, genHoverActiveButtonStyle(_extends({ - backgroundColor: "transparent" - }, hoverStyle), _extends({ - backgroundColor: "transparent" - }, activeStyle))), { - "&:disabled": { - cursor: "not-allowed", - color: textColorDisabled || void 0, - borderColor: borderColorDisabled || void 0 - } - }) -}); -var genSolidDisabledButtonStyle = (token2) => ({ - "&:disabled": _extends({}, genDisabledStyle(token2)) -}); -var genSolidButtonStyle = (token2) => _extends({}, genSolidDisabledButtonStyle(token2)); -var genPureDisabledButtonStyle = (token2) => ({ - "&:disabled": { - cursor: "not-allowed", - color: token2.colorTextDisabled - } -}); -var genDefaultButtonStyle = (token2) => _extends(_extends(_extends(_extends(_extends({}, genSolidButtonStyle(token2)), { - backgroundColor: token2.colorBgContainer, - borderColor: token2.colorBorder, - boxShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlTmpOutline}` -}), genHoverActiveButtonStyle({ - color: token2.colorPrimaryHover, - borderColor: token2.colorPrimaryHover -}, { - color: token2.colorPrimaryActive, - borderColor: token2.colorPrimaryActive -})), genGhostButtonStyle(token2.componentCls, token2.colorBgContainer, token2.colorBgContainer, token2.colorTextDisabled, token2.colorBorder)), { - [`&${token2.componentCls}-dangerous`]: _extends(_extends(_extends({ - color: token2.colorError, - borderColor: token2.colorError - }, genHoverActiveButtonStyle({ - color: token2.colorErrorHover, - borderColor: token2.colorErrorBorderHover - }, { - color: token2.colorErrorActive, - borderColor: token2.colorErrorActive - })), genGhostButtonStyle(token2.componentCls, token2.colorError, token2.colorError, token2.colorTextDisabled, token2.colorBorder)), genSolidDisabledButtonStyle(token2)) -}); -var genPrimaryButtonStyle = (token2) => _extends(_extends(_extends(_extends(_extends({}, genSolidButtonStyle(token2)), { - color: token2.colorTextLightSolid, - backgroundColor: token2.colorPrimary, - boxShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.controlOutline}` -}), genHoverActiveButtonStyle({ - color: token2.colorTextLightSolid, - backgroundColor: token2.colorPrimaryHover -}, { - color: token2.colorTextLightSolid, - backgroundColor: token2.colorPrimaryActive -})), genGhostButtonStyle(token2.componentCls, token2.colorPrimary, token2.colorPrimary, token2.colorTextDisabled, token2.colorBorder, { - color: token2.colorPrimaryHover, - borderColor: token2.colorPrimaryHover -}, { - color: token2.colorPrimaryActive, - borderColor: token2.colorPrimaryActive -})), { - [`&${token2.componentCls}-dangerous`]: _extends(_extends(_extends({ - backgroundColor: token2.colorError, - boxShadow: `0 ${token2.controlOutlineWidth}px 0 ${token2.colorErrorOutline}` - }, genHoverActiveButtonStyle({ - backgroundColor: token2.colorErrorHover - }, { - backgroundColor: token2.colorErrorActive - })), genGhostButtonStyle(token2.componentCls, token2.colorError, token2.colorError, token2.colorTextDisabled, token2.colorBorder, { - color: token2.colorErrorHover, - borderColor: token2.colorErrorHover - }, { - color: token2.colorErrorActive, - borderColor: token2.colorErrorActive - })), genSolidDisabledButtonStyle(token2)) -}); -var genDashedButtonStyle = (token2) => _extends(_extends({}, genDefaultButtonStyle(token2)), { - borderStyle: "dashed" -}); -var genLinkButtonStyle = (token2) => _extends(_extends(_extends({ - color: token2.colorLink -}, genHoverActiveButtonStyle({ - color: token2.colorLinkHover -}, { - color: token2.colorLinkActive -})), genPureDisabledButtonStyle(token2)), { - [`&${token2.componentCls}-dangerous`]: _extends(_extends({ - color: token2.colorError - }, genHoverActiveButtonStyle({ - color: token2.colorErrorHover - }, { - color: token2.colorErrorActive - })), genPureDisabledButtonStyle(token2)) -}); -var genTextButtonStyle = (token2) => _extends(_extends(_extends({}, genHoverActiveButtonStyle({ - color: token2.colorText, - backgroundColor: token2.colorBgTextHover -}, { - color: token2.colorText, - backgroundColor: token2.colorBgTextActive -})), genPureDisabledButtonStyle(token2)), { - [`&${token2.componentCls}-dangerous`]: _extends(_extends({ - color: token2.colorError - }, genPureDisabledButtonStyle(token2)), genHoverActiveButtonStyle({ - color: token2.colorErrorHover, - backgroundColor: token2.colorErrorBg - }, { - color: token2.colorErrorHover, - backgroundColor: token2.colorErrorBg - })) -}); -var genDisabledButtonStyle = (token2) => _extends(_extends({}, genDisabledStyle(token2)), { - [`&${token2.componentCls}:hover`]: _extends({}, genDisabledStyle(token2)) -}); -var genTypeButtonStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-default`]: genDefaultButtonStyle(token2), - [`${componentCls}-primary`]: genPrimaryButtonStyle(token2), - [`${componentCls}-dashed`]: genDashedButtonStyle(token2), - [`${componentCls}-link`]: genLinkButtonStyle(token2), - [`${componentCls}-text`]: genTextButtonStyle(token2), - [`${componentCls}-disabled`]: genDisabledButtonStyle(token2) - }; -}; -var genSizeButtonStyle = function(token2) { - let sizePrefixCls = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; - const { - componentCls, - iconCls, - controlHeight, - fontSize, - lineHeight, - lineWidth, - borderRadius, - buttonPaddingHorizontal - } = token2; - const paddingVertical = Math.max(0, (controlHeight - fontSize * lineHeight) / 2 - lineWidth); - const paddingHorizontal = buttonPaddingHorizontal - lineWidth; - const iconOnlyCls = `${componentCls}-icon-only`; - return [ - // Size - { - [`${componentCls}${sizePrefixCls}`]: { - fontSize, - height: controlHeight, - padding: `${paddingVertical}px ${paddingHorizontal}px`, - borderRadius, - [`&${iconOnlyCls}`]: { - width: controlHeight, - paddingInlineStart: 0, - paddingInlineEnd: 0, - [`&${componentCls}-round`]: { - width: "auto" - }, - "> span": { - transform: "scale(1.143)" - // 14px -> 16px - } - }, - // Loading - [`&${componentCls}-loading`]: { - opacity: token2.opacityLoading, - cursor: "default" - }, - [`${componentCls}-loading-icon`]: { - transition: `width ${token2.motionDurationSlow} ${token2.motionEaseInOut}, opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}` - }, - [`&:not(${iconOnlyCls}) ${componentCls}-loading-icon > ${iconCls}`]: { - marginInlineEnd: token2.marginXS - } - } - }, - // Shape - patch prefixCls again to override solid border radius style - { - [`${componentCls}${componentCls}-circle${sizePrefixCls}`]: genCircleButtonStyle(token2) - }, - { - [`${componentCls}${componentCls}-round${sizePrefixCls}`]: genRoundButtonStyle(token2) - } - ]; -}; -var genSizeBaseButtonStyle = (token2) => genSizeButtonStyle(token2); -var genSizeSmallButtonStyle = (token2) => { - const smallToken = merge(token2, { - controlHeight: token2.controlHeightSM, - padding: token2.paddingXS, - buttonPaddingHorizontal: 8, - borderRadius: token2.borderRadiusSM - }); - return genSizeButtonStyle(smallToken, `${token2.componentCls}-sm`); -}; -var genSizeLargeButtonStyle = (token2) => { - const largeToken = merge(token2, { - controlHeight: token2.controlHeightLG, - fontSize: token2.fontSizeLG, - borderRadius: token2.borderRadiusLG - }); - return genSizeButtonStyle(largeToken, `${token2.componentCls}-lg`); -}; -var genBlockButtonStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - [`&${componentCls}-block`]: { - width: "100%" - } - } - }; -}; -var style_default12 = genComponentStyleHook("Button", (token2) => { - const { - controlTmpOutline, - paddingContentHorizontal - } = token2; - const buttonToken = merge(token2, { - colorOutlineDefault: controlTmpOutline, - buttonPaddingHorizontal: paddingContentHorizontal - }); - return [ - // Shared - genSharedButtonStyle(buttonToken), - // Size - genSizeSmallButtonStyle(buttonToken), - genSizeBaseButtonStyle(buttonToken), - genSizeLargeButtonStyle(buttonToken), - // Block - genBlockButtonStyle(buttonToken), - // Group (type, ghost, danger, disabled, loading) - genTypeButtonStyle(buttonToken), - // Button Group - group_default(buttonToken), - // Space Compact - genCompactItemStyle(token2, { - focus: false - }), - genCompactItemVerticalStyle(token2) - ]; -}); - -// node_modules/ant-design-vue/es/button/button-group.js -var buttonGroupProps = () => ({ - prefixCls: String, - size: { - type: String - } -}); -var GroupSizeContext = createContext_default(); -var button_group_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AButtonGroup", - props: buttonGroupProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("btn-group", props4); - const [, , hashId] = useToken(); - GroupSizeContext.useProvide(reactive({ - size: computed(() => props4.size) - })); - const classes = computed(() => { - const { - size: size2 - } = props4; - let sizeCls = ""; - switch (size2) { - case "large": - sizeCls = "lg"; - break; - case "small": - sizeCls = "sm"; - break; - case "middle": - case void 0: - break; - default: - devWarning_default(!size2, "Button.Group", "Invalid prop `size`."); - } - return { - [`${prefixCls.value}`]: true, - [`${prefixCls.value}-${sizeCls}`]: sizeCls, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [hashId.value]: true - }; - }); - return () => { - var _a2; - return createVNode("div", { - "class": classes.value - }, [flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))]); - }; - } -}); - -// node_modules/ant-design-vue/es/button/button.js -var rxTwoCNChar = /^[\u4e00-\u9fa5]{2}$/; -var isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar); -function isUnBorderedButtonType(type4) { - return type4 === "text" || type4 === "link"; -} -var button_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AButton", - inheritAttrs: false, - __ANT_BUTTON: true, - props: initDefaultProps_default(buttonTypes_default(), { - type: "default" - }), - slots: Object, - // emits: ['click', 'mousedown'], - setup(props4, _ref) { - let { - slots, - attrs, - emit, - expose - } = _ref; - const { - prefixCls, - autoInsertSpaceInButton, - direction, - size: size2 - } = useConfigInject_default("btn", props4); - const [wrapSSR, hashId] = style_default12(prefixCls); - const groupSizeContext = GroupSizeContext.useInject(); - const disabledContext = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = props4.disabled) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - const buttonNodeRef = shallowRef(null); - const delayTimeoutRef = shallowRef(void 0); - let isNeedInserted = false; - const innerLoading = shallowRef(false); - const hasTwoCNChar = shallowRef(false); - const autoInsertSpace = computed(() => autoInsertSpaceInButton.value !== false); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const loadingOrDelay = computed(() => typeof props4.loading === "object" && props4.loading.delay ? props4.loading.delay || true : !!props4.loading); - watch(loadingOrDelay, (val) => { - clearTimeout(delayTimeoutRef.value); - if (typeof loadingOrDelay.value === "number") { - delayTimeoutRef.value = setTimeout(() => { - innerLoading.value = val; - }, loadingOrDelay.value); - } else { - innerLoading.value = val; - } - }, { - immediate: true - }); - const classes = computed(() => { - const { - type: type4, - shape = "default", - ghost, - block, - danger - } = props4; - const pre = prefixCls.value; - const sizeClassNameMap = { - large: "lg", - small: "sm", - middle: void 0 - }; - const sizeFullname = compactSize.value || (groupSizeContext === null || groupSizeContext === void 0 ? void 0 : groupSizeContext.size) || size2.value; - const sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || "" : ""; - return [compactItemClassnames.value, { - [hashId.value]: true, - [`${pre}`]: true, - [`${pre}-${shape}`]: shape !== "default" && shape, - [`${pre}-${type4}`]: type4, - [`${pre}-${sizeCls}`]: sizeCls, - [`${pre}-loading`]: innerLoading.value, - [`${pre}-background-ghost`]: ghost && !isUnBorderedButtonType(type4), - [`${pre}-two-chinese-chars`]: hasTwoCNChar.value && autoInsertSpace.value, - [`${pre}-block`]: block, - [`${pre}-dangerous`]: !!danger, - [`${pre}-rtl`]: direction.value === "rtl" - }]; - }); - const fixTwoCNChar = () => { - const node2 = buttonNodeRef.value; - if (!node2 || autoInsertSpaceInButton.value === false) { - return; - } - const buttonText = node2.textContent; - if (isNeedInserted && isTwoCNChar(buttonText)) { - if (!hasTwoCNChar.value) { - hasTwoCNChar.value = true; - } - } else if (hasTwoCNChar.value) { - hasTwoCNChar.value = false; - } - }; - const handleClick = (event) => { - if (innerLoading.value || mergedDisabled.value) { - event.preventDefault(); - return; - } - emit("click", event); - }; - const handleMousedown = (event) => { - emit("mousedown", event); - }; - const insertSpace = (child, needInserted) => { - const SPACE = needInserted ? " " : ""; - if (child.type === Text) { - let text = child.children.trim(); - if (isTwoCNChar(text)) { - text = text.split("").join(SPACE); - } - return createVNode("span", null, [text]); - } - return child; - }; - watchEffect(() => { - devWarning_default(!(props4.ghost && isUnBorderedButtonType(props4.type)), "Button", "`link` or `text` button can't be a `ghost` button."); - }); - onMounted(fixTwoCNChar); - onUpdated(fixTwoCNChar); - onBeforeUnmount(() => { - delayTimeoutRef.value && clearTimeout(delayTimeoutRef.value); - }); - const focus = () => { - var _a2; - (_a2 = buttonNodeRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = buttonNodeRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - return () => { - var _a2, _b; - const { - icon = (_a2 = slots.icon) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = props4; - const children = flattenChildren((_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)); - isNeedInserted = children.length === 1 && !icon && !isUnBorderedButtonType(props4.type); - const { - type: type4, - htmlType, - href, - title, - target - } = props4; - const iconType = innerLoading.value ? "loading" : icon; - const buttonProps2 = _extends(_extends({}, attrs), { - title, - disabled: mergedDisabled.value, - class: [classes.value, attrs.class, { - [`${prefixCls.value}-icon-only`]: children.length === 0 && !!iconType - }], - onClick: handleClick, - onMousedown: handleMousedown - }); - if (!mergedDisabled.value) { - delete buttonProps2.disabled; - } - const iconNode = icon && !innerLoading.value ? icon : createVNode(LoadingIcon_default, { - "existIcon": !!icon, - "prefixCls": prefixCls.value, - "loading": !!innerLoading.value - }, null); - const kids = children.map((child) => insertSpace(child, isNeedInserted && autoInsertSpace.value)); - if (href !== void 0) { - return wrapSSR(createVNode("a", _objectSpread2(_objectSpread2({}, buttonProps2), {}, { - "href": href, - "target": target, - "ref": buttonNodeRef - }), [iconNode, kids])); - } - let buttonNode = createVNode("button", _objectSpread2(_objectSpread2({}, buttonProps2), {}, { - "ref": buttonNodeRef, - "type": htmlType - }), [iconNode, kids]); - if (!isUnBorderedButtonType(type4)) { - const _buttonNode = /* @__PURE__ */ function() { - return buttonNode; - }(); - buttonNode = createVNode(wave_default, { - "ref": "wave", - "disabled": !!innerLoading.value - }, { - default: () => [_buttonNode] - }); - } - return wrapSSR(buttonNode); - }; - } -}); - -// node_modules/ant-design-vue/es/button/index.js -button_default.Group = button_group_default; -button_default.install = function(app) { - app.component(button_default.name, button_default); - app.component(button_group_default.name, button_group_default); - return app; -}; -var button_default2 = button_default; - -// node_modules/ant-design-vue/es/dropdown/props.js -var dropdownProps = () => ({ - arrow: someType([Boolean, Object]), - trigger: { - type: [Array, String] - }, - menu: objectType(), - overlay: vue_types_default.any, - /** @deprecated Please use `open` instead */ - visible: booleanType(), - open: booleanType(), - disabled: booleanType(), - danger: booleanType(), - autofocus: booleanType(), - align: objectType(), - getPopupContainer: Function, - prefixCls: String, - transitionName: String, - placement: String, - overlayClassName: String, - overlayStyle: objectType(), - forceRender: booleanType(), - mouseEnterDelay: Number, - mouseLeaveDelay: Number, - openClassName: String, - minOverlayWidthMatchTrigger: booleanType(), - destroyPopupOnHide: booleanType(), - /** @deprecated Please use `onOpenChange` instead */ - onVisibleChange: { - type: Function - }, - /** @deprecated Please use `onUpdate:open` instead */ - "onUpdate:visible": { - type: Function - }, - onOpenChange: { - type: Function - }, - "onUpdate:open": { - type: Function - } -}); -var buttonTypesProps = buttonTypes_default(); -var dropdownButtonProps = () => _extends(_extends({}, dropdownProps()), { - type: buttonTypesProps.type, - size: String, - htmlType: buttonTypesProps.htmlType, - href: String, - disabled: booleanType(), - prefixCls: String, - icon: vue_types_default.any, - title: String, - loading: buttonTypesProps.loading, - onClick: eventType() -}); - -// node_modules/ant-design-vue/es/dropdown/style/button.js -var genButtonStyle = (token2) => { - const { - componentCls, - antCls, - paddingXS, - opacityLoading - } = token2; - return { - [`${componentCls}-button`]: { - whiteSpace: "nowrap", - [`&${antCls}-btn-group > ${antCls}-btn`]: { - [`&-loading, &-loading + ${antCls}-btn`]: { - cursor: "default", - pointerEvents: "none", - opacity: opacityLoading - }, - [`&:last-child:not(:first-child):not(${antCls}-btn-icon-only)`]: { - paddingInline: paddingXS - } - } - } - }; -}; -var button_default3 = genButtonStyle; - -// node_modules/ant-design-vue/es/dropdown/style/status.js -var genStatusStyle2 = (token2) => { - const { - componentCls, - menuCls, - colorError, - colorTextLightSolid - } = token2; - const itemCls = `${menuCls}-item`; - return { - [`${componentCls}, ${componentCls}-menu-submenu`]: { - [`${menuCls} ${itemCls}`]: { - [`&${itemCls}-danger:not(${itemCls}-disabled)`]: { - color: colorError, - "&:hover": { - color: colorTextLightSolid, - backgroundColor: colorError - } - } - } - } - }; -}; -var status_default = genStatusStyle2; - -// node_modules/ant-design-vue/es/dropdown/style/index.js -var genBaseStyle5 = (token2) => { - const { - componentCls, - menuCls, - zIndexPopup, - dropdownArrowDistance, - dropdownArrowOffset, - sizePopupArrow, - antCls, - iconCls, - motionDurationMid, - dropdownPaddingVertical, - fontSize, - dropdownEdgeChildPadding, - colorTextDisabled, - fontSizeIcon, - controlPaddingHorizontal, - colorBgElevated, - boxShadowPopoverArrow - } = token2; - return [ - { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: -9999, - left: { - _skip_check_: true, - value: -9999 - }, - zIndex: zIndexPopup, - display: "block", - // A placeholder out of dropdown visible range to avoid close when user moving - "&::before": { - position: "absolute", - insetBlock: -dropdownArrowDistance + sizePopupArrow / 2, - // insetInlineStart: -7, // FIXME: Seems not work for hidden element - zIndex: -9999, - opacity: 1e-4, - content: '""' - }, - [`${componentCls}-wrap`]: { - position: "relative", - [`${antCls}-btn > ${iconCls}-down`]: { - fontSize: fontSizeIcon - }, - [`${iconCls}-down::before`]: { - transition: `transform ${motionDurationMid}` - } - }, - [`${componentCls}-wrap-open`]: { - [`${iconCls}-down::before`]: { - transform: `rotate(180deg)` - } - }, - [` - &-hidden, - &-menu-hidden, - &-menu-submenu-hidden - `]: { - display: "none" - }, - // ============================================================= - // == Arrow == - // ============================================================= - // Offset the popover to account for the dropdown arrow - [` - &-show-arrow${componentCls}-placement-topLeft, - &-show-arrow${componentCls}-placement-top, - &-show-arrow${componentCls}-placement-topRight - `]: { - paddingBottom: dropdownArrowDistance - }, - [` - &-show-arrow${componentCls}-placement-bottomLeft, - &-show-arrow${componentCls}-placement-bottom, - &-show-arrow${componentCls}-placement-bottomRight - `]: { - paddingTop: dropdownArrowDistance - }, - // Note: .popover-arrow is outer, .popover-arrow:after is inner - [`${componentCls}-arrow`]: _extends({ - position: "absolute", - zIndex: 1, - display: "block" - }, roundedArrow(sizePopupArrow, token2.borderRadiusXS, token2.borderRadiusOuter, colorBgElevated, boxShadowPopoverArrow)), - [` - &-placement-top > ${componentCls}-arrow, - &-placement-topLeft > ${componentCls}-arrow, - &-placement-topRight > ${componentCls}-arrow - `]: { - bottom: dropdownArrowDistance, - transform: "translateY(100%) rotate(180deg)" - }, - [`&-placement-top > ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: "50%" - }, - transform: "translateX(-50%) translateY(100%) rotate(180deg)" - }, - [`&-placement-topLeft > ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - [`&-placement-topRight > ${componentCls}-arrow`]: { - right: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - [` - &-placement-bottom > ${componentCls}-arrow, - &-placement-bottomLeft > ${componentCls}-arrow, - &-placement-bottomRight > ${componentCls}-arrow - `]: { - top: dropdownArrowDistance, - transform: `translateY(-100%)` - }, - [`&-placement-bottom > ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: "50%" - }, - transform: `translateY(-100%) translateX(-50%)` - }, - [`&-placement-bottomLeft > ${componentCls}-arrow`]: { - left: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - [`&-placement-bottomRight > ${componentCls}-arrow`]: { - right: { - _skip_check_: true, - value: dropdownArrowOffset - } - }, - // ============================================================= - // == Motion == - // ============================================================= - // When position is not enough for dropdown, the placement will revert. - // We will handle this with revert motion name. - [`&${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomLeft, - &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomLeft, - &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottom, - &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottom, - &${antCls}-slide-down-enter${antCls}-slide-down-enter-active${componentCls}-placement-bottomRight, - &${antCls}-slide-down-appear${antCls}-slide-down-appear-active${componentCls}-placement-bottomRight`]: { - animationName: slideUpIn - }, - [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topLeft, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topLeft, - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-top, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-top, - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-placement-topRight, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-placement-topRight`]: { - animationName: slideDownIn - }, - [`&${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomLeft, - &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottom, - &${antCls}-slide-down-leave${antCls}-slide-down-leave-active${componentCls}-placement-bottomRight`]: { - animationName: slideUpOut - }, - [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topLeft, - &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-top, - &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-placement-topRight`]: { - animationName: slideDownOut - } - }) - }, - { - // ============================================================= - // == Menu == - // ============================================================= - [`${componentCls} ${menuCls}`]: { - position: "relative", - margin: 0 - }, - [`${menuCls}-submenu-popup`]: { - position: "absolute", - zIndex: zIndexPopup, - background: "transparent", - boxShadow: "none", - transformOrigin: "0 0", - "ul,li": { - listStyle: "none" - }, - ul: { - marginInline: "0.3em" - } - }, - [`${componentCls}, ${componentCls}-menu-submenu`]: { - [menuCls]: _extends(_extends({ - padding: dropdownEdgeChildPadding, - listStyleType: "none", - backgroundColor: colorBgElevated, - backgroundClip: "padding-box", - borderRadius: token2.borderRadiusLG, - outline: "none", - boxShadow: token2.boxShadowSecondary - }, genFocusStyle(token2)), { - [`${menuCls}-item-group-title`]: { - padding: `${dropdownPaddingVertical}px ${controlPaddingHorizontal}px`, - color: token2.colorTextDescription, - transition: `all ${motionDurationMid}` - }, - // ======================= Item Content ======================= - [`${menuCls}-item`]: { - position: "relative", - display: "flex", - alignItems: "center", - borderRadius: token2.borderRadiusSM - }, - [`${menuCls}-item-icon`]: { - minWidth: fontSize, - marginInlineEnd: token2.marginXS, - fontSize: token2.fontSizeSM - }, - [`${menuCls}-title-content`]: { - flex: "auto", - "> a": { - color: "inherit", - transition: `all ${motionDurationMid}`, - "&:hover": { - color: "inherit" - }, - "&::after": { - position: "absolute", - inset: 0, - content: '""' - } - } - }, - // =========================== Item =========================== - [`${menuCls}-item, ${menuCls}-submenu-title`]: _extends(_extends({ - clear: "both", - margin: 0, - padding: `${dropdownPaddingVertical}px ${controlPaddingHorizontal}px`, - color: token2.colorText, - fontWeight: "normal", - fontSize, - lineHeight: token2.lineHeight, - cursor: "pointer", - transition: `all ${motionDurationMid}`, - [`&:hover, &-active`]: { - backgroundColor: token2.controlItemBgHover - } - }, genFocusStyle(token2)), { - "&-selected": { - color: token2.colorPrimary, - backgroundColor: token2.controlItemBgActive, - "&:hover, &-active": { - backgroundColor: token2.controlItemBgActiveHover - } - }, - "&-disabled": { - color: colorTextDisabled, - cursor: "not-allowed", - "&:hover": { - color: colorTextDisabled, - backgroundColor: colorBgElevated, - cursor: "not-allowed" - }, - a: { - pointerEvents: "none" - } - }, - "&-divider": { - height: 1, - margin: `${token2.marginXXS}px 0`, - overflow: "hidden", - lineHeight: 0, - backgroundColor: token2.colorSplit - }, - [`${componentCls}-menu-submenu-expand-icon`]: { - position: "absolute", - insetInlineEnd: token2.paddingXS, - [`${componentCls}-menu-submenu-arrow-icon`]: { - marginInlineEnd: "0 !important", - color: token2.colorTextDescription, - fontSize: fontSizeIcon, - fontStyle: "normal" - } - } - }), - [`${menuCls}-item-group-list`]: { - margin: `0 ${token2.marginXS}px`, - padding: 0, - listStyle: "none" - }, - [`${menuCls}-submenu-title`]: { - paddingInlineEnd: controlPaddingHorizontal + token2.fontSizeSM - }, - [`${menuCls}-submenu-vertical`]: { - position: "relative" - }, - [`${menuCls}-submenu${menuCls}-submenu-disabled ${componentCls}-menu-submenu-title`]: { - [`&, ${componentCls}-menu-submenu-arrow-icon`]: { - color: colorTextDisabled, - backgroundColor: colorBgElevated, - cursor: "not-allowed" - } - }, - // https://github.com/ant-design/ant-design/issues/19264 - [`${menuCls}-submenu-selected ${componentCls}-menu-submenu-title`]: { - color: token2.colorPrimary - } - }) - } - }, - // Follow code may reuse in other components - [initSlideMotion(token2, "slide-up"), initSlideMotion(token2, "slide-down"), initMoveMotion(token2, "move-up"), initMoveMotion(token2, "move-down"), initZoomMotion(token2, "zoom-big")] - ]; -}; -var style_default13 = genComponentStyleHook("Dropdown", (token2, _ref) => { - let { - rootPrefixCls - } = _ref; - const { - marginXXS, - sizePopupArrow, - controlHeight, - fontSize, - lineHeight, - paddingXXS, - componentCls, - borderRadiusOuter, - borderRadiusLG - } = token2; - const dropdownPaddingVertical = (controlHeight - fontSize * lineHeight) / 2; - const { - dropdownArrowOffset - } = getArrowOffset({ - sizePopupArrow, - contentRadius: borderRadiusLG, - borderRadiusOuter - }); - const dropdownToken = merge(token2, { - menuCls: `${componentCls}-menu`, - rootPrefixCls, - dropdownArrowDistance: sizePopupArrow / 2 + marginXXS, - dropdownArrowOffset, - dropdownPaddingVertical, - dropdownEdgeChildPadding: paddingXXS - }); - return [genBaseStyle5(dropdownToken), button_default3(dropdownToken), status_default(dropdownToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase + 50 -})); - -// node_modules/ant-design-vue/es/dropdown/dropdown-button.js -var __rest15 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var ButtonGroup = button_default2.Group; -var dropdown_button_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADropdownButton", - inheritAttrs: false, - __ANT_BUTTON: true, - props: initDefaultProps_default(dropdownButtonProps(), { - trigger: "hover", - placement: "bottomRight", - type: "default" - }), - // emits: ['click', 'visibleChange', 'update:visible'],s - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - const handleVisibleChange = (val) => { - emit("update:visible", val); - emit("visibleChange", val); - emit("update:open", val); - emit("openChange", val); - }; - const { - prefixCls, - direction, - getPopupContainer - } = useConfigInject_default("dropdown", props4); - const buttonPrefixCls = computed(() => `${prefixCls.value}-button`); - const [wrapSSR, hashId] = style_default13(prefixCls); - return () => { - var _a2, _b; - const _c = _extends(_extends({}, props4), attrs), { - type: type4 = "default", - disabled, - danger, - loading, - htmlType, - class: className = "", - overlay = (_a2 = slots.overlay) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - trigger: trigger2, - align, - open: open2, - visible, - onVisibleChange: _onVisibleChange, - placement = direction.value === "rtl" ? "bottomLeft" : "bottomRight", - href, - title, - icon = ((_b = slots.icon) === null || _b === void 0 ? void 0 : _b.call(slots)) || createVNode(EllipsisOutlined_default, null, null), - mouseEnterDelay, - mouseLeaveDelay, - overlayClassName, - overlayStyle, - destroyPopupOnHide, - onClick, - "onUpdate:open": _updateVisible - } = _c, restProps = __rest15(_c, ["type", "disabled", "danger", "loading", "htmlType", "class", "overlay", "trigger", "align", "open", "visible", "onVisibleChange", "placement", "href", "title", "icon", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "overlayStyle", "destroyPopupOnHide", "onClick", "onUpdate:open"]); - const dropdownProps2 = { - align, - disabled, - trigger: disabled ? [] : trigger2, - placement, - getPopupContainer: getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - onOpenChange: handleVisibleChange, - mouseEnterDelay, - mouseLeaveDelay, - open: open2 !== null && open2 !== void 0 ? open2 : visible, - overlayClassName, - overlayStyle, - destroyPopupOnHide - }; - const leftButton = createVNode(button_default2, { - "danger": danger, - "type": type4, - "disabled": disabled, - "loading": loading, - "onClick": onClick, - "htmlType": htmlType, - "href": href, - "title": title - }, { - default: slots.default - }); - const rightButton = createVNode(button_default2, { - "danger": danger, - "type": type4, - "icon": icon - }, null); - return wrapSSR(createVNode(ButtonGroup, _objectSpread2(_objectSpread2({}, restProps), {}, { - "class": classNames_default(buttonPrefixCls.value, className, hashId.value) - }), { - default: () => [slots.leftButton ? slots.leftButton({ - button: leftButton - }) : leftButton, createVNode(dropdown_default2, dropdownProps2, { - default: () => [slots.rightButton ? slots.rightButton({ - button: rightButton - }) : rightButton], - overlay: () => overlay - })] - })); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/OverrideContext.js -var OverrideContextKey = Symbol("OverrideContextKey"); -var useInjectOverride = () => { - return inject(OverrideContextKey, void 0); -}; -var useProvideOverride = (props4) => { - var _a2, _b, _c; - const { - prefixCls, - mode, - selectable, - validator, - onClick, - expandIcon - } = useInjectOverride() || {}; - provide(OverrideContextKey, { - prefixCls: computed(() => { - var _a3, _b2; - return (_b2 = (_a3 = props4.prefixCls) === null || _a3 === void 0 ? void 0 : _a3.value) !== null && _b2 !== void 0 ? _b2 : prefixCls === null || prefixCls === void 0 ? void 0 : prefixCls.value; - }), - mode: computed(() => { - var _a3, _b2; - return (_b2 = (_a3 = props4.mode) === null || _a3 === void 0 ? void 0 : _a3.value) !== null && _b2 !== void 0 ? _b2 : mode === null || mode === void 0 ? void 0 : mode.value; - }), - selectable: computed(() => { - var _a3, _b2; - return (_b2 = (_a3 = props4.selectable) === null || _a3 === void 0 ? void 0 : _a3.value) !== null && _b2 !== void 0 ? _b2 : selectable === null || selectable === void 0 ? void 0 : selectable.value; - }), - validator: (_a2 = props4.validator) !== null && _a2 !== void 0 ? _a2 : validator, - onClick: (_b = props4.onClick) !== null && _b !== void 0 ? _b : onClick, - expandIcon: (_c = props4.expandIcon) !== null && _c !== void 0 ? _c : expandIcon === null || expandIcon === void 0 ? void 0 : expandIcon.value - }); -}; - -// node_modules/ant-design-vue/es/dropdown/dropdown.js -var Dropdown = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADropdown", - inheritAttrs: false, - props: initDefaultProps_default(dropdownProps(), { - mouseEnterDelay: 0.15, - mouseLeaveDelay: 0.1, - placement: "bottomLeft", - trigger: "hover" - }), - // emits: ['visibleChange', 'update:visible'], - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - const { - prefixCls, - rootPrefixCls, - direction, - getPopupContainer - } = useConfigInject_default("dropdown", props4); - const [wrapSSR, hashId] = style_default13(prefixCls); - if (true) { - [["visible", "open"], ["onVisibleChange", "onOpenChange"], ["onUpdate:visible", "onUpdate:open"]].forEach((_ref2) => { - let [deprecatedName, newName] = _ref2; - warning_default2(props4[deprecatedName] === void 0, "Dropdown", `\`${deprecatedName}\` is deprecated which will be removed in next major version, please use \`${newName}\` instead.`); - }); - } - const transitionName2 = computed(() => { - const { - placement: placement2 = "", - transitionName: transitionName3 - } = props4; - if (transitionName3 !== void 0) { - return transitionName3; - } - if (placement2.includes("top")) { - return `${rootPrefixCls.value}-slide-down`; - } - return `${rootPrefixCls.value}-slide-up`; - }); - useProvideOverride({ - prefixCls: computed(() => `${prefixCls.value}-menu`), - expandIcon: computed(() => { - return createVNode("span", { - "class": `${prefixCls.value}-menu-submenu-arrow` - }, [createVNode(RightOutlined_default, { - "class": `${prefixCls.value}-menu-submenu-arrow-icon` - }, null)]); - }), - mode: computed(() => "vertical"), - selectable: computed(() => false), - onClick: () => { - }, - validator: (_ref3) => { - let { - mode - } = _ref3; - warning_default2(!mode || mode === "vertical", "Dropdown", `mode="${mode}" is not supported for Dropdown's Menu.`); - } - }); - const renderOverlay = () => { - var _a2, _b, _c; - const overlay = props4.overlay || ((_a2 = slots.overlay) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - const overlayNode = Array.isArray(overlay) ? overlay[0] : overlay; - if (!overlayNode) return null; - const overlayProps = overlayNode.props || {}; - devWarning_default(!overlayProps.mode || overlayProps.mode === "vertical", "Dropdown", `mode="${overlayProps.mode}" is not supported for Dropdown's Menu.`); - const { - selectable = false, - expandIcon = (_c = (_b = overlayNode.children) === null || _b === void 0 ? void 0 : _b.expandIcon) === null || _c === void 0 ? void 0 : _c.call(_b) - } = overlayProps; - const overlayNodeExpandIcon = typeof expandIcon !== "undefined" && isValidElement(expandIcon) ? expandIcon : createVNode("span", { - "class": `${prefixCls.value}-menu-submenu-arrow` - }, [createVNode(RightOutlined_default, { - "class": `${prefixCls.value}-menu-submenu-arrow-icon` - }, null)]); - const fixedModeOverlay = isValidElement(overlayNode) ? cloneElement(overlayNode, { - mode: "vertical", - selectable, - expandIcon: () => overlayNodeExpandIcon - }) : overlayNode; - return fixedModeOverlay; - }; - const placement = computed(() => { - const placement2 = props4.placement; - if (!placement2) { - return direction.value === "rtl" ? "bottomRight" : "bottomLeft"; - } - if (placement2.includes("Center")) { - const newPlacement = placement2.slice(0, placement2.indexOf("Center")); - devWarning_default(!placement2.includes("Center"), "Dropdown", `You are using '${placement2}' placement in Dropdown, which is deprecated. Try to use '${newPlacement}' instead.`); - return newPlacement; - } - return placement2; - }); - const mergedVisible = computed(() => { - return typeof props4.visible === "boolean" ? props4.visible : props4.open; - }); - const handleVisibleChange = (val) => { - emit("update:visible", val); - emit("visibleChange", val); - emit("update:open", val); - emit("openChange", val); - }; - return () => { - var _a2, _b; - const { - arrow, - trigger: trigger2, - disabled, - overlayClassName - } = props4; - const child = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)[0]; - const dropdownTrigger = cloneElement(child, _extends({ - class: classNames_default((_b = child === null || child === void 0 ? void 0 : child.props) === null || _b === void 0 ? void 0 : _b.class, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, `${prefixCls.value}-trigger`) - }, disabled ? { - disabled - } : {})); - const overlayClassNameCustomized = classNames_default(overlayClassName, hashId.value, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }); - const triggerActions = disabled ? [] : trigger2; - let alignPoint2; - if (triggerActions && triggerActions.includes("contextmenu")) { - alignPoint2 = true; - } - const builtinPlacements = getPlacements({ - arrowPointAtCenter: typeof arrow === "object" && arrow.pointAtCenter, - autoAdjustOverflow: true - }); - const dropdownProps2 = omit_default(_extends(_extends(_extends({}, props4), attrs), { - visible: mergedVisible.value, - builtinPlacements, - overlayClassName: overlayClassNameCustomized, - arrow: !!arrow, - alignPoint: alignPoint2, - prefixCls: prefixCls.value, - getPopupContainer: getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - transitionName: transitionName2.value, - trigger: triggerActions, - onVisibleChange: handleVisibleChange, - placement: placement.value - }), ["overlay", "onUpdate:visible"]); - return wrapSSR(createVNode(vc_dropdown_default, dropdownProps2, { - default: () => [dropdownTrigger], - overlay: renderOverlay - })); - }; - } -}); -Dropdown.Button = dropdown_button_default; -var dropdown_default2 = Dropdown; - -// node_modules/ant-design-vue/es/breadcrumb/BreadcrumbItem.js -var __rest16 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var breadcrumbItemProps = () => ({ - prefixCls: String, - href: String, - separator: vue_types_default.any, - dropdownProps: objectType(), - overlay: vue_types_default.any, - onClick: eventType() -}); -var BreadcrumbItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABreadcrumbItem", - inheritAttrs: false, - __ANT_BREADCRUMB_ITEM: true, - props: breadcrumbItemProps(), - // emits: ['click'], - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - const { - prefixCls - } = useConfigInject_default("breadcrumb", props4); - const renderBreadcrumbNode = (breadcrumbItem, prefixCls2) => { - const overlay = getPropsSlot(slots, props4, "overlay"); - if (overlay) { - return createVNode(dropdown_default2, _objectSpread2(_objectSpread2({}, props4.dropdownProps), {}, { - "overlay": overlay, - "placement": "bottom" - }), { - default: () => [createVNode("span", { - "class": `${prefixCls2}-overlay-link` - }, [breadcrumbItem, createVNode(DownOutlined_default, null, null)])] - }); - } - return breadcrumbItem; - }; - const handleClick = (e3) => { - emit("click", e3); - }; - return () => { - var _a2; - const separator = (_a2 = getPropsSlot(slots, props4, "separator")) !== null && _a2 !== void 0 ? _a2 : "/"; - const children = getPropsSlot(slots, props4); - const { - class: cls, - style - } = attrs, restAttrs = __rest16(attrs, ["class", "style"]); - let link; - if (props4.href !== void 0) { - link = createVNode("a", _objectSpread2({ - "class": `${prefixCls.value}-link`, - "onClick": handleClick - }, restAttrs), [children]); - } else { - link = createVNode("span", _objectSpread2({ - "class": `${prefixCls.value}-link`, - "onClick": handleClick - }, restAttrs), [children]); - } - link = renderBreadcrumbNode(link, prefixCls.value); - if (children !== void 0 && children !== null) { - return createVNode("li", { - "class": cls, - "style": style - }, [link, separator && createVNode("span", { - "class": `${prefixCls.value}-separator` - }, [separator])]); - } - return null; - }; - } -}); - -// node_modules/ant-design-vue/es/_util/shallowequal.js -function shallowEqual(objA, objB, compare, compareContext) { - let ret = compare ? compare.call(compareContext, objA, objB) : void 0; - if (ret !== void 0) { - return !!ret; - } - if (objA === objB) { - return true; - } - if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) { - return false; - } - const keysA = Object.keys(objA); - const keysB = Object.keys(objB); - if (keysA.length !== keysB.length) { - return false; - } - const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); - for (let idx = 0; idx < keysA.length; idx++) { - const key2 = keysA[idx]; - if (!bHasOwnProperty(key2)) { - return false; - } - const valueA = objA[key2]; - const valueB = objB[key2]; - ret = compare ? compare.call(compareContext, valueA, valueB, key2) : void 0; - if (ret === false || ret === void 0 && valueA !== valueB) { - return false; - } - } - return true; -} -function shallowequal_default(value, other) { - return shallowEqual(toRaw(value), toRaw(other)); -} - -// node_modules/ant-design-vue/es/menu/src/hooks/useMenuContext.js -var MenuContextKey = Symbol("menuContextKey"); -var useProvideMenu = (props4) => { - provide(MenuContextKey, props4); -}; -var useInjectMenu = () => { - return inject(MenuContextKey); -}; -var ForceRenderKey = Symbol("ForceRenderKey"); -var useProvideForceRender = (forceRender) => { - provide(ForceRenderKey, forceRender); -}; -var useInjectForceRender = () => { - return inject(ForceRenderKey, false); -}; -var MenuFirstLevelContextKey = Symbol("menuFirstLevelContextKey"); -var useProvideFirstLevel = (firstLevel) => { - provide(MenuFirstLevelContextKey, firstLevel); -}; -var useInjectFirstLevel = () => { - return inject(MenuFirstLevelContextKey, true); -}; -var MenuContextProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "MenuContextProvider", - inheritAttrs: false, - props: { - mode: { - type: String, - default: void 0 - }, - overflowDisabled: { - type: Boolean, - default: void 0 - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const menuContext = useInjectMenu(); - const newContext = _extends({}, menuContext); - if (props4.mode !== void 0) { - newContext.mode = toRef(props4, "mode"); - } - if (props4.overflowDisabled !== void 0) { - newContext.overflowDisabled = toRef(props4, "overflowDisabled"); - } - useProvideMenu(newContext); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var useMenuContext_default = useProvideMenu; - -// node_modules/ant-design-vue/es/layout/injectionKey.js -var SiderCollapsedKey = Symbol("siderCollapsed"); -var SiderHookProviderKey = Symbol("siderHookProvider"); - -// node_modules/ant-design-vue/es/menu/src/hooks/useKeyPath.js -var OVERFLOW_KEY = "$$__vc-menu-more__key"; -var KeyPathContext = Symbol("KeyPathContext"); -var useInjectKeyPath = () => { - return inject(KeyPathContext, { - parentEventKeys: computed(() => []), - parentKeys: computed(() => []), - parentInfo: {} - }); -}; -var useProvideKeyPath = (eventKey, key2, menuInfo) => { - const { - parentEventKeys, - parentKeys - } = useInjectKeyPath(); - const eventKeys = computed(() => [...parentEventKeys.value, eventKey]); - const keys2 = computed(() => [...parentKeys.value, key2]); - provide(KeyPathContext, { - parentEventKeys: eventKeys, - parentKeys: keys2, - parentInfo: menuInfo - }); - return keys2; -}; -var measure = Symbol("measure"); -var PathContext = defineComponent({ - compatConfig: { - MODE: 3 - }, - setup(_props, _ref) { - let { - slots - } = _ref; - provide(measure, true); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var useMeasure = () => { - return inject(measure, false); -}; -var useKeyPath_default = useProvideKeyPath; - -// node_modules/ant-design-vue/es/menu/src/hooks/useDirectionStyle.js -function useDirectionStyle(level) { - const { - mode, - rtl: rtl3, - inlineIndent - } = useInjectMenu(); - return computed(() => mode.value !== "inline" ? null : rtl3.value ? { - paddingRight: `${level.value * inlineIndent.value}px` - } : { - paddingLeft: `${level.value * inlineIndent.value}px` - }); -} - -// node_modules/ant-design-vue/es/menu/src/MenuItem.js -var indexGuid = 0; -var menuItemProps = () => ({ - id: String, - role: String, - disabled: Boolean, - danger: Boolean, - title: { - type: [String, Boolean], - default: void 0 - }, - icon: vue_types_default.any, - onMouseenter: Function, - onMouseleave: Function, - onClick: Function, - onKeydown: Function, - onFocus: Function, - // Internal user prop - originItemValue: objectType() -}); -var MenuItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AMenuItem", - inheritAttrs: false, - props: menuItemProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const instance = getCurrentInstance(); - const isMeasure = useMeasure(); - const key2 = typeof instance.vnode.key === "symbol" ? String(instance.vnode.key) : instance.vnode.key; - devWarning_default(typeof instance.vnode.key !== "symbol", "MenuItem", `MenuItem \`:key="${String(key2)}"\` not support Symbol type`); - const eventKey = `menu_item_${++indexGuid}_$$_${key2}`; - const { - parentEventKeys, - parentKeys - } = useInjectKeyPath(); - const { - prefixCls, - activeKeys, - disabled, - changeActiveKeys, - rtl: rtl3, - inlineCollapsed, - siderCollapsed, - onItemClick, - selectedKeys, - registerMenuInfo, - unRegisterMenuInfo - } = useInjectMenu(); - const firstLevel = useInjectFirstLevel(); - const isActive = shallowRef(false); - const keysPath = computed(() => { - return [...parentKeys.value, key2]; - }); - const menuInfo = { - eventKey, - key: key2, - parentEventKeys, - parentKeys, - isLeaf: true - }; - registerMenuInfo(eventKey, menuInfo); - onBeforeUnmount(() => { - unRegisterMenuInfo(eventKey); - }); - watch(activeKeys, () => { - isActive.value = !!activeKeys.value.find((val) => val === key2); - }, { - immediate: true - }); - const mergedDisabled = computed(() => disabled.value || props4.disabled); - const selected = computed(() => selectedKeys.value.includes(key2)); - const classNames2 = computed(() => { - const itemCls = `${prefixCls.value}-item`; - return { - [`${itemCls}`]: true, - [`${itemCls}-danger`]: props4.danger, - [`${itemCls}-active`]: isActive.value, - [`${itemCls}-selected`]: selected.value, - [`${itemCls}-disabled`]: mergedDisabled.value - }; - }); - const getEventInfo = (e3) => { - return { - key: key2, - eventKey, - keyPath: keysPath.value, - eventKeyPath: [...parentEventKeys.value, eventKey], - domEvent: e3, - item: _extends(_extends({}, props4), attrs) - }; - }; - const onInternalClick = (e3) => { - if (mergedDisabled.value) { - return; - } - const info = getEventInfo(e3); - emit("click", e3); - onItemClick(info); - }; - const onMouseEnter = (event) => { - if (!mergedDisabled.value) { - changeActiveKeys(keysPath.value); - emit("mouseenter", event); - } - }; - const onMouseLeave = (event) => { - if (!mergedDisabled.value) { - changeActiveKeys([]); - emit("mouseleave", event); - } - }; - const onInternalKeyDown = (e3) => { - emit("keydown", e3); - if (e3.which === KeyCode_default.ENTER) { - const info = getEventInfo(e3); - emit("click", e3); - onItemClick(info); - } - }; - const onInternalFocus = (e3) => { - changeActiveKeys(keysPath.value); - emit("focus", e3); - }; - const renderItemChildren = (icon, children) => { - const wrapNode = createVNode("span", { - "class": `${prefixCls.value}-title-content` - }, [children]); - if (!icon || isValidElement(children) && children.type === "span") { - if (children && inlineCollapsed.value && firstLevel && typeof children === "string") { - return createVNode("div", { - "class": `${prefixCls.value}-inline-collapsed-noicon` - }, [children.charAt(0)]); - } - } - return wrapNode; - }; - const directionStyle = useDirectionStyle(computed(() => keysPath.value.length)); - return () => { - var _a2, _b, _c, _d, _e; - if (isMeasure) return null; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - const children = flattenChildren((_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots)); - const childrenLength = children.length; - let tooltipTitle = title; - if (typeof title === "undefined") { - tooltipTitle = firstLevel && childrenLength ? children : ""; - } else if (title === false) { - tooltipTitle = ""; - } - const tooltipProps2 = { - title: tooltipTitle - }; - if (!siderCollapsed.value && !inlineCollapsed.value) { - tooltipProps2.title = null; - tooltipProps2.open = false; - } - const optionRoleProps = {}; - if (props4.role === "option") { - optionRoleProps["aria-selected"] = selected.value; - } - const icon = (_d = props4.icon) !== null && _d !== void 0 ? _d : (_e = slots.icon) === null || _e === void 0 ? void 0 : _e.call(slots, props4); - return createVNode(tooltip_default, _objectSpread2(_objectSpread2({}, tooltipProps2), {}, { - "placement": rtl3.value ? "left" : "right", - "overlayClassName": `${prefixCls.value}-inline-collapsed-tooltip` - }), { - default: () => [createVNode(vc_overflow_default.Item, _objectSpread2(_objectSpread2(_objectSpread2({ - "component": "li" - }, attrs), {}, { - "id": props4.id, - "style": _extends(_extends({}, attrs.style || {}), directionStyle.value), - "class": [classNames2.value, { - [`${attrs.class}`]: !!attrs.class, - [`${prefixCls.value}-item-only-child`]: (icon ? childrenLength + 1 : childrenLength) === 1 - }], - "role": props4.role || "menuitem", - "tabindex": props4.disabled ? null : -1, - "data-menu-id": key2, - "aria-disabled": props4.disabled - }, optionRoleProps), {}, { - "onMouseenter": onMouseEnter, - "onMouseleave": onMouseLeave, - "onClick": onInternalClick, - "onKeydown": onInternalKeyDown, - "onFocus": onInternalFocus, - "title": typeof title === "string" ? title : void 0 - }), { - default: () => [cloneElement(typeof icon === "function" ? icon(props4.originItemValue) : icon, { - class: `${prefixCls.value}-item-icon` - }, false), renderItemChildren(icon, children)] - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/placements.js -var autoAdjustOverflow3 = { - adjustX: 1, - adjustY: 1 -}; -var placements3 = { - topLeft: { - points: ["bl", "tl"], - overflow: autoAdjustOverflow3, - offset: [0, -7] - }, - bottomLeft: { - points: ["tl", "bl"], - overflow: autoAdjustOverflow3, - offset: [0, 7] - }, - leftTop: { - points: ["tr", "tl"], - overflow: autoAdjustOverflow3, - offset: [-4, 0] - }, - rightTop: { - points: ["tl", "tr"], - overflow: autoAdjustOverflow3, - offset: [4, 0] - } -}; -var placementsRtl = { - topLeft: { - points: ["bl", "tl"], - overflow: autoAdjustOverflow3, - offset: [0, -7] - }, - bottomLeft: { - points: ["tl", "bl"], - overflow: autoAdjustOverflow3, - offset: [0, 7] - }, - rightTop: { - points: ["tr", "tl"], - overflow: autoAdjustOverflow3, - offset: [-4, 0] - }, - leftTop: { - points: ["tl", "tr"], - overflow: autoAdjustOverflow3, - offset: [4, 0] - } -}; - -// node_modules/ant-design-vue/es/menu/src/PopupTrigger.js -var popupPlacementMap = { - horizontal: "bottomLeft", - vertical: "rightTop", - "vertical-left": "rightTop", - "vertical-right": "leftTop" -}; -var PopupTrigger_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PopupTrigger", - inheritAttrs: false, - props: { - prefixCls: String, - mode: String, - visible: Boolean, - // popup: React.ReactNode; - popupClassName: String, - popupOffset: Array, - disabled: Boolean, - onVisibleChange: Function - }, - slots: Object, - emits: ["visibleChange"], - setup(props4, _ref) { - let { - slots, - emit - } = _ref; - const innerVisible = shallowRef(false); - const { - getPopupContainer, - rtl: rtl3, - subMenuOpenDelay, - subMenuCloseDelay, - builtinPlacements, - triggerSubMenuAction, - forceSubMenuRender, - motion, - defaultMotions, - rootClassName - } = useInjectMenu(); - const forceRender = useInjectForceRender(); - const placement = computed(() => rtl3.value ? _extends(_extends({}, placementsRtl), builtinPlacements.value) : _extends(_extends({}, placements3), builtinPlacements.value)); - const popupPlacement = computed(() => popupPlacementMap[props4.mode]); - const visibleRef = shallowRef(); - watch(() => props4.visible, (visible) => { - wrapperRaf.cancel(visibleRef.value); - visibleRef.value = wrapperRaf(() => { - innerVisible.value = visible; - }); - }, { - immediate: true - }); - onBeforeUnmount(() => { - wrapperRaf.cancel(visibleRef.value); - }); - const onVisibleChange = (visible) => { - emit("visibleChange", visible); - }; - const mergedMotion = computed(() => { - var _a2, _b; - const m2 = motion.value || ((_a2 = defaultMotions.value) === null || _a2 === void 0 ? void 0 : _a2[props4.mode]) || ((_b = defaultMotions.value) === null || _b === void 0 ? void 0 : _b.other); - const res = typeof m2 === "function" ? m2() : m2; - return res ? getTransitionProps(res.name, { - css: true - }) : void 0; - }); - return () => { - const { - prefixCls, - popupClassName, - mode, - popupOffset, - disabled - } = props4; - return createVNode(vc_trigger_default, { - "prefixCls": prefixCls, - "popupClassName": classNames_default(`${prefixCls}-popup`, { - [`${prefixCls}-rtl`]: rtl3.value - }, popupClassName, rootClassName.value), - "stretch": mode === "horizontal" ? "minWidth" : null, - "getPopupContainer": getPopupContainer.value, - "builtinPlacements": placement.value, - "popupPlacement": popupPlacement.value, - "popupVisible": innerVisible.value, - "popupAlign": popupOffset && { - offset: popupOffset - }, - "action": disabled ? [] : [triggerSubMenuAction.value], - "mouseEnterDelay": subMenuOpenDelay.value, - "mouseLeaveDelay": subMenuCloseDelay.value, - "onPopupVisibleChange": onVisibleChange, - "forceRender": forceRender || forceSubMenuRender.value, - "popupAnimation": mergedMotion.value - }, { - popup: slots.popup, - default: slots.default - }); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/SubMenuList.js -var InternalSubMenuList = (_props, _ref) => { - let { - slots, - attrs - } = _ref; - var _a2; - const { - prefixCls, - mode - } = useInjectMenu(); - return createVNode("ul", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(prefixCls.value, `${prefixCls.value}-sub`, `${prefixCls.value}-${mode.value === "inline" ? "inline" : "vertical"}`), - "data-menu-list": true - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); -}; -InternalSubMenuList.displayName = "SubMenuList"; -var SubMenuList_default = InternalSubMenuList; - -// node_modules/ant-design-vue/es/menu/src/InlineSubMenuList.js -var InlineSubMenuList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "InlineSubMenuList", - inheritAttrs: false, - props: { - id: String, - open: Boolean, - keyPath: Array - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const fixedMode = computed(() => "inline"); - const { - motion, - mode, - defaultMotions - } = useInjectMenu(); - const sameModeRef = computed(() => mode.value === fixedMode.value); - const destroy = ref(!sameModeRef.value); - const mergedOpen = computed(() => sameModeRef.value ? props4.open : false); - watch(mode, () => { - if (sameModeRef.value) { - destroy.value = false; - } - }, { - flush: "post" - }); - const mergedMotion = computed(() => { - var _a2, _b; - const m2 = motion.value || ((_a2 = defaultMotions.value) === null || _a2 === void 0 ? void 0 : _a2[fixedMode.value]) || ((_b = defaultMotions.value) === null || _b === void 0 ? void 0 : _b.other); - const res = typeof m2 === "function" ? m2() : m2; - return _extends(_extends({}, res), { - appear: props4.keyPath.length <= 1 - }); - }); - return () => { - var _a2; - if (destroy.value) { - return null; - } - return createVNode(MenuContextProvider, { - "mode": fixedMode.value - }, { - default: () => [createVNode(transition_default, mergedMotion.value, { - default: () => [withDirectives(createVNode(SubMenuList_default, { - "id": props4.id - }, { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }), [[vShow, mergedOpen.value]])] - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/SubMenu.js -var indexGuid2 = 0; -var subMenuProps = () => ({ - icon: vue_types_default.any, - title: vue_types_default.any, - disabled: Boolean, - level: Number, - popupClassName: String, - popupOffset: Array, - internalPopupClose: Boolean, - eventKey: String, - expandIcon: Function, - theme: String, - onMouseenter: Function, - onMouseleave: Function, - onTitleClick: Function, - // Internal user prop - originItemValue: objectType() -}); -var SubMenu_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASubMenu", - inheritAttrs: false, - props: subMenuProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - var _a2, _b; - useProvideFirstLevel(false); - const isMeasure = useMeasure(); - const instance = getCurrentInstance(); - const vnodeKey = typeof instance.vnode.key === "symbol" ? String(instance.vnode.key) : instance.vnode.key; - devWarning_default(typeof instance.vnode.key !== "symbol", "SubMenu", `SubMenu \`:key="${String(vnodeKey)}"\` not support Symbol type`); - const key2 = isValid_default(vnodeKey) ? vnodeKey : `sub_menu_${++indexGuid2}_$$_not_set_key`; - const eventKey = (_a2 = props4.eventKey) !== null && _a2 !== void 0 ? _a2 : isValid_default(vnodeKey) ? `sub_menu_${++indexGuid2}_$$_${vnodeKey}` : key2; - const { - parentEventKeys, - parentInfo, - parentKeys - } = useInjectKeyPath(); - const keysPath = computed(() => [...parentKeys.value, key2]); - const childrenEventKeys = shallowRef([]); - const menuInfo = { - eventKey, - key: key2, - parentEventKeys, - childrenEventKeys, - parentKeys - }; - (_b = parentInfo.childrenEventKeys) === null || _b === void 0 ? void 0 : _b.value.push(eventKey); - onBeforeUnmount(() => { - var _a3; - if (parentInfo.childrenEventKeys) { - parentInfo.childrenEventKeys.value = (_a3 = parentInfo.childrenEventKeys) === null || _a3 === void 0 ? void 0 : _a3.value.filter((k2) => k2 != eventKey); - } - }); - useKeyPath_default(eventKey, key2, menuInfo); - const { - prefixCls, - activeKeys, - disabled: contextDisabled, - changeActiveKeys, - mode, - inlineCollapsed, - openKeys, - overflowDisabled, - onOpenChange, - registerMenuInfo, - unRegisterMenuInfo, - selectedSubMenuKeys, - expandIcon: menuExpandIcon, - theme - } = useInjectMenu(); - const hasKey = vnodeKey !== void 0 && vnodeKey !== null; - const forceRender = !isMeasure && (useInjectForceRender() || !hasKey); - useProvideForceRender(forceRender); - if (isMeasure && hasKey || !isMeasure && !hasKey || forceRender) { - registerMenuInfo(eventKey, menuInfo); - onBeforeUnmount(() => { - unRegisterMenuInfo(eventKey); - }); - } - const subMenuPrefixCls = computed(() => `${prefixCls.value}-submenu`); - const mergedDisabled = computed(() => contextDisabled.value || props4.disabled); - const elementRef = shallowRef(); - const popupRef = shallowRef(); - const originOpen = computed(() => openKeys.value.includes(key2)); - const open2 = computed(() => !overflowDisabled.value && originOpen.value); - const childrenSelected = computed(() => { - return selectedSubMenuKeys.value.includes(key2); - }); - const isActive = shallowRef(false); - watch(activeKeys, () => { - isActive.value = !!activeKeys.value.find((val) => val === key2); - }, { - immediate: true - }); - const onInternalTitleClick = (e3) => { - if (mergedDisabled.value) { - return; - } - emit("titleClick", e3, key2); - if (mode.value === "inline") { - onOpenChange(key2, !originOpen.value); - } - }; - const onMouseEnter = (event) => { - if (!mergedDisabled.value) { - changeActiveKeys(keysPath.value); - emit("mouseenter", event); - } - }; - const onMouseLeave = (event) => { - if (!mergedDisabled.value) { - changeActiveKeys([]); - emit("mouseleave", event); - } - }; - const directionStyle = useDirectionStyle(computed(() => keysPath.value.length)); - const onPopupVisibleChange = (newVisible) => { - if (mode.value !== "inline") { - onOpenChange(key2, newVisible); - } - }; - const onInternalFocus = () => { - changeActiveKeys(keysPath.value); - }; - const popupId = eventKey && `${eventKey}-popup`; - const popupClassName = computed(() => classNames_default(prefixCls.value, `${prefixCls.value}-${props4.theme || theme.value}`, props4.popupClassName)); - const renderTitle = (title, icon) => { - if (!icon) { - return inlineCollapsed.value && !parentKeys.value.length && title && typeof title === "string" ? createVNode("div", { - "class": `${prefixCls.value}-inline-collapsed-noicon` - }, [title.charAt(0)]) : createVNode("span", { - "class": `${prefixCls.value}-title-content` - }, [title]); - } - const titleIsSpan = isValidElement(title) && title.type === "span"; - return createVNode(Fragment, null, [cloneElement(typeof icon === "function" ? icon(props4.originItemValue) : icon, { - class: `${prefixCls.value}-item-icon` - }, false), titleIsSpan ? title : createVNode("span", { - "class": `${prefixCls.value}-title-content` - }, [title])]); - }; - const triggerModeRef = computed(() => { - return mode.value !== "inline" && keysPath.value.length > 1 ? "vertical" : mode.value; - }); - const renderMode = computed(() => mode.value === "horizontal" ? "vertical" : mode.value); - const subMenuTriggerModeRef = computed(() => triggerModeRef.value === "horizontal" ? "vertical" : triggerModeRef.value); - const baseTitleNode = () => { - var _a3, _b2; - const subMenuPrefixClsValue = subMenuPrefixCls.value; - const icon = (_a3 = props4.icon) !== null && _a3 !== void 0 ? _a3 : (_b2 = slots.icon) === null || _b2 === void 0 ? void 0 : _b2.call(slots, props4); - const expandIcon = props4.expandIcon || slots.expandIcon || menuExpandIcon.value; - const title = renderTitle(getPropsSlot(slots, props4, "title"), icon); - return createVNode("div", { - "style": directionStyle.value, - "class": `${subMenuPrefixClsValue}-title`, - "tabindex": mergedDisabled.value ? null : -1, - "ref": elementRef, - "title": typeof title === "string" ? title : null, - "data-menu-id": key2, - "aria-expanded": open2.value, - "aria-haspopup": true, - "aria-controls": popupId, - "aria-disabled": mergedDisabled.value, - "onClick": onInternalTitleClick, - "onFocus": onInternalFocus - }, [title, mode.value !== "horizontal" && expandIcon ? expandIcon(_extends(_extends({}, props4), { - isOpen: open2.value - })) : createVNode("i", { - "class": `${subMenuPrefixClsValue}-arrow` - }, null)]); - }; - return () => { - var _a3; - if (isMeasure) { - if (!hasKey) { - return null; - } - return (_a3 = slots.default) === null || _a3 === void 0 ? void 0 : _a3.call(slots); - } - const subMenuPrefixClsValue = subMenuPrefixCls.value; - let titleNode = () => null; - if (!overflowDisabled.value && mode.value !== "inline") { - const popupOffset = mode.value === "horizontal" ? [0, 8] : [10, 0]; - titleNode = () => createVNode(PopupTrigger_default, { - "mode": triggerModeRef.value, - "prefixCls": subMenuPrefixClsValue, - "visible": !props4.internalPopupClose && open2.value, - "popupClassName": popupClassName.value, - "popupOffset": props4.popupOffset || popupOffset, - "disabled": mergedDisabled.value, - "onVisibleChange": onPopupVisibleChange - }, { - default: () => [baseTitleNode()], - popup: () => createVNode(MenuContextProvider, { - "mode": subMenuTriggerModeRef.value - }, { - default: () => [createVNode(SubMenuList_default, { - "id": popupId, - "ref": popupRef - }, { - default: slots.default - })] - }) - }); - } else { - titleNode = () => createVNode(PopupTrigger_default, null, { - default: baseTitleNode - }); - } - return createVNode(MenuContextProvider, { - "mode": renderMode.value - }, { - default: () => [createVNode(vc_overflow_default.Item, _objectSpread2(_objectSpread2({ - "component": "li" - }, attrs), {}, { - "role": "none", - "class": classNames_default(subMenuPrefixClsValue, `${subMenuPrefixClsValue}-${mode.value}`, attrs.class, { - [`${subMenuPrefixClsValue}-open`]: open2.value, - [`${subMenuPrefixClsValue}-active`]: isActive.value, - [`${subMenuPrefixClsValue}-selected`]: childrenSelected.value, - [`${subMenuPrefixClsValue}-disabled`]: mergedDisabled.value - }), - "onMouseenter": onMouseEnter, - "onMouseleave": onMouseLeave, - "data-submenu-id": key2 - }), { - default: () => { - return createVNode(Fragment, null, [titleNode(), !overflowDisabled.value && createVNode(InlineSubMenuList_default, { - "id": popupId, - "open": open2.value, - "keyPath": keysPath.value - }, { - default: slots.default - })]); - } - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-util/Dom/class.js -function hasClass(node2, className) { - if (node2.classList) { - return node2.classList.contains(className); - } - const originClass = node2.className; - return ` ${originClass} `.indexOf(` ${className} `) > -1; -} -function addClass(node2, className) { - if (node2.classList) { - node2.classList.add(className); - } else { - if (!hasClass(node2, className)) { - node2.className = `${node2.className} ${className}`; - } - } -} -function removeClass(node2, className) { - if (node2.classList) { - node2.classList.remove(className); - } else { - if (hasClass(node2, className)) { - const originClass = node2.className; - node2.className = ` ${originClass} `.replace(` ${className} `, " "); - } - } -} - -// node_modules/ant-design-vue/es/_util/collapseMotion.js -var collapseMotion = function() { - let name = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "ant-motion-collapse"; - let appear = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - return { - name, - appear, - css: true, - onBeforeEnter: (node2) => { - node2.style.height = "0px"; - node2.style.opacity = "0"; - addClass(node2, name); - }, - onEnter: (node2) => { - nextTick(() => { - node2.style.height = `${node2.scrollHeight}px`; - node2.style.opacity = "1"; - }); - }, - onAfterEnter: (node2) => { - if (node2) { - removeClass(node2, name); - node2.style.height = null; - node2.style.opacity = null; - } - }, - onBeforeLeave: (node2) => { - addClass(node2, name); - node2.style.height = `${node2.offsetHeight}px`; - node2.style.opacity = null; - }, - onLeave: (node2) => { - setTimeout(() => { - node2.style.height = "0px"; - node2.style.opacity = "0"; - }); - }, - onAfterLeave: (node2) => { - if (node2) { - removeClass(node2, name); - if (node2.style) { - node2.style.height = null; - node2.style.opacity = null; - } - } - } - }; -}; -var collapseMotion_default = collapseMotion; - -// node_modules/ant-design-vue/es/menu/src/ItemGroup.js -var menuItemGroupProps = () => ({ - title: vue_types_default.any, - // Internal user prop - originItemValue: objectType() -}); -var ItemGroup_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AMenuItemGroup", - inheritAttrs: false, - props: menuItemGroupProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls - } = useInjectMenu(); - const groupPrefixCls = computed(() => `${prefixCls.value}-item-group`); - const isMeasure = useMeasure(); - return () => { - var _a2, _b; - if (isMeasure) return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - return createVNode("li", _objectSpread2(_objectSpread2({}, attrs), {}, { - "onClick": (e3) => e3.stopPropagation(), - "class": groupPrefixCls.value - }), [createVNode("div", { - "title": typeof props4.title === "string" ? props4.title : void 0, - "class": `${groupPrefixCls.value}-title` - }, [getPropsSlot(slots, props4, "title")]), createVNode("ul", { - "class": `${groupPrefixCls.value}-list` - }, [(_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/Divider.js -var menuDividerProps = () => ({ - prefixCls: String, - dashed: Boolean -}); -var Divider_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AMenuDivider", - props: menuDividerProps(), - setup(props4) { - const { - prefixCls - } = useInjectMenu(); - const cls = computed(() => { - return { - [`${prefixCls.value}-item-divider`]: true, - [`${prefixCls.value}-item-divider-dashed`]: !!props4.dashed - }; - }); - return () => { - return createVNode("li", { - "class": cls.value - }, null); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/src/hooks/useItems.js -var __rest17 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function convertItemsToNodes(list, store, parentMenuInfo) { - return (list || []).map((opt, index3) => { - if (opt && typeof opt === "object") { - const _a2 = opt, { - label, - children, - key: key2, - type: type4 - } = _a2, restProps = __rest17(_a2, ["label", "children", "key", "type"]); - const mergedKey = key2 !== null && key2 !== void 0 ? key2 : `tmp-${index3}`; - const parentKeys = parentMenuInfo ? parentMenuInfo.parentKeys.slice() : []; - const childrenEventKeys = []; - const menuInfo = { - eventKey: mergedKey, - key: mergedKey, - parentEventKeys: ref(parentKeys), - parentKeys: ref(parentKeys), - childrenEventKeys: ref(childrenEventKeys), - isLeaf: false - }; - if (children || type4 === "group") { - if (type4 === "group") { - const childrenNodes2 = convertItemsToNodes(children, store, parentMenuInfo); - return createVNode(ItemGroup_default, _objectSpread2(_objectSpread2({ - "key": mergedKey - }, restProps), {}, { - "title": label, - "originItemValue": opt - }), { - default: () => [childrenNodes2] - }); - } - store.set(mergedKey, menuInfo); - if (parentMenuInfo) { - parentMenuInfo.childrenEventKeys.push(mergedKey); - } - const childrenNodes = convertItemsToNodes(children, store, { - childrenEventKeys, - parentKeys: [].concat(parentKeys, mergedKey) - }); - return createVNode(SubMenu_default, _objectSpread2(_objectSpread2({ - "key": mergedKey - }, restProps), {}, { - "title": label, - "originItemValue": opt - }), { - default: () => [childrenNodes] - }); - } - if (type4 === "divider") { - return createVNode(Divider_default, _objectSpread2({ - "key": mergedKey - }, restProps), null); - } - menuInfo.isLeaf = true; - store.set(mergedKey, menuInfo); - return createVNode(MenuItem_default, _objectSpread2(_objectSpread2({ - "key": mergedKey - }, restProps), {}, { - "originItemValue": opt - }), { - default: () => [label] - }); - } - return null; - }).filter((opt) => opt); -} -function useItems(props4) { - const itemsNodes = shallowRef([]); - const hasItmes = shallowRef(false); - const store = shallowRef(/* @__PURE__ */ new Map()); - watch(() => props4.items, () => { - const newStore = /* @__PURE__ */ new Map(); - hasItmes.value = false; - if (props4.items) { - hasItmes.value = true; - itemsNodes.value = convertItemsToNodes(props4.items, newStore); - } else { - itemsNodes.value = void 0; - } - store.value = newStore; - }, { - immediate: true, - deep: true - }); - return { - itemsNodes, - store, - hasItmes - }; -} - -// node_modules/ant-design-vue/es/menu/style/horizontal.js -var getHorizontalStyle = (token2) => { - const { - componentCls, - motionDurationSlow, - menuHorizontalHeight, - colorSplit, - lineWidth, - lineType, - menuItemPaddingInline - } = token2; - return { - [`${componentCls}-horizontal`]: { - lineHeight: `${menuHorizontalHeight}px`, - border: 0, - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`, - boxShadow: "none", - "&::after": { - display: "block", - clear: "both", - height: 0, - content: '"\\20"' - }, - // ======================= Item ======================= - [`${componentCls}-item, ${componentCls}-submenu`]: { - position: "relative", - display: "inline-block", - verticalAlign: "bottom", - paddingInline: menuItemPaddingInline - }, - [`> ${componentCls}-item:hover, - > ${componentCls}-item-active, - > ${componentCls}-submenu ${componentCls}-submenu-title:hover`]: { - backgroundColor: "transparent" - }, - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`].join(",") - }, - // ===================== Sub Menu ===================== - [`${componentCls}-submenu-arrow`]: { - display: "none" - } - } - }; -}; -var horizontal_default = getHorizontalStyle; - -// node_modules/ant-design-vue/es/menu/style/rtl.js -var getRTLStyle = (_ref) => { - let { - componentCls, - menuArrowOffset - } = _ref; - return { - [`${componentCls}-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-submenu-rtl`]: { - transformOrigin: "100% 0" - }, - // Vertical Arrow - [`${componentCls}-rtl${componentCls}-vertical, - ${componentCls}-submenu-rtl ${componentCls}-vertical`]: { - [`${componentCls}-submenu-arrow`]: { - "&::before": { - transform: `rotate(-45deg) translateY(-${menuArrowOffset})` - }, - "&::after": { - transform: `rotate(45deg) translateY(${menuArrowOffset})` - } - } - } - }; -}; -var rtl_default = getRTLStyle; - -// node_modules/ant-design-vue/es/menu/style/theme.js -var accessibilityFocus = (token2) => _extends({}, genFocusOutline(token2)); -var getThemeStyle = (token2, themeSuffix) => { - const { - componentCls, - colorItemText, - colorItemTextSelected, - colorGroupTitle, - colorItemBg, - colorSubItemBg, - colorItemBgSelected, - colorActiveBarHeight, - colorActiveBarWidth, - colorActiveBarBorderSize, - motionDurationSlow, - motionEaseInOut, - motionEaseOut, - menuItemPaddingInline, - motionDurationMid, - colorItemTextHover, - lineType, - colorSplit, - // Disabled - colorItemTextDisabled, - // Danger - colorDangerItemText, - colorDangerItemTextHover, - colorDangerItemTextSelected, - colorDangerItemBgActive, - colorDangerItemBgSelected, - colorItemBgHover, - menuSubMenuBg, - // Horizontal - colorItemTextSelectedHorizontal, - colorItemBgSelectedHorizontal - } = token2; - return { - [`${componentCls}-${themeSuffix}`]: { - color: colorItemText, - background: colorItemBg, - [`&${componentCls}-root:focus-visible`]: _extends({}, accessibilityFocus(token2)), - // ======================== Item ======================== - [`${componentCls}-item-group-title`]: { - color: colorGroupTitle - }, - [`${componentCls}-submenu-selected`]: { - [`> ${componentCls}-submenu-title`]: { - color: colorItemTextSelected - } - }, - // Disabled - [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: { - color: `${colorItemTextDisabled} !important` - }, - // Hover - [`${componentCls}-item:hover, ${componentCls}-submenu-title:hover`]: { - [`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: { - color: colorItemTextHover - } - }, - [`&:not(${componentCls}-horizontal)`]: { - [`${componentCls}-item:not(${componentCls}-item-selected)`]: { - "&:hover": { - backgroundColor: colorItemBgHover - }, - "&:active": { - backgroundColor: colorItemBgSelected - } - }, - [`${componentCls}-submenu-title`]: { - "&:hover": { - backgroundColor: colorItemBgHover - }, - "&:active": { - backgroundColor: colorItemBgSelected - } - } - }, - // Danger - only Item has - [`${componentCls}-item-danger`]: { - color: colorDangerItemText, - [`&${componentCls}-item:hover`]: { - [`&:not(${componentCls}-item-selected):not(${componentCls}-submenu-selected)`]: { - color: colorDangerItemTextHover - } - }, - [`&${componentCls}-item:active`]: { - background: colorDangerItemBgActive - } - }, - [`${componentCls}-item a`]: { - "&, &:hover": { - color: "inherit" - } - }, - [`${componentCls}-item-selected`]: { - color: colorItemTextSelected, - // Danger - [`&${componentCls}-item-danger`]: { - color: colorDangerItemTextSelected - }, - [`a, a:hover`]: { - color: "inherit" - } - }, - [`& ${componentCls}-item-selected`]: { - backgroundColor: colorItemBgSelected, - // Danger - [`&${componentCls}-item-danger`]: { - backgroundColor: colorDangerItemBgSelected - } - }, - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - [`&:not(${componentCls}-item-disabled):focus-visible`]: _extends({}, accessibilityFocus(token2)) - }, - [`&${componentCls}-submenu > ${componentCls}`]: { - backgroundColor: menuSubMenuBg - }, - [`&${componentCls}-popup > ${componentCls}`]: { - backgroundColor: colorItemBg - }, - // ====================== Horizontal ====================== - [`&${componentCls}-horizontal`]: _extends(_extends({}, themeSuffix === "dark" ? { - borderBottom: 0 - } : {}), { - [`> ${componentCls}-item, > ${componentCls}-submenu`]: { - top: colorActiveBarBorderSize, - marginTop: -colorActiveBarBorderSize, - marginBottom: 0, - borderRadius: 0, - "&::after": { - position: "absolute", - insetInline: menuItemPaddingInline, - bottom: 0, - borderBottom: `${colorActiveBarHeight}px solid transparent`, - transition: `border-color ${motionDurationSlow} ${motionEaseInOut}`, - content: '""' - }, - [`&:hover, &-active, &-open`]: { - "&::after": { - borderBottomWidth: colorActiveBarHeight, - borderBottomColor: colorItemTextSelectedHorizontal - } - }, - [`&-selected`]: { - color: colorItemTextSelectedHorizontal, - backgroundColor: colorItemBgSelectedHorizontal, - "&::after": { - borderBottomWidth: colorActiveBarHeight, - borderBottomColor: colorItemTextSelectedHorizontal - } - } - } - }), - // ================== Inline & Vertical =================== - // - [`&${componentCls}-root`]: { - [`&${componentCls}-inline, &${componentCls}-vertical`]: { - borderInlineEnd: `${colorActiveBarBorderSize}px ${lineType} ${colorSplit}` - } - }, - // ======================== Inline ======================== - [`&${componentCls}-inline`]: { - // Sub - [`${componentCls}-sub${componentCls}-inline`]: { - background: colorSubItemBg - }, - // Item - [`${componentCls}-item, ${componentCls}-submenu-title`]: colorActiveBarBorderSize && colorActiveBarWidth ? { - width: `calc(100% + ${colorActiveBarBorderSize}px)` - } : {}, - [`${componentCls}-item`]: { - position: "relative", - "&::after": { - position: "absolute", - insetBlock: 0, - insetInlineEnd: 0, - borderInlineEnd: `${colorActiveBarWidth}px solid ${colorItemTextSelected}`, - transform: "scaleY(0.0001)", - opacity: 0, - transition: [`transform ${motionDurationMid} ${motionEaseOut}`, `opacity ${motionDurationMid} ${motionEaseOut}`].join(","), - content: '""' - }, - // Danger - [`&${componentCls}-item-danger`]: { - "&::after": { - borderInlineEndColor: colorDangerItemTextSelected - } - } - }, - [`${componentCls}-selected, ${componentCls}-item-selected`]: { - "&::after": { - transform: "scaleY(1)", - opacity: 1, - transition: [`transform ${motionDurationMid} ${motionEaseInOut}`, `opacity ${motionDurationMid} ${motionEaseInOut}`].join(",") - } - } - } - } - }; -}; -var theme_default = getThemeStyle; - -// node_modules/ant-design-vue/es/menu/style/vertical.js -var getVerticalInlineStyle = (token2) => { - const { - componentCls, - menuItemHeight, - itemMarginInline, - padding, - menuArrowSize, - marginXS, - marginXXS - } = token2; - const paddingWithArrow = padding + menuArrowSize + marginXS; - return { - [`${componentCls}-item`]: { - position: "relative" - }, - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - height: menuItemHeight, - lineHeight: `${menuItemHeight}px`, - paddingInline: padding, - overflow: "hidden", - textOverflow: "ellipsis", - marginInline: itemMarginInline, - marginBlock: marginXXS, - width: `calc(100% - ${itemMarginInline * 2}px)` - }, - // disable margin collapsed - [`${componentCls}-submenu`]: { - paddingBottom: 0.02 - }, - [`> ${componentCls}-item, - > ${componentCls}-submenu > ${componentCls}-submenu-title`]: { - height: menuItemHeight, - lineHeight: `${menuItemHeight}px` - }, - [`${componentCls}-item-group-list ${componentCls}-submenu-title, - ${componentCls}-submenu-title`]: { - paddingInlineEnd: paddingWithArrow - } - }; -}; -var getVerticalStyle = (token2) => { - const { - componentCls, - iconCls, - menuItemHeight, - colorTextLightSolid, - dropdownWidth, - controlHeightLG, - motionDurationMid, - motionEaseOut, - paddingXL, - fontSizeSM, - fontSizeLG, - motionDurationSlow, - paddingXS, - boxShadowSecondary - } = token2; - const inlineItemStyle = { - height: menuItemHeight, - lineHeight: `${menuItemHeight}px`, - listStylePosition: "inside", - listStyleType: "disc" - }; - return [ - { - [componentCls]: { - [`&-inline, &-vertical`]: _extends({ - [`&${componentCls}-root`]: { - boxShadow: "none" - } - }, getVerticalInlineStyle(token2)) - }, - [`${componentCls}-submenu-popup`]: { - [`${componentCls}-vertical`]: _extends(_extends({}, getVerticalInlineStyle(token2)), { - boxShadow: boxShadowSecondary - }) - } - }, - // Vertical only - { - [`${componentCls}-submenu-popup ${componentCls}-vertical${componentCls}-sub`]: { - minWidth: dropdownWidth, - maxHeight: `calc(100vh - ${controlHeightLG * 2.5}px)`, - padding: "0", - overflow: "hidden", - borderInlineEnd: 0, - // https://github.com/ant-design/ant-design/issues/22244 - // https://github.com/ant-design/ant-design/issues/26812 - "&:not([class*='-active'])": { - overflowX: "hidden", - overflowY: "auto" - } - } - }, - // Inline Only - { - [`${componentCls}-inline`]: { - width: "100%", - // Motion enhance for first level - [`&${componentCls}-root`]: { - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - display: "flex", - alignItems: "center", - transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding ${motionDurationMid} ${motionEaseOut}`].join(","), - [`> ${componentCls}-title-content`]: { - flex: "auto", - minWidth: 0, - overflow: "hidden", - textOverflow: "ellipsis" - }, - "> *": { - flex: "none" - } - } - }, - // >>>>> Sub - [`${componentCls}-sub${componentCls}-inline`]: { - padding: 0, - border: 0, - borderRadius: 0, - boxShadow: "none", - [`& > ${componentCls}-submenu > ${componentCls}-submenu-title`]: inlineItemStyle, - [`& ${componentCls}-item-group-title`]: { - paddingInlineStart: paddingXL - } - }, - // >>>>> Item - [`${componentCls}-item`]: inlineItemStyle - } - }, - // Inline Collapse Only - { - [`${componentCls}-inline-collapsed`]: { - width: menuItemHeight * 2, - [`&${componentCls}-root`]: { - [`${componentCls}-item, ${componentCls}-submenu ${componentCls}-submenu-title`]: { - [`> ${componentCls}-inline-collapsed-noicon`]: { - fontSize: fontSizeLG, - textAlign: "center" - } - } - }, - [`> ${componentCls}-item, - > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-item, - > ${componentCls}-item-group > ${componentCls}-item-group-list > ${componentCls}-submenu > ${componentCls}-submenu-title, - > ${componentCls}-submenu > ${componentCls}-submenu-title`]: { - insetInlineStart: 0, - paddingInline: `calc(50% - ${fontSizeSM}px)`, - textOverflow: "clip", - [` - ${componentCls}-submenu-arrow, - ${componentCls}-submenu-expand-icon - `]: { - opacity: 0 - }, - [`${componentCls}-item-icon, ${iconCls}`]: { - margin: 0, - fontSize: fontSizeLG, - lineHeight: `${menuItemHeight}px`, - "+ span": { - display: "inline-block", - opacity: 0 - } - } - }, - [`${componentCls}-item-icon, ${iconCls}`]: { - display: "inline-block" - }, - "&-tooltip": { - pointerEvents: "none", - [`${componentCls}-item-icon, ${iconCls}`]: { - display: "none" - }, - "a, a:hover": { - color: colorTextLightSolid - } - }, - [`${componentCls}-item-group-title`]: _extends(_extends({}, textEllipsis), { - paddingInline: paddingXS - }) - } - } - ]; -}; -var vertical_default = getVerticalStyle; - -// node_modules/ant-design-vue/es/menu/style/index.js -var genMenuItemStyle = (token2) => { - const { - componentCls, - fontSize, - motionDurationSlow, - motionDurationMid, - motionEaseInOut, - motionEaseOut, - iconCls, - controlHeightSM - } = token2; - return { - // >>>>> Item - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - position: "relative", - display: "block", - margin: 0, - whiteSpace: "nowrap", - cursor: "pointer", - transition: [`border-color ${motionDurationSlow}`, `background ${motionDurationSlow}`, `padding ${motionDurationSlow} ${motionEaseInOut}`].join(","), - [`${componentCls}-item-icon, ${iconCls}`]: { - minWidth: fontSize, - fontSize, - transition: [`font-size ${motionDurationMid} ${motionEaseOut}`, `margin ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow}`].join(","), - "+ span": { - marginInlineStart: controlHeightSM - fontSize, - opacity: 1, - transition: [`opacity ${motionDurationSlow} ${motionEaseInOut}`, `margin ${motionDurationSlow}`, `color ${motionDurationSlow}`].join(",") - } - }, - [`${componentCls}-item-icon`]: _extends({}, resetIcon()), - [`&${componentCls}-item-only-child`]: { - [`> ${iconCls}, > ${componentCls}-item-icon`]: { - marginInlineEnd: 0 - } - } - }, - // Disabled state sets text to gray and nukes hover/tab effects - [`${componentCls}-item-disabled, ${componentCls}-submenu-disabled`]: { - background: "none !important", - cursor: "not-allowed", - "&::after": { - borderColor: "transparent !important" - }, - a: { - color: "inherit !important" - }, - [`> ${componentCls}-submenu-title`]: { - color: "inherit !important", - cursor: "not-allowed" - } - } - }; -}; -var genSubMenuArrowStyle = (token2) => { - const { - componentCls, - motionDurationSlow, - motionEaseInOut, - borderRadius, - menuArrowSize, - menuArrowOffset - } = token2; - return { - [`${componentCls}-submenu`]: { - [`&-expand-icon, &-arrow`]: { - position: "absolute", - top: "50%", - insetInlineEnd: token2.margin, - width: menuArrowSize, - color: "currentcolor", - transform: "translateY(-50%)", - transition: `transform ${motionDurationSlow} ${motionEaseInOut}, opacity ${motionDurationSlow}` - }, - "&-arrow": { - // → - "&::before, &::after": { - position: "absolute", - width: menuArrowSize * 0.6, - height: menuArrowSize * 0.15, - backgroundColor: "currentcolor", - borderRadius, - transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `transform ${motionDurationSlow} ${motionEaseInOut}`, `top ${motionDurationSlow} ${motionEaseInOut}`, `color ${motionDurationSlow} ${motionEaseInOut}`].join(","), - content: '""' - }, - "&::before": { - transform: `rotate(45deg) translateY(-${menuArrowOffset})` - }, - "&::after": { - transform: `rotate(-45deg) translateY(${menuArrowOffset})` - } - } - } - }; -}; -var getBaseStyle = (token2) => { - const { - antCls, - componentCls, - fontSize, - motionDurationSlow, - motionDurationMid, - motionEaseInOut, - lineHeight, - paddingXS, - padding, - colorSplit, - lineWidth, - zIndexPopup, - borderRadiusLG, - radiusSubMenuItem, - menuArrowSize, - menuArrowOffset, - lineType, - menuPanelMaskInset - } = token2; - return [ - // Misc - { - "": { - [`${componentCls}`]: _extends(_extends({}, clearFix()), { - // Hidden - [`&-hidden`]: { - display: "none" - } - }) - }, - [`${componentCls}-submenu-hidden`]: { - display: "none" - } - }, - { - [componentCls]: _extends(_extends(_extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), clearFix()), { - marginBottom: 0, - paddingInlineStart: 0, - // Override default ul/ol - fontSize, - lineHeight: 0, - listStyle: "none", - outline: "none", - transition: `width ${motionDurationSlow} cubic-bezier(0.2, 0, 0, 1) 0s`, - [`ul, ol`]: { - margin: 0, - padding: 0, - listStyle: "none" - }, - // Overflow ellipsis - [`&-overflow`]: { - display: "flex", - [`${componentCls}-item`]: { - flex: "none" - } - }, - [`${componentCls}-item, ${componentCls}-submenu, ${componentCls}-submenu-title`]: { - borderRadius: token2.radiusItem - }, - [`${componentCls}-item-group-title`]: { - padding: `${paddingXS}px ${padding}px`, - fontSize, - lineHeight, - transition: `all ${motionDurationSlow}` - }, - [`&-horizontal ${componentCls}-submenu`]: { - transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`].join(",") - }, - [`${componentCls}-submenu, ${componentCls}-submenu-inline`]: { - transition: [`border-color ${motionDurationSlow} ${motionEaseInOut}`, `background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationMid} ${motionEaseInOut}`].join(",") - }, - [`${componentCls}-submenu ${componentCls}-sub`]: { - cursor: "initial", - transition: [`background ${motionDurationSlow} ${motionEaseInOut}`, `padding ${motionDurationSlow} ${motionEaseInOut}`].join(",") - }, - [`${componentCls}-title-content`]: { - transition: `color ${motionDurationSlow}` - }, - [`${componentCls}-item a`]: { - "&::before": { - position: "absolute", - inset: 0, - backgroundColor: "transparent", - content: '""' - } - }, - // Removed a Badge related style seems it's safe - // https://github.com/ant-design/ant-design/issues/19809 - // >>>>> Divider - [`${componentCls}-item-divider`]: { - overflow: "hidden", - lineHeight: 0, - borderColor: colorSplit, - borderStyle: lineType, - borderWidth: 0, - borderTopWidth: lineWidth, - marginBlock: lineWidth, - padding: 0, - "&-dashed": { - borderStyle: "dashed" - } - } - }), genMenuItemStyle(token2)), { - [`${componentCls}-item-group`]: { - [`${componentCls}-item-group-list`]: { - margin: 0, - padding: 0, - [`${componentCls}-item, ${componentCls}-submenu-title`]: { - paddingInline: `${fontSize * 2}px ${padding}px` - } - } - }, - // ======================= Sub Menu ======================= - "&-submenu": { - "&-popup": { - position: "absolute", - zIndex: zIndexPopup, - background: "transparent", - borderRadius: borderRadiusLG, - boxShadow: "none", - transformOrigin: "0 0", - // https://github.com/ant-design/ant-design/issues/13955 - "&::before": { - position: "absolute", - inset: `${menuPanelMaskInset}px 0 0`, - zIndex: -1, - width: "100%", - height: "100%", - opacity: 0, - content: '""' - } - }, - // https://github.com/ant-design/ant-design/issues/13955 - "&-placement-rightTop::before": { - top: 0, - insetInlineStart: menuPanelMaskInset - }, - [`> ${componentCls}`]: _extends(_extends(_extends({ - borderRadius: borderRadiusLG - }, genMenuItemStyle(token2)), genSubMenuArrowStyle(token2)), { - [`${componentCls}-item, ${componentCls}-submenu > ${componentCls}-submenu-title`]: { - borderRadius: radiusSubMenuItem - }, - [`${componentCls}-submenu-title::after`]: { - transition: `transform ${motionDurationSlow} ${motionEaseInOut}` - } - }) - } - }), genSubMenuArrowStyle(token2)), { - [`&-inline-collapsed ${componentCls}-submenu-arrow, - &-inline ${componentCls}-submenu-arrow`]: { - // ↓ - "&::before": { - transform: `rotate(-45deg) translateX(${menuArrowOffset})` - }, - "&::after": { - transform: `rotate(45deg) translateX(-${menuArrowOffset})` - } - }, - [`${componentCls}-submenu-open${componentCls}-submenu-inline > ${componentCls}-submenu-title > ${componentCls}-submenu-arrow`]: { - // ↑ - transform: `translateY(-${menuArrowSize * 0.2}px)`, - "&::after": { - transform: `rotate(-45deg) translateX(-${menuArrowOffset})` - }, - "&::before": { - transform: `rotate(45deg) translateX(${menuArrowOffset})` - } - } - }) - }, - // Integration with header element so menu items have the same height - { - [`${antCls}-layout-header`]: { - [componentCls]: { - lineHeight: "inherit" - } - } - } - ]; -}; -var style_default14 = (prefixCls, injectStyle) => { - const useOriginHook = genComponentStyleHook("Menu", (token2, _ref) => { - let { - overrideComponentToken - } = _ref; - if ((injectStyle === null || injectStyle === void 0 ? void 0 : injectStyle.value) === false) { - return []; - } - const { - colorBgElevated, - colorPrimary, - colorError, - colorErrorHover, - colorTextLightSolid - } = token2; - const { - controlHeightLG, - fontSize - } = token2; - const menuArrowSize = fontSize / 7 * 5; - const menuToken = merge(token2, { - menuItemHeight: controlHeightLG, - menuItemPaddingInline: token2.margin, - menuArrowSize, - menuHorizontalHeight: controlHeightLG * 1.15, - menuArrowOffset: `${menuArrowSize * 0.25}px`, - menuPanelMaskInset: -7, - menuSubMenuBg: colorBgElevated - }); - const colorTextDark = new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString(); - const menuDarkToken = merge(menuToken, { - colorItemText: colorTextDark, - colorItemTextHover: colorTextLightSolid, - colorGroupTitle: colorTextDark, - colorItemTextSelected: colorTextLightSolid, - colorItemBg: "#001529", - colorSubItemBg: "#000c17", - colorItemBgActive: "transparent", - colorItemBgSelected: colorPrimary, - colorActiveBarWidth: 0, - colorActiveBarHeight: 0, - colorActiveBarBorderSize: 0, - // Disabled - colorItemTextDisabled: new TinyColor(colorTextLightSolid).setAlpha(0.25).toRgbString(), - // Danger - colorDangerItemText: colorError, - colorDangerItemTextHover: colorErrorHover, - colorDangerItemTextSelected: colorTextLightSolid, - colorDangerItemBgActive: colorError, - colorDangerItemBgSelected: colorError, - menuSubMenuBg: "#001529", - // Horizontal - colorItemTextSelectedHorizontal: colorTextLightSolid, - colorItemBgSelectedHorizontal: colorPrimary - }, _extends({}, overrideComponentToken)); - return [ - // Basic - getBaseStyle(menuToken), - // Horizontal - horizontal_default(menuToken), - // Vertical - vertical_default(menuToken), - // Theme - theme_default(menuToken, "light"), - theme_default(menuDarkToken, "dark"), - // RTL - rtl_default(menuToken), - // Motion - collapse_default(menuToken), - initSlideMotion(menuToken, "slide-up"), - initSlideMotion(menuToken, "slide-down"), - initZoomMotion(menuToken, "zoom-big") - ]; - }, (token2) => { - const { - colorPrimary, - colorError, - colorTextDisabled, - colorErrorBg, - colorText, - colorTextDescription, - colorBgContainer, - colorFillAlter, - colorFillContent, - lineWidth, - lineWidthBold, - controlItemBgActive, - colorBgTextHover - } = token2; - return { - dropdownWidth: 160, - zIndexPopup: token2.zIndexPopupBase + 50, - radiusItem: token2.borderRadiusLG, - radiusSubMenuItem: token2.borderRadiusSM, - colorItemText: colorText, - colorItemTextHover: colorText, - colorItemTextHoverHorizontal: colorPrimary, - colorGroupTitle: colorTextDescription, - colorItemTextSelected: colorPrimary, - colorItemTextSelectedHorizontal: colorPrimary, - colorItemBg: colorBgContainer, - colorItemBgHover: colorBgTextHover, - colorItemBgActive: colorFillContent, - colorSubItemBg: colorFillAlter, - colorItemBgSelected: controlItemBgActive, - colorItemBgSelectedHorizontal: "transparent", - colorActiveBarWidth: 0, - colorActiveBarHeight: lineWidthBold, - colorActiveBarBorderSize: lineWidth, - // Disabled - colorItemTextDisabled: colorTextDisabled, - // Danger - colorDangerItemText: colorError, - colorDangerItemTextHover: colorError, - colorDangerItemTextSelected: colorError, - colorDangerItemBgActive: colorErrorBg, - colorDangerItemBgSelected: colorErrorBg, - itemMarginInline: token2.marginXXS - }; - }); - return useOriginHook(prefixCls); -}; - -// node_modules/ant-design-vue/es/menu/src/Menu.js -var menuProps = () => ({ - id: String, - prefixCls: String, - // donot use items, now only support inner use - items: Array, - disabled: Boolean, - inlineCollapsed: Boolean, - disabledOverflow: Boolean, - forceSubMenuRender: Boolean, - openKeys: Array, - selectedKeys: Array, - activeKey: String, - selectable: { - type: Boolean, - default: true - }, - multiple: { - type: Boolean, - default: false - }, - tabindex: { - type: [Number, String] - }, - motion: Object, - role: String, - theme: { - type: String, - default: "light" - }, - mode: { - type: String, - default: "vertical" - }, - inlineIndent: { - type: Number, - default: 24 - }, - subMenuOpenDelay: { - type: Number, - default: 0 - }, - subMenuCloseDelay: { - type: Number, - default: 0.1 - }, - builtinPlacements: { - type: Object - }, - triggerSubMenuAction: { - type: String, - default: "hover" - }, - getPopupContainer: Function, - expandIcon: Function, - onOpenChange: Function, - onSelect: Function, - onDeselect: Function, - onClick: [Function, Array], - onFocus: Function, - onBlur: Function, - onMousedown: Function, - "onUpdate:openKeys": Function, - "onUpdate:selectedKeys": Function, - "onUpdate:activeKey": Function -}); -var EMPTY_LIST = []; -var Menu_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AMenu", - inheritAttrs: false, - props: menuProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const { - direction, - getPrefixCls - } = useConfigInject_default("menu", props4); - const override = useInjectOverride(); - const prefixCls = computed(() => { - var _a2; - return getPrefixCls("menu", props4.prefixCls || ((_a2 = override === null || override === void 0 ? void 0 : override.prefixCls) === null || _a2 === void 0 ? void 0 : _a2.value)); - }); - const [wrapSSR, hashId] = style_default14(prefixCls, computed(() => { - return !override; - })); - const store = shallowRef(/* @__PURE__ */ new Map()); - const siderCollapsed = inject(SiderCollapsedKey, ref(void 0)); - const inlineCollapsed = computed(() => { - if (siderCollapsed.value !== void 0) { - return siderCollapsed.value; - } - return props4.inlineCollapsed; - }); - const { - itemsNodes - } = useItems(props4); - const isMounted = shallowRef(false); - onMounted(() => { - isMounted.value = true; - }); - watchEffect(() => { - devWarning_default(!(props4.inlineCollapsed === true && props4.mode !== "inline"), "Menu", "`inlineCollapsed` should only be used when `mode` is inline."); - devWarning_default(!(siderCollapsed.value !== void 0 && props4.inlineCollapsed === true), "Menu", "`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead."); - }); - const activeKeys = ref([]); - const mergedSelectedKeys = ref([]); - const keyMapStore = ref({}); - watch(store, () => { - const newKeyMapStore = {}; - for (const menuInfo of store.value.values()) { - newKeyMapStore[menuInfo.key] = menuInfo; - } - keyMapStore.value = newKeyMapStore; - }, { - flush: "post" - }); - watchEffect(() => { - if (props4.activeKey !== void 0) { - let keys2 = []; - const menuInfo = props4.activeKey ? keyMapStore.value[props4.activeKey] : void 0; - if (menuInfo && props4.activeKey !== void 0) { - keys2 = uniq_default([].concat(unref(menuInfo.parentKeys), props4.activeKey)); - } else { - keys2 = []; - } - if (!shallowequal_default(activeKeys.value, keys2)) { - activeKeys.value = keys2; - } - } - }); - watch(() => props4.selectedKeys, (selectedKeys) => { - if (selectedKeys) { - mergedSelectedKeys.value = selectedKeys.slice(); - } - }, { - immediate: true, - deep: true - }); - const selectedSubMenuKeys = ref([]); - watch([keyMapStore, mergedSelectedKeys], () => { - let subMenuParentKeys = []; - mergedSelectedKeys.value.forEach((key2) => { - const menuInfo = keyMapStore.value[key2]; - if (menuInfo) { - subMenuParentKeys = subMenuParentKeys.concat(unref(menuInfo.parentKeys)); - } - }); - subMenuParentKeys = uniq_default(subMenuParentKeys); - if (!shallowequal_default(selectedSubMenuKeys.value, subMenuParentKeys)) { - selectedSubMenuKeys.value = subMenuParentKeys; - } - }, { - immediate: true - }); - const triggerSelection = (info) => { - if (props4.selectable) { - const { - key: targetKey - } = info; - const exist = mergedSelectedKeys.value.includes(targetKey); - let newSelectedKeys; - if (props4.multiple) { - if (exist) { - newSelectedKeys = mergedSelectedKeys.value.filter((key2) => key2 !== targetKey); - } else { - newSelectedKeys = [...mergedSelectedKeys.value, targetKey]; - } - } else { - newSelectedKeys = [targetKey]; - } - const selectInfo = _extends(_extends({}, info), { - selectedKeys: newSelectedKeys - }); - if (!shallowequal_default(newSelectedKeys, mergedSelectedKeys.value)) { - if (props4.selectedKeys === void 0) { - mergedSelectedKeys.value = newSelectedKeys; - } - emit("update:selectedKeys", newSelectedKeys); - if (exist && props4.multiple) { - emit("deselect", selectInfo); - } else { - emit("select", selectInfo); - } - } - } - if (mergedMode.value !== "inline" && !props4.multiple && mergedOpenKeys.value.length) { - triggerOpenKeys(EMPTY_LIST); - } - }; - const mergedOpenKeys = ref([]); - watch(() => props4.openKeys, function() { - let openKeys = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : mergedOpenKeys.value; - if (!shallowequal_default(mergedOpenKeys.value, openKeys)) { - mergedOpenKeys.value = openKeys.slice(); - } - }, { - immediate: true, - deep: true - }); - let timeout; - const changeActiveKeys = (keys2) => { - clearTimeout(timeout); - timeout = setTimeout(() => { - if (props4.activeKey === void 0) { - activeKeys.value = keys2; - } - emit("update:activeKey", keys2[keys2.length - 1]); - }); - }; - const disabled = computed(() => !!props4.disabled); - const isRtl = computed(() => direction.value === "rtl"); - const mergedMode = ref("vertical"); - const mergedInlineCollapsed = shallowRef(false); - watchEffect(() => { - var _a2; - if ((props4.mode === "inline" || props4.mode === "vertical") && inlineCollapsed.value) { - mergedMode.value = "vertical"; - mergedInlineCollapsed.value = inlineCollapsed.value; - } else { - mergedMode.value = props4.mode; - mergedInlineCollapsed.value = false; - } - if ((_a2 = override === null || override === void 0 ? void 0 : override.mode) === null || _a2 === void 0 ? void 0 : _a2.value) { - mergedMode.value = override.mode.value; - } - }); - const isInlineMode = computed(() => mergedMode.value === "inline"); - const triggerOpenKeys = (keys2) => { - mergedOpenKeys.value = keys2; - emit("update:openKeys", keys2); - emit("openChange", keys2); - }; - const inlineCacheOpenKeys = ref(mergedOpenKeys.value); - const mountRef = shallowRef(false); - watch(mergedOpenKeys, () => { - if (isInlineMode.value) { - inlineCacheOpenKeys.value = mergedOpenKeys.value; - } - }, { - immediate: true - }); - watch(isInlineMode, () => { - if (!mountRef.value) { - mountRef.value = true; - return; - } - if (isInlineMode.value) { - mergedOpenKeys.value = inlineCacheOpenKeys.value; - } else { - triggerOpenKeys(EMPTY_LIST); - } - }, { - immediate: true - }); - const className = computed(() => { - return { - [`${prefixCls.value}`]: true, - [`${prefixCls.value}-root`]: true, - [`${prefixCls.value}-${mergedMode.value}`]: true, - [`${prefixCls.value}-inline-collapsed`]: mergedInlineCollapsed.value, - [`${prefixCls.value}-rtl`]: isRtl.value, - [`${prefixCls.value}-${props4.theme}`]: true - }; - }); - const rootPrefixCls = computed(() => getPrefixCls()); - const defaultMotions = computed(() => ({ - horizontal: { - name: `${rootPrefixCls.value}-slide-up` - }, - inline: collapseMotion_default(`${rootPrefixCls.value}-motion-collapse`), - other: { - name: `${rootPrefixCls.value}-zoom-big` - } - })); - useProvideFirstLevel(true); - const getChildrenKeys = function() { - let eventKeys = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - const keys2 = []; - const storeValue = store.value; - eventKeys.forEach((eventKey) => { - const { - key: key2, - childrenEventKeys - } = storeValue.get(eventKey); - keys2.push(key2, ...getChildrenKeys(unref(childrenEventKeys))); - }); - return keys2; - }; - const onInternalClick = (info) => { - var _a2; - emit("click", info); - triggerSelection(info); - (_a2 = override === null || override === void 0 ? void 0 : override.onClick) === null || _a2 === void 0 ? void 0 : _a2.call(override); - }; - const onInternalOpenChange = (key2, open2) => { - var _a2; - const childrenEventKeys = ((_a2 = keyMapStore.value[key2]) === null || _a2 === void 0 ? void 0 : _a2.childrenEventKeys) || []; - let newOpenKeys = mergedOpenKeys.value.filter((k2) => k2 !== key2); - if (open2) { - newOpenKeys.push(key2); - } else if (mergedMode.value !== "inline") { - const subPathKeys = getChildrenKeys(unref(childrenEventKeys)); - newOpenKeys = uniq_default(newOpenKeys.filter((k2) => !subPathKeys.includes(k2))); - } - if (!shallowequal_default(mergedOpenKeys, newOpenKeys)) { - triggerOpenKeys(newOpenKeys); - } - }; - const registerMenuInfo = (key2, info) => { - store.value.set(key2, info); - store.value = new Map(store.value); - }; - const unRegisterMenuInfo = (key2) => { - store.value.delete(key2); - store.value = new Map(store.value); - }; - const lastVisibleIndex = ref(0); - const expandIcon = computed(() => { - var _a2; - return props4.expandIcon || slots.expandIcon || ((_a2 = override === null || override === void 0 ? void 0 : override.expandIcon) === null || _a2 === void 0 ? void 0 : _a2.value) ? (opt) => { - let icon = props4.expandIcon || slots.expandIcon; - icon = typeof icon === "function" ? icon(opt) : icon; - return cloneElement(icon, { - class: `${prefixCls.value}-submenu-expand-icon` - }, false); - } : null; - }); - useMenuContext_default({ - prefixCls, - activeKeys, - openKeys: mergedOpenKeys, - selectedKeys: mergedSelectedKeys, - changeActiveKeys, - disabled, - rtl: isRtl, - mode: mergedMode, - inlineIndent: computed(() => props4.inlineIndent), - subMenuCloseDelay: computed(() => props4.subMenuCloseDelay), - subMenuOpenDelay: computed(() => props4.subMenuOpenDelay), - builtinPlacements: computed(() => props4.builtinPlacements), - triggerSubMenuAction: computed(() => props4.triggerSubMenuAction), - getPopupContainer: computed(() => props4.getPopupContainer), - inlineCollapsed: mergedInlineCollapsed, - theme: computed(() => props4.theme), - siderCollapsed, - defaultMotions: computed(() => isMounted.value ? defaultMotions.value : null), - motion: computed(() => isMounted.value ? props4.motion : null), - overflowDisabled: shallowRef(void 0), - onOpenChange: onInternalOpenChange, - onItemClick: onInternalClick, - registerMenuInfo, - unRegisterMenuInfo, - selectedSubMenuKeys, - expandIcon, - forceSubMenuRender: computed(() => props4.forceSubMenuRender), - rootClassName: hashId - }); - return () => { - var _a2, _b; - const childList = itemsNodes.value || flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - const allVisible = lastVisibleIndex.value >= childList.length - 1 || mergedMode.value !== "horizontal" || props4.disabledOverflow; - const wrappedChildList = mergedMode.value !== "horizontal" || props4.disabledOverflow ? childList : ( - // Need wrap for overflow dropdown that do not response for open - childList.map((child, index3) => ( - // Always wrap provider to avoid sub node re-mount - createVNode(MenuContextProvider, { - "key": child.key, - "overflowDisabled": index3 > lastVisibleIndex.value - }, { - default: () => child - }) - )) - ); - const overflowedIndicator = ((_b = slots.overflowedIndicator) === null || _b === void 0 ? void 0 : _b.call(slots)) || createVNode(EllipsisOutlined_default, null, null); - return wrapSSR(createVNode(vc_overflow_default, _objectSpread2(_objectSpread2({}, attrs), {}, { - "onMousedown": props4.onMousedown, - "prefixCls": `${prefixCls.value}-overflow`, - "component": "ul", - "itemComponent": MenuItem_default, - "class": [className.value, attrs.class, hashId.value], - "role": "menu", - "id": props4.id, - "data": wrappedChildList, - "renderRawItem": (node2) => node2, - "renderRawRest": (omitItems) => { - const len = omitItems.length; - const originOmitItems = len ? childList.slice(-len) : null; - return createVNode(Fragment, null, [createVNode(SubMenu_default, { - "eventKey": OVERFLOW_KEY, - "key": OVERFLOW_KEY, - "title": overflowedIndicator, - "disabled": allVisible, - "internalPopupClose": len === 0 - }, { - default: () => originOmitItems - }), createVNode(PathContext, null, { - default: () => [createVNode(SubMenu_default, { - "eventKey": OVERFLOW_KEY, - "key": OVERFLOW_KEY, - "title": overflowedIndicator, - "disabled": allVisible, - "internalPopupClose": len === 0 - }, { - default: () => originOmitItems - })] - })]); - }, - "maxCount": mergedMode.value !== "horizontal" || props4.disabledOverflow ? vc_overflow_default.INVALIDATE : vc_overflow_default.RESPONSIVE, - "ssr": "full", - "data-menu-list": true, - "onVisibleChange": (newLastIndex) => { - lastVisibleIndex.value = newLastIndex; - } - }), { - default: () => [createVNode(Teleport, { - "to": "body" - }, { - default: () => [createVNode("div", { - "style": { - display: "none" - }, - "aria-hidden": true - }, [createVNode(PathContext, null, { - default: () => [wrappedChildList] - })])] - })] - })); - }; - } -}); - -// node_modules/ant-design-vue/es/menu/index.js -Menu_default.install = function(app) { - app.component(Menu_default.name, Menu_default); - app.component(MenuItem_default.name, MenuItem_default); - app.component(SubMenu_default.name, SubMenu_default); - app.component(Divider_default.name, Divider_default); - app.component(ItemGroup_default.name, ItemGroup_default); - return app; -}; -Menu_default.Item = MenuItem_default; -Menu_default.Divider = Divider_default; -Menu_default.SubMenu = SubMenu_default; -Menu_default.ItemGroup = ItemGroup_default; -var menu_default = Menu_default; - -// node_modules/ant-design-vue/es/breadcrumb/style/index.js -var genBreadcrumbStyle = (token2) => { - const { - componentCls, - iconCls - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - color: token2.breadcrumbBaseColor, - fontSize: token2.breadcrumbFontSize, - [iconCls]: { - fontSize: token2.breadcrumbIconFontSize - }, - ol: { - display: "flex", - flexWrap: "wrap", - margin: 0, - padding: 0, - listStyle: "none" - }, - a: _extends({ - color: token2.breadcrumbLinkColor, - transition: `color ${token2.motionDurationMid}`, - padding: `0 ${token2.paddingXXS}px`, - borderRadius: token2.borderRadiusSM, - height: token2.lineHeight * token2.fontSize, - display: "inline-block", - marginInline: -token2.marginXXS, - "&:hover": { - color: token2.breadcrumbLinkColorHover, - backgroundColor: token2.colorBgTextHover - } - }, genFocusStyle(token2)), - [`li:last-child`]: { - color: token2.breadcrumbLastItemColor, - [`& > ${componentCls}-separator`]: { - display: "none" - } - }, - [`${componentCls}-separator`]: { - marginInline: token2.breadcrumbSeparatorMargin, - color: token2.breadcrumbSeparatorColor - }, - [`${componentCls}-link`]: { - [` - > ${iconCls} + span, - > ${iconCls} + a - `]: { - marginInlineStart: token2.marginXXS - } - }, - [`${componentCls}-overlay-link`]: { - borderRadius: token2.borderRadiusSM, - height: token2.lineHeight * token2.fontSize, - display: "inline-block", - padding: `0 ${token2.paddingXXS}px`, - marginInline: -token2.marginXXS, - [`> ${iconCls}`]: { - marginInlineStart: token2.marginXXS, - fontSize: token2.fontSizeIcon - }, - "&:hover": { - color: token2.breadcrumbLinkColorHover, - backgroundColor: token2.colorBgTextHover, - a: { - color: token2.breadcrumbLinkColorHover - } - }, - a: { - "&:hover": { - backgroundColor: "transparent" - } - } - }, - // rtl style - [`&${token2.componentCls}-rtl`]: { - direction: "rtl" - } - }) - }; -}; -var style_default15 = genComponentStyleHook("Breadcrumb", (token2) => { - const BreadcrumbToken = merge(token2, { - breadcrumbBaseColor: token2.colorTextDescription, - breadcrumbFontSize: token2.fontSize, - breadcrumbIconFontSize: token2.fontSize, - breadcrumbLinkColor: token2.colorTextDescription, - breadcrumbLinkColorHover: token2.colorText, - breadcrumbLastItemColor: token2.colorText, - breadcrumbSeparatorMargin: token2.marginXS, - breadcrumbSeparatorColor: token2.colorTextDescription - }); - return [genBreadcrumbStyle(BreadcrumbToken)]; -}); - -// node_modules/ant-design-vue/es/breadcrumb/Breadcrumb.js -var breadcrumbProps = () => ({ - prefixCls: String, - routes: { - type: Array - }, - params: vue_types_default.any, - separator: vue_types_default.any, - itemRender: { - type: Function - } -}); -function getBreadcrumbName(route, params) { - if (!route.breadcrumbName) { - return null; - } - const paramsKeys = Object.keys(params).join("|"); - const name = route.breadcrumbName.replace(new RegExp(`:(${paramsKeys})`, "g"), (replacement, key2) => params[key2] || replacement); - return name; -} -function defaultItemRender(opt) { - const { - route, - params, - routes, - paths - } = opt; - const isLastItem = routes.indexOf(route) === routes.length - 1; - const name = getBreadcrumbName(route, params); - return isLastItem ? createVNode("span", null, [name]) : createVNode("a", { - "href": `#/${paths.join("/")}` - }, [name]); -} -var Breadcrumb_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABreadcrumb", - inheritAttrs: false, - props: breadcrumbProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("breadcrumb", props4); - const [wrapSSR, hashId] = style_default15(prefixCls); - const getPath = (path2, params) => { - path2 = (path2 || "").replace(/^\//, ""); - Object.keys(params).forEach((key2) => { - path2 = path2.replace(`:${key2}`, params[key2]); - }); - return path2; - }; - const addChildPath = (paths, childPath, params) => { - const originalPaths = [...paths]; - const path2 = getPath(childPath || "", params); - if (path2) { - originalPaths.push(path2); - } - return originalPaths; - }; - const genForRoutes = (_ref2) => { - let { - routes = [], - params = {}, - separator, - itemRender = defaultItemRender - } = _ref2; - const paths = []; - return routes.map((route) => { - const path2 = getPath(route.path, params); - if (path2) { - paths.push(path2); - } - const tempPaths = [...paths]; - let overlay = null; - if (route.children && route.children.length) { - overlay = createVNode(menu_default, { - "items": route.children.map((child) => ({ - key: child.path || child.breadcrumbName, - label: itemRender({ - route: child, - params, - routes, - paths: addChildPath(tempPaths, child.path, params) - }) - })) - }, null); - } - const itemProps = { - separator - }; - if (overlay) { - itemProps.overlay = overlay; - } - return createVNode(BreadcrumbItem_default, _objectSpread2(_objectSpread2({}, itemProps), {}, { - "key": path2 || route.breadcrumbName - }), { - default: () => [itemRender({ - route, - params, - routes, - paths: tempPaths - })] - }); - }); - }; - return () => { - var _a2; - let crumbs; - const { - routes, - params = {} - } = props4; - const children = flattenChildren(getPropsSlot(slots, props4)); - const separator = (_a2 = getPropsSlot(slots, props4, "separator")) !== null && _a2 !== void 0 ? _a2 : "/"; - const itemRender = props4.itemRender || slots.itemRender || defaultItemRender; - if (routes && routes.length > 0) { - crumbs = genForRoutes({ - routes, - params, - separator, - itemRender - }); - } else if (children.length) { - crumbs = children.map((element, index3) => { - warning_default2(typeof element.type === "object" && (element.type.__ANT_BREADCRUMB_ITEM || element.type.__ANT_BREADCRUMB_SEPARATOR), "Breadcrumb", "Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"); - return cloneVNode(element, { - separator, - key: index3 - }); - }); - } - const breadcrumbClassName = { - [prefixCls.value]: true, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${attrs.class}`]: !!attrs.class, - [hashId.value]: true - }; - return wrapSSR(createVNode("nav", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": breadcrumbClassName - }), [createVNode("ol", null, [crumbs])])); - }; - } -}); - -// node_modules/ant-design-vue/es/breadcrumb/BreadcrumbSeparator.js -var __rest18 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var breadcrumbSeparatorProps = () => ({ - prefixCls: String -}); -var BreadcrumbSeparator_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABreadcrumbSeparator", - __ANT_BREADCRUMB_SEPARATOR: true, - inheritAttrs: false, - props: breadcrumbSeparatorProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls - } = useConfigInject_default("breadcrumb", props4); - return () => { - var _a2; - const { - separator, - class: className - } = attrs, restAttrs = __rest18(attrs, ["separator", "class"]); - const children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - return createVNode("span", _objectSpread2({ - "class": [`${prefixCls.value}-separator`, className] - }, restAttrs), [children.length > 0 ? children : "/"]); - }; - } -}); - -// node_modules/ant-design-vue/es/breadcrumb/index.js -Breadcrumb_default.Item = BreadcrumbItem_default; -Breadcrumb_default.Separator = BreadcrumbSeparator_default; -Breadcrumb_default.install = function(app) { - app.component(Breadcrumb_default.name, Breadcrumb_default); - app.component(BreadcrumbItem_default.name, BreadcrumbItem_default); - app.component(BreadcrumbSeparator_default.name, BreadcrumbSeparator_default); - return app; -}; -var breadcrumb_default = Breadcrumb_default; - -// node_modules/ant-design-vue/es/vc-picker/generate/dayjs.js -var import_dayjs = __toESM(require_dayjs_min()); -var import_weekday = __toESM(require_weekday()); -var import_localeData = __toESM(require_localeData()); -var import_weekOfYear = __toESM(require_weekOfYear()); -var import_weekYear = __toESM(require_weekYear()); -var import_quarterOfYear = __toESM(require_quarterOfYear()); -var import_advancedFormat = __toESM(require_advancedFormat()); -var import_customParseFormat = __toESM(require_customParseFormat()); -import_dayjs.default.extend(import_customParseFormat.default); -import_dayjs.default.extend(import_advancedFormat.default); -import_dayjs.default.extend(import_weekday.default); -import_dayjs.default.extend(import_localeData.default); -import_dayjs.default.extend(import_weekOfYear.default); -import_dayjs.default.extend(import_weekYear.default); -import_dayjs.default.extend(import_quarterOfYear.default); -import_dayjs.default.extend((_o, c2) => { - const proto = c2.prototype; - const oldFormat = proto.format; - proto.format = function f2(formatStr) { - const str = (formatStr || "").replace("Wo", "wo"); - return oldFormat.bind(this)(str); - }; -}); -var localeMap = { - // ar_EG: - // az_AZ: - // bg_BG: - bn_BD: "bn-bd", - by_BY: "be", - // ca_ES: - // cs_CZ: - // da_DK: - // de_DE: - // el_GR: - en_GB: "en-gb", - en_US: "en", - // es_ES: - // et_EE: - // fa_IR: - // fi_FI: - fr_BE: "fr", - fr_CA: "fr-ca", - // fr_FR: - // ga_IE: - // gl_ES: - // he_IL: - // hi_IN: - // hr_HR: - // hu_HU: - hy_AM: "hy-am", - // id_ID: - // is_IS: - // it_IT: - // ja_JP: - // ka_GE: - // kk_KZ: - // km_KH: - kmr_IQ: "ku", - // kn_IN: - // ko_KR: - // ku_IQ: // previous ku in antd - // lt_LT: - // lv_LV: - // mk_MK: - // ml_IN: - // mn_MN: - // ms_MY: - // nb_NO: - // ne_NP: - nl_BE: "nl-be", - // nl_NL: - // pl_PL: - pt_BR: "pt-br", - // pt_PT: - // ro_RO: - // ru_RU: - // sk_SK: - // sl_SI: - // sr_RS: - // sv_SE: - // ta_IN: - // th_TH: - // tr_TR: - // uk_UA: - // ur_PK: - // vi_VN: - zh_CN: "zh-cn", - zh_HK: "zh-hk", - zh_TW: "zh-tw" -}; -var parseLocale = (locale4) => { - const mapLocale = localeMap[locale4]; - return mapLocale || locale4.split("_")[0]; -}; -var parseNoMatchNotice = () => { - noteOnce(false, "Not match any format. Please help to fire a issue about this."); -}; -var advancedFormatRegex = /\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|k{1,2}|S/g; -function findTargetStr(val, index3, segmentation) { - const items = [...new Set(val.split(segmentation))]; - let idx = 0; - for (let i3 = 0; i3 < items.length; i3++) { - const item = items[i3]; - idx += item.length; - if (idx > index3) { - return item; - } - idx += segmentation.length; - } -} -var toDateWithValueFormat = (val, valueFormat) => { - if (!val) return null; - if (import_dayjs.default.isDayjs(val)) { - return val; - } - const matchs = valueFormat.matchAll(advancedFormatRegex); - let baseDate = (0, import_dayjs.default)(val, valueFormat); - if (matchs === null) { - return baseDate; - } - for (const match3 of matchs) { - const origin = match3[0]; - const index3 = match3["index"]; - if (origin === "Q") { - const segmentation = val.slice(index3 - 1, index3); - const quarterStr = findTargetStr(val, index3, segmentation).match(/\d+/)[0]; - baseDate = baseDate.quarter(parseInt(quarterStr)); - } - if (origin.toLowerCase() === "wo") { - const segmentation = val.slice(index3 - 1, index3); - const weekStr = findTargetStr(val, index3, segmentation).match(/\d+/)[0]; - baseDate = baseDate.week(parseInt(weekStr)); - } - if (origin.toLowerCase() === "ww") { - baseDate = baseDate.week(parseInt(val.slice(index3, index3 + origin.length))); - } - if (origin.toLowerCase() === "w") { - baseDate = baseDate.week(parseInt(val.slice(index3, index3 + origin.length + 1))); - } - } - return baseDate; -}; -var generateConfig = { - // get - getNow: () => (0, import_dayjs.default)(), - getFixedDate: (string3) => (0, import_dayjs.default)(string3, ["YYYY-M-DD", "YYYY-MM-DD"]), - getEndDate: (date4) => date4.endOf("month"), - getWeekDay: (date4) => { - const clone3 = date4.locale("en"); - return clone3.weekday() + clone3.localeData().firstDayOfWeek(); - }, - getYear: (date4) => date4.year(), - getMonth: (date4) => date4.month(), - getDate: (date4) => date4.date(), - getHour: (date4) => date4.hour(), - getMinute: (date4) => date4.minute(), - getSecond: (date4) => date4.second(), - // set - addYear: (date4, diff) => date4.add(diff, "year"), - addMonth: (date4, diff) => date4.add(diff, "month"), - addDate: (date4, diff) => date4.add(diff, "day"), - setYear: (date4, year) => date4.year(year), - setMonth: (date4, month) => date4.month(month), - setDate: (date4, num) => date4.date(num), - setHour: (date4, hour) => date4.hour(hour), - setMinute: (date4, minute) => date4.minute(minute), - setSecond: (date4, second) => date4.second(second), - // Compare - isAfter: (date1, date22) => date1.isAfter(date22), - isValidate: (date4) => date4.isValid(), - locale: { - getWeekFirstDay: (locale4) => (0, import_dayjs.default)().locale(parseLocale(locale4)).localeData().firstDayOfWeek(), - getWeekFirstDate: (locale4, date4) => date4.locale(parseLocale(locale4)).weekday(0), - getWeek: (locale4, date4) => date4.locale(parseLocale(locale4)).week(), - getShortWeekDays: (locale4) => (0, import_dayjs.default)().locale(parseLocale(locale4)).localeData().weekdaysMin(), - getShortMonths: (locale4) => (0, import_dayjs.default)().locale(parseLocale(locale4)).localeData().monthsShort(), - format: (locale4, date4, format3) => date4.locale(parseLocale(locale4)).format(format3), - parse: (locale4, text, formats) => { - const localeStr = parseLocale(locale4); - for (let i3 = 0; i3 < formats.length; i3 += 1) { - const format3 = formats[i3]; - const formatText = text; - if (format3.includes("wo") || format3.includes("Wo")) { - const year = formatText.split("-")[0]; - const weekStr = formatText.split("-")[1]; - const firstWeek = (0, import_dayjs.default)(year, "YYYY").startOf("year").locale(localeStr); - for (let j2 = 0; j2 <= 52; j2 += 1) { - const nextWeek = firstWeek.add(j2, "week"); - if (nextWeek.format("Wo") === weekStr) { - return nextWeek; - } - } - parseNoMatchNotice(); - return null; - } - const date4 = (0, import_dayjs.default)(formatText, format3, true).locale(localeStr); - if (date4.isValid()) { - return date4; - } - } - if (!text) { - parseNoMatchNotice(); - } - return null; - } - }, - toDate: (value, valueFormat) => { - if (Array.isArray(value)) { - return value.map((val) => toDateWithValueFormat(val, valueFormat)); - } else { - return toDateWithValueFormat(value, valueFormat); - } - }, - toString: (value, valueFormat) => { - if (Array.isArray(value)) { - return value.map((val) => import_dayjs.default.isDayjs(val) ? val.format(valueFormat) : val); - } else { - return import_dayjs.default.isDayjs(value) ? value.format(valueFormat) : value; - } - } -}; -var dayjs_default = generateConfig; - -// node_modules/ant-design-vue/es/vc-picker/hooks/useMergeProps.js -function useMergeProps(props4) { - const attrs = useAttrs(); - return _extends(_extends({}, props4), attrs); -} - -// node_modules/ant-design-vue/es/vc-picker/PanelContext.js -var PanelContextKey = Symbol("PanelContextProps"); -var useProvidePanel = (props4) => { - provide(PanelContextKey, props4); -}; -var useInjectPanel = () => { - return inject(PanelContextKey, {}); -}; - -// node_modules/ant-design-vue/es/vc-picker/panels/Header.js -var HIDDEN_STYLE = { - visibility: "hidden" -}; -function Header(_props, _ref) { - let { - slots - } = _ref; - var _a2; - const props4 = useMergeProps(_props); - const { - prefixCls, - prevIcon = "‹", - nextIcon = "›", - superPrevIcon = "«", - superNextIcon = "»", - onSuperPrev, - onSuperNext, - onPrev, - onNext - } = props4; - const { - hideNextBtn, - hidePrevBtn - } = useInjectPanel(); - return createVNode("div", { - "class": prefixCls - }, [onSuperPrev && createVNode("button", { - "type": "button", - "onClick": onSuperPrev, - "tabindex": -1, - "class": `${prefixCls}-super-prev-btn`, - "style": hidePrevBtn.value ? HIDDEN_STYLE : {} - }, [superPrevIcon]), onPrev && createVNode("button", { - "type": "button", - "onClick": onPrev, - "tabindex": -1, - "class": `${prefixCls}-prev-btn`, - "style": hidePrevBtn.value ? HIDDEN_STYLE : {} - }, [prevIcon]), createVNode("div", { - "class": `${prefixCls}-view` - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]), onNext && createVNode("button", { - "type": "button", - "onClick": onNext, - "tabindex": -1, - "class": `${prefixCls}-next-btn`, - "style": hideNextBtn.value ? HIDDEN_STYLE : {} - }, [nextIcon]), onSuperNext && createVNode("button", { - "type": "button", - "onClick": onSuperNext, - "tabindex": -1, - "class": `${prefixCls}-super-next-btn`, - "style": hideNextBtn.value ? HIDDEN_STYLE : {} - }, [superNextIcon])]); -} -Header.displayName = "Header"; -Header.inheritAttrs = false; -var Header_default = Header; - -// node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeHeader.js -function DecadeHeader(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - viewDate, - onPrevDecades, - onNextDecades - } = props4; - const { - hideHeader - } = useInjectPanel(); - if (hideHeader) { - return null; - } - const headerPrefixCls = `${prefixCls}-header`; - const yearNumber = generateConfig2.getYear(viewDate); - const startYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT; - const endYear = startYear + DECADE_DISTANCE_COUNT - 1; - return createVNode(Header_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": headerPrefixCls, - "onSuperPrev": onPrevDecades, - "onSuperNext": onNextDecades - }), { - default: () => [startYear, createTextVNode("-"), endYear] - }); -} -DecadeHeader.displayName = "DecadeHeader"; -DecadeHeader.inheritAttrs = false; -var DecadeHeader_default = DecadeHeader; - -// node_modules/ant-design-vue/es/vc-picker/utils/timeUtil.js -function setTime(generateConfig2, date4, hour, minute, second) { - let nextTime = generateConfig2.setHour(date4, hour); - nextTime = generateConfig2.setMinute(nextTime, minute); - nextTime = generateConfig2.setSecond(nextTime, second); - return nextTime; -} -function setDateTime(generateConfig2, date4, defaultDate) { - if (!defaultDate) { - return date4; - } - let newDate = date4; - newDate = generateConfig2.setHour(newDate, generateConfig2.getHour(defaultDate)); - newDate = generateConfig2.setMinute(newDate, generateConfig2.getMinute(defaultDate)); - newDate = generateConfig2.setSecond(newDate, generateConfig2.getSecond(defaultDate)); - return newDate; -} -function getLowerBoundTime(hour, minute, second, hourStep, minuteStep, secondStep) { - const lowerBoundHour = Math.floor(hour / hourStep) * hourStep; - if (lowerBoundHour < hour) { - return [lowerBoundHour, 60 - minuteStep, 60 - secondStep]; - } - const lowerBoundMinute = Math.floor(minute / minuteStep) * minuteStep; - if (lowerBoundMinute < minute) { - return [lowerBoundHour, lowerBoundMinute, 60 - secondStep]; - } - const lowerBoundSecond = Math.floor(second / secondStep) * secondStep; - return [lowerBoundHour, lowerBoundMinute, lowerBoundSecond]; -} -function getLastDay(generateConfig2, date4) { - const year = generateConfig2.getYear(date4); - const month = generateConfig2.getMonth(date4) + 1; - const endDate = generateConfig2.getEndDate(generateConfig2.getFixedDate(`${year}-${month}-01`)); - const lastDay = generateConfig2.getDate(endDate); - const monthShow = month < 10 ? `0${month}` : `${month}`; - return `${year}-${monthShow}-${lastDay}`; -} - -// node_modules/ant-design-vue/es/vc-picker/panels/PanelBody.js -function PanelBody(_props) { - const { - prefixCls, - disabledDate, - onSelect, - picker, - rowNum, - colNum, - prefixColumn, - rowClassName, - baseDate, - getCellClassName, - getCellText, - getCellNode, - getCellDate, - generateConfig: generateConfig2, - titleCell, - headerCells - } = useMergeProps(_props); - const { - onDateMouseenter, - onDateMouseleave, - mode - } = useInjectPanel(); - const cellPrefixCls = `${prefixCls}-cell`; - const rows = []; - for (let i3 = 0; i3 < rowNum; i3 += 1) { - const row = []; - let rowStartDate; - for (let j2 = 0; j2 < colNum; j2 += 1) { - const offset4 = i3 * colNum + j2; - const currentDate = getCellDate(baseDate, offset4); - const disabled = getCellDateDisabled({ - cellDate: currentDate, - mode: mode.value, - disabledDate, - generateConfig: generateConfig2 - }); - if (j2 === 0) { - rowStartDate = currentDate; - if (prefixColumn) { - row.push(prefixColumn(rowStartDate)); - } - } - const title = titleCell && titleCell(currentDate); - row.push(createVNode("td", { - "key": j2, - "title": title, - "class": classNames_default(cellPrefixCls, _extends({ - [`${cellPrefixCls}-disabled`]: disabled, - [`${cellPrefixCls}-start`]: getCellText(currentDate) === 1 || picker === "year" && Number(title) % 10 === 0, - [`${cellPrefixCls}-end`]: title === getLastDay(generateConfig2, currentDate) || picker === "year" && Number(title) % 10 === 9 - }, getCellClassName(currentDate))), - "onClick": (e3) => { - e3.stopPropagation(); - if (!disabled) { - onSelect(currentDate); - } - }, - "onMouseenter": () => { - if (!disabled && onDateMouseenter) { - onDateMouseenter(currentDate); - } - }, - "onMouseleave": () => { - if (!disabled && onDateMouseleave) { - onDateMouseleave(currentDate); - } - } - }, [getCellNode ? getCellNode(currentDate) : createVNode("div", { - "class": `${cellPrefixCls}-inner` - }, [getCellText(currentDate)])])); - } - rows.push(createVNode("tr", { - "key": i3, - "class": rowClassName && rowClassName(rowStartDate) - }, [row])); - } - return createVNode("div", { - "class": `${prefixCls}-body` - }, [createVNode("table", { - "class": `${prefixCls}-content` - }, [headerCells && createVNode("thead", null, [createVNode("tr", null, [headerCells])]), createVNode("tbody", null, [rows])])]); -} -PanelBody.displayName = "PanelBody"; -PanelBody.inheritAttrs = false; -var PanelBody_default = PanelBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeBody.js -var DECADE_COL_COUNT = 3; -var DECADE_ROW_COUNT = 4; -function DecadeBody(_props) { - const props4 = useMergeProps(_props); - const DECADE_UNIT_DIFF_DES = DECADE_UNIT_DIFF - 1; - const { - prefixCls, - viewDate, - generateConfig: generateConfig2 - } = props4; - const cellPrefixCls = `${prefixCls}-cell`; - const yearNumber = generateConfig2.getYear(viewDate); - const decadeYearNumber = Math.floor(yearNumber / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF; - const startDecadeYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT; - const endDecadeYear = startDecadeYear + DECADE_DISTANCE_COUNT - 1; - const baseDecadeYear = generateConfig2.setYear(viewDate, startDecadeYear - Math.ceil((DECADE_COL_COUNT * DECADE_ROW_COUNT * DECADE_UNIT_DIFF - DECADE_DISTANCE_COUNT) / 2)); - const getCellClassName = (date4) => { - const startDecadeNumber = generateConfig2.getYear(date4); - const endDecadeNumber = startDecadeNumber + DECADE_UNIT_DIFF_DES; - return { - [`${cellPrefixCls}-in-view`]: startDecadeYear <= startDecadeNumber && endDecadeNumber <= endDecadeYear, - [`${cellPrefixCls}-selected`]: startDecadeNumber === decadeYearNumber - }; - }; - return createVNode(PanelBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "rowNum": DECADE_ROW_COUNT, - "colNum": DECADE_COL_COUNT, - "baseDate": baseDecadeYear, - "getCellText": (date4) => { - const startDecadeNumber = generateConfig2.getYear(date4); - return `${startDecadeNumber}-${startDecadeNumber + DECADE_UNIT_DIFF_DES}`; - }, - "getCellClassName": getCellClassName, - "getCellDate": (date4, offset4) => generateConfig2.addYear(date4, offset4 * DECADE_UNIT_DIFF) - }), null); -} -DecadeBody.displayName = "DecadeBody"; -DecadeBody.inheritAttrs = false; -var DecadeBody_default = DecadeBody; - -// node_modules/ant-design-vue/es/vc-picker/utils/uiUtil.js -var scrollIds = /* @__PURE__ */ new Map(); -function waitElementReady(element, callback) { - let id; - function tryOrNextFrame() { - if (isVisible_default(element)) { - callback(); - } else { - id = wrapperRaf(() => { - tryOrNextFrame(); - }); - } - } - tryOrNextFrame(); - return () => { - wrapperRaf.cancel(id); - }; -} -function scrollTo2(element, to, duration) { - if (scrollIds.get(element)) { - wrapperRaf.cancel(scrollIds.get(element)); - } - if (duration <= 0) { - scrollIds.set(element, wrapperRaf(() => { - element.scrollTop = to; - })); - return; - } - const difference2 = to - element.scrollTop; - const perTick = difference2 / duration * 10; - scrollIds.set(element, wrapperRaf(() => { - element.scrollTop += perTick; - if (element.scrollTop !== to) { - scrollTo2(element, to, duration - 10); - } - })); -} -function createKeydownHandler(event, _ref) { - let { - onLeftRight, - onCtrlLeftRight, - onUpDown, - onPageUpDown, - onEnter - } = _ref; - const { - which, - ctrlKey, - metaKey - } = event; - switch (which) { - case KeyCode_default.LEFT: - if (ctrlKey || metaKey) { - if (onCtrlLeftRight) { - onCtrlLeftRight(-1); - return true; - } - } else if (onLeftRight) { - onLeftRight(-1); - return true; - } - break; - case KeyCode_default.RIGHT: - if (ctrlKey || metaKey) { - if (onCtrlLeftRight) { - onCtrlLeftRight(1); - return true; - } - } else if (onLeftRight) { - onLeftRight(1); - return true; - } - break; - case KeyCode_default.UP: - if (onUpDown) { - onUpDown(-1); - return true; - } - break; - case KeyCode_default.DOWN: - if (onUpDown) { - onUpDown(1); - return true; - } - break; - case KeyCode_default.PAGE_UP: - if (onPageUpDown) { - onPageUpDown(-1); - return true; - } - break; - case KeyCode_default.PAGE_DOWN: - if (onPageUpDown) { - onPageUpDown(1); - return true; - } - break; - case KeyCode_default.ENTER: - if (onEnter) { - onEnter(); - return true; - } - break; - } - return false; -} -function getDefaultFormat(format3, picker, showTime, use12Hours) { - let mergedFormat = format3; - if (!mergedFormat) { - switch (picker) { - case "time": - mergedFormat = use12Hours ? "hh:mm:ss a" : "HH:mm:ss"; - break; - case "week": - mergedFormat = "gggg-wo"; - break; - case "month": - mergedFormat = "YYYY-MM"; - break; - case "quarter": - mergedFormat = "YYYY-[Q]Q"; - break; - case "year": - mergedFormat = "YYYY"; - break; - default: - mergedFormat = showTime ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD"; - } - } - return mergedFormat; -} -function getInputSize(picker, format3, generateConfig2) { - const defaultSize = picker === "time" ? 8 : 10; - const length2 = typeof format3 === "function" ? format3(generateConfig2.getNow()).length : format3.length; - return Math.max(defaultSize, length2) + 2; -} -var globalClickFunc = null; -var clickCallbacks = /* @__PURE__ */ new Set(); -function addGlobalMousedownEvent(callback) { - if (!globalClickFunc && typeof window !== "undefined" && window.addEventListener) { - globalClickFunc = (e3) => { - [...clickCallbacks].forEach((queueFunc) => { - queueFunc(e3); - }); - }; - window.addEventListener("mousedown", globalClickFunc); - } - clickCallbacks.add(callback); - return () => { - clickCallbacks.delete(callback); - if (clickCallbacks.size === 0) { - window.removeEventListener("mousedown", globalClickFunc); - globalClickFunc = null; - } - }; -} -function getTargetFromEvent(e3) { - var _a2; - const target = e3.target; - if (e3.composed && target.shadowRoot) { - return ((_a2 = e3.composedPath) === null || _a2 === void 0 ? void 0 : _a2.call(e3)[0]) || target; - } - return target; -} -var getYearNextMode = (next2) => { - if (next2 === "month" || next2 === "date") { - return "year"; - } - return next2; -}; -var getMonthNextMode = (next2) => { - if (next2 === "date") { - return "month"; - } - return next2; -}; -var getQuarterNextMode = (next2) => { - if (next2 === "month" || next2 === "date") { - return "quarter"; - } - return next2; -}; -var getWeekNextMode = (next2) => { - if (next2 === "date") { - return "week"; - } - return next2; -}; -var PickerModeMap = { - year: getYearNextMode, - month: getMonthNextMode, - quarter: getQuarterNextMode, - week: getWeekNextMode, - time: null, - date: null -}; -function elementsContains(elements, target) { - if (false) { - return false; - } - return elements.some((ele) => ele && ele.contains(target)); -} - -// node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/index.js -var DECADE_UNIT_DIFF = 10; -var DECADE_DISTANCE_COUNT = DECADE_UNIT_DIFF * 10; -function DecadePanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - onViewDateChange, - generateConfig: generateConfig2, - viewDate, - operationRef, - onSelect, - onPanelChange - } = props4; - const panelPrefixCls = `${prefixCls}-decade-panel`; - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, { - onLeftRight: (diff) => { - onSelect(generateConfig2.addYear(viewDate, diff * DECADE_UNIT_DIFF), "key"); - }, - onCtrlLeftRight: (diff) => { - onSelect(generateConfig2.addYear(viewDate, diff * DECADE_DISTANCE_COUNT), "key"); - }, - onUpDown: (diff) => { - onSelect(generateConfig2.addYear(viewDate, diff * DECADE_UNIT_DIFF * DECADE_COL_COUNT), "key"); - }, - onEnter: () => { - onPanelChange("year", viewDate); - } - }) - }; - const onDecadesChange = (diff) => { - const newDate = generateConfig2.addYear(viewDate, diff * DECADE_DISTANCE_COUNT); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - const onInternalSelect = (date4) => { - onSelect(date4, "mouse"); - onPanelChange("year", date4); - }; - return createVNode("div", { - "class": panelPrefixCls - }, [createVNode(DecadeHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onPrevDecades": () => { - onDecadesChange(-1); - }, - "onNextDecades": () => { - onDecadesChange(1); - } - }), null), createVNode(DecadeBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onSelect": onInternalSelect - }), null)]); -} -DecadePanel.displayName = "DecadePanel"; -DecadePanel.inheritAttrs = false; -var DecadePanel_default = DecadePanel; - -// node_modules/ant-design-vue/es/vc-picker/utils/dateUtil.js -var WEEK_DAY_COUNT = 7; -function isNullEqual(value1, value2) { - if (!value1 && !value2) { - return true; - } - if (!value1 || !value2) { - return false; - } - return void 0; -} -function isSameDecade(generateConfig2, decade1, decade2) { - const equal = isNullEqual(decade1, decade2); - if (typeof equal === "boolean") { - return equal; - } - const num1 = Math.floor(generateConfig2.getYear(decade1) / 10); - const num2 = Math.floor(generateConfig2.getYear(decade2) / 10); - return num1 === num2; -} -function isSameYear(generateConfig2, year1, year2) { - const equal = isNullEqual(year1, year2); - if (typeof equal === "boolean") { - return equal; - } - return generateConfig2.getYear(year1) === generateConfig2.getYear(year2); -} -function getQuarter(generateConfig2, date4) { - const quota = Math.floor(generateConfig2.getMonth(date4) / 3); - return quota + 1; -} -function isSameQuarter(generateConfig2, quarter1, quarter2) { - const equal = isNullEqual(quarter1, quarter2); - if (typeof equal === "boolean") { - return equal; - } - return isSameYear(generateConfig2, quarter1, quarter2) && getQuarter(generateConfig2, quarter1) === getQuarter(generateConfig2, quarter2); -} -function isSameMonth(generateConfig2, month1, month2) { - const equal = isNullEqual(month1, month2); - if (typeof equal === "boolean") { - return equal; - } - return isSameYear(generateConfig2, month1, month2) && generateConfig2.getMonth(month1) === generateConfig2.getMonth(month2); -} -function isSameDate(generateConfig2, date1, date22) { - const equal = isNullEqual(date1, date22); - if (typeof equal === "boolean") { - return equal; - } - return generateConfig2.getYear(date1) === generateConfig2.getYear(date22) && generateConfig2.getMonth(date1) === generateConfig2.getMonth(date22) && generateConfig2.getDate(date1) === generateConfig2.getDate(date22); -} -function isSameTime(generateConfig2, time1, time2) { - const equal = isNullEqual(time1, time2); - if (typeof equal === "boolean") { - return equal; - } - return generateConfig2.getHour(time1) === generateConfig2.getHour(time2) && generateConfig2.getMinute(time1) === generateConfig2.getMinute(time2) && generateConfig2.getSecond(time1) === generateConfig2.getSecond(time2); -} -function isSameWeek(generateConfig2, locale4, date1, date22) { - const equal = isNullEqual(date1, date22); - if (typeof equal === "boolean") { - return equal; - } - return generateConfig2.locale.getWeek(locale4, date1) === generateConfig2.locale.getWeek(locale4, date22); -} -function isEqual2(generateConfig2, value1, value2) { - return isSameDate(generateConfig2, value1, value2) && isSameTime(generateConfig2, value1, value2); -} -function isInRange(generateConfig2, startDate, endDate, current) { - if (!startDate || !endDate || !current) { - return false; - } - return !isSameDate(generateConfig2, startDate, current) && !isSameDate(generateConfig2, endDate, current) && generateConfig2.isAfter(current, startDate) && generateConfig2.isAfter(endDate, current); -} -function getWeekStartDate(locale4, generateConfig2, value) { - const weekFirstDay = generateConfig2.locale.getWeekFirstDay(locale4); - const monthStartDate = generateConfig2.setDate(value, 1); - const startDateWeekDay = generateConfig2.getWeekDay(monthStartDate); - let alignStartDate = generateConfig2.addDate(monthStartDate, weekFirstDay - startDateWeekDay); - if (generateConfig2.getMonth(alignStartDate) === generateConfig2.getMonth(value) && generateConfig2.getDate(alignStartDate) > 1) { - alignStartDate = generateConfig2.addDate(alignStartDate, -7); - } - return alignStartDate; -} -function getClosingViewDate(viewDate, picker, generateConfig2) { - let offset4 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1; - switch (picker) { - case "year": - return generateConfig2.addYear(viewDate, offset4 * 10); - case "quarter": - case "month": - return generateConfig2.addYear(viewDate, offset4); - default: - return generateConfig2.addMonth(viewDate, offset4); - } -} -function formatValue(value, _ref) { - let { - generateConfig: generateConfig2, - locale: locale4, - format: format3 - } = _ref; - return typeof format3 === "function" ? format3(value) : generateConfig2.locale.format(locale4.locale, value, format3); -} -function parseValue(value, _ref2) { - let { - generateConfig: generateConfig2, - locale: locale4, - formatList - } = _ref2; - if (!value || typeof formatList[0] === "function") { - return null; - } - return generateConfig2.locale.parse(locale4.locale, value, formatList); -} -function getCellDateDisabled(_ref3) { - let { - cellDate, - mode, - disabledDate, - generateConfig: generateConfig2 - } = _ref3; - if (!disabledDate) return false; - const getDisabledFromRange = (currentMode, start, end) => { - let current = start; - while (current <= end) { - let date4; - switch (currentMode) { - case "date": { - date4 = generateConfig2.setDate(cellDate, current); - if (!disabledDate(date4)) { - return false; - } - break; - } - case "month": { - date4 = generateConfig2.setMonth(cellDate, current); - if (!getCellDateDisabled({ - cellDate: date4, - mode: "month", - generateConfig: generateConfig2, - disabledDate - })) { - return false; - } - break; - } - case "year": { - date4 = generateConfig2.setYear(cellDate, current); - if (!getCellDateDisabled({ - cellDate: date4, - mode: "year", - generateConfig: generateConfig2, - disabledDate - })) { - return false; - } - break; - } - } - current += 1; - } - return true; - }; - switch (mode) { - case "date": - case "week": { - return disabledDate(cellDate); - } - case "month": { - const startDate = 1; - const endDate = generateConfig2.getDate(generateConfig2.getEndDate(cellDate)); - return getDisabledFromRange("date", startDate, endDate); - } - case "quarter": { - const startMonth = Math.floor(generateConfig2.getMonth(cellDate) / 3) * 3; - const endMonth = startMonth + 2; - return getDisabledFromRange("month", startMonth, endMonth); - } - case "year": { - return getDisabledFromRange("month", 0, 11); - } - case "decade": { - const year = generateConfig2.getYear(cellDate); - const startYear = Math.floor(year / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF; - const endYear = startYear + DECADE_UNIT_DIFF - 1; - return getDisabledFromRange("year", startYear, endYear); - } - } -} - -// node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeHeader.js -function TimeHeader(_props) { - const props4 = useMergeProps(_props); - const { - hideHeader - } = useInjectPanel(); - if (hideHeader.value) { - return null; - } - const { - prefixCls, - generateConfig: generateConfig2, - locale: locale4, - value, - format: format3 - } = props4; - const headerPrefixCls = `${prefixCls}-header`; - return createVNode(Header_default, { - "prefixCls": headerPrefixCls - }, { - default: () => [value ? formatValue(value, { - locale: locale4, - format: format3, - generateConfig: generateConfig2 - }) : " "] - }); -} -TimeHeader.displayName = "TimeHeader"; -TimeHeader.inheritAttrs = false; -var TimeHeader_default = TimeHeader; - -// node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeUnitColumn.js -var TimeUnitColumn_default = defineComponent({ - name: "TimeUnitColumn", - props: ["prefixCls", "units", "onSelect", "value", "active", "hideDisabledOptions"], - setup(props4) { - const { - open: open2 - } = useInjectPanel(); - const ulRef = shallowRef(null); - const liRefs = ref(/* @__PURE__ */ new Map()); - const scrollRef = ref(); - watch(() => props4.value, () => { - const li = liRefs.value.get(props4.value); - if (li && open2.value !== false) { - scrollTo2(ulRef.value, li.offsetTop, 120); - } - }); - onBeforeUnmount(() => { - var _a2; - (_a2 = scrollRef.value) === null || _a2 === void 0 ? void 0 : _a2.call(scrollRef); - }); - watch(open2, () => { - var _a2; - (_a2 = scrollRef.value) === null || _a2 === void 0 ? void 0 : _a2.call(scrollRef); - nextTick(() => { - if (open2.value) { - const li = liRefs.value.get(props4.value); - if (li) { - scrollRef.value = waitElementReady(li, () => { - scrollTo2(ulRef.value, li.offsetTop, 0); - }); - } - } - }); - }, { - immediate: true, - flush: "post" - }); - return () => { - const { - prefixCls, - units, - onSelect, - value, - active, - hideDisabledOptions - } = props4; - const cellPrefixCls = `${prefixCls}-cell`; - return createVNode("ul", { - "class": classNames_default(`${prefixCls}-column`, { - [`${prefixCls}-column-active`]: active - }), - "ref": ulRef, - "style": { - position: "relative" - } - }, [units.map((unit) => { - if (hideDisabledOptions && unit.disabled) { - return null; - } - return createVNode("li", { - "key": unit.value, - "ref": (element) => { - liRefs.value.set(unit.value, element); - }, - "class": classNames_default(cellPrefixCls, { - [`${cellPrefixCls}-disabled`]: unit.disabled, - [`${cellPrefixCls}-selected`]: value === unit.value - }), - "onClick": () => { - if (unit.disabled) { - return; - } - onSelect(unit.value); - } - }, [createVNode("div", { - "class": `${cellPrefixCls}-inner` - }, [unit.label])]); - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-picker/utils/miscUtil.js -function leftPad(str, length2) { - let fill2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "0"; - let current = String(str); - while (current.length < length2) { - current = `${fill2}${str}`; - } - return current; -} -var tuple2 = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return args; -}; -function toArray3(val) { - if (val === null || val === void 0) { - return []; - } - return Array.isArray(val) ? val : [val]; -} -function getDataOrAriaProps(props4) { - const retProps = {}; - Object.keys(props4).forEach((key2) => { - if ((key2.startsWith("data-") || key2.startsWith("aria-") || key2 === "role" || key2 === "name") && !key2.startsWith("data-__")) { - retProps[key2] = props4[key2]; - } - }); - return retProps; -} -function getValue2(values2, index3) { - return values2 ? values2[index3] : null; -} -function updateValues(values2, value, index3) { - const newValues = [getValue2(values2, 0), getValue2(values2, 1)]; - newValues[index3] = typeof value === "function" ? value(newValues[index3]) : value; - if (!newValues[0] && !newValues[1]) { - return null; - } - return newValues; -} - -// node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeBody.js -function generateUnits(start, end, step, disabledUnits) { - const units = []; - for (let i3 = start; i3 <= end; i3 += step) { - units.push({ - label: leftPad(i3, 2), - value: i3, - disabled: (disabledUnits || []).includes(i3) - }); - } - return units; -} -var TimeBody = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TimeBody", - inheritAttrs: false, - props: ["generateConfig", "prefixCls", "operationRef", "activeColumnIndex", "value", "showHour", "showMinute", "showSecond", "use12Hours", "hourStep", "minuteStep", "secondStep", "disabledHours", "disabledMinutes", "disabledSeconds", "disabledTime", "hideDisabledOptions", "onSelect"], - setup(props4) { - const originHour = computed(() => props4.value ? props4.generateConfig.getHour(props4.value) : -1); - const isPM = computed(() => { - if (props4.use12Hours) { - return originHour.value >= 12; - } else { - return false; - } - }); - const hour = computed(() => { - if (props4.use12Hours) { - return originHour.value % 12; - } else { - return originHour.value; - } - }); - const minute = computed(() => props4.value ? props4.generateConfig.getMinute(props4.value) : -1); - const second = computed(() => props4.value ? props4.generateConfig.getSecond(props4.value) : -1); - const now5 = ref(props4.generateConfig.getNow()); - const mergedDisabledHours = ref(); - const mergedDisabledMinutes = ref(); - const mergedDisabledSeconds = ref(); - onBeforeUpdate(() => { - now5.value = props4.generateConfig.getNow(); - }); - watchEffect(() => { - if (props4.disabledTime) { - const disabledConfig = props4.disabledTime(now5); - [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [disabledConfig.disabledHours, disabledConfig.disabledMinutes, disabledConfig.disabledSeconds]; - } else { - [mergedDisabledHours.value, mergedDisabledMinutes.value, mergedDisabledSeconds.value] = [props4.disabledHours, props4.disabledMinutes, props4.disabledSeconds]; - } - }); - const setTime2 = (isNewPM, newHour, newMinute, newSecond) => { - let newDate = props4.value || props4.generateConfig.getNow(); - const mergedHour = Math.max(0, newHour); - const mergedMinute = Math.max(0, newMinute); - const mergedSecond = Math.max(0, newSecond); - newDate = setTime(props4.generateConfig, newDate, !props4.use12Hours || !isNewPM ? mergedHour : mergedHour + 12, mergedMinute, mergedSecond); - return newDate; - }; - const rawHours = computed(() => { - var _a2; - return generateUnits(0, 23, (_a2 = props4.hourStep) !== null && _a2 !== void 0 ? _a2 : 1, mergedDisabledHours.value && mergedDisabledHours.value()); - }); - const AMPMDisabled = computed(() => { - if (!props4.use12Hours) { - return [false, false]; - } - const AMPMDisabled2 = [true, true]; - rawHours.value.forEach((_ref) => { - let { - disabled, - value: hourValue - } = _ref; - if (disabled) return; - if (hourValue >= 12) { - AMPMDisabled2[1] = false; - } else { - AMPMDisabled2[0] = false; - } - }); - return AMPMDisabled2; - }); - const hours = computed(() => { - if (!props4.use12Hours) return rawHours.value; - return rawHours.value.filter(isPM.value ? (hourMeta) => hourMeta.value >= 12 : (hourMeta) => hourMeta.value < 12).map((hourMeta) => { - const hourValue = hourMeta.value % 12; - const hourLabel = hourValue === 0 ? "12" : leftPad(hourValue, 2); - return _extends(_extends({}, hourMeta), { - label: hourLabel, - value: hourValue - }); - }); - }); - const minutes = computed(() => { - var _a2; - return generateUnits(0, 59, (_a2 = props4.minuteStep) !== null && _a2 !== void 0 ? _a2 : 1, mergedDisabledMinutes.value && mergedDisabledMinutes.value(originHour.value)); - }); - const seconds = computed(() => { - var _a2; - return generateUnits(0, 59, (_a2 = props4.secondStep) !== null && _a2 !== void 0 ? _a2 : 1, mergedDisabledSeconds.value && mergedDisabledSeconds.value(originHour.value, minute.value)); - }); - return () => { - const { - prefixCls, - operationRef, - activeColumnIndex, - showHour, - showMinute, - showSecond, - use12Hours, - hideDisabledOptions, - onSelect - } = props4; - const columns = []; - const contentPrefixCls = `${prefixCls}-content`; - const columnPrefixCls = `${prefixCls}-time-panel`; - operationRef.value = { - onUpDown: (diff) => { - const column2 = columns[activeColumnIndex]; - if (column2) { - const valueIndex = column2.units.findIndex((unit) => unit.value === column2.value); - const unitLen = column2.units.length; - for (let i3 = 1; i3 < unitLen; i3 += 1) { - const nextUnit = column2.units[(valueIndex + diff * i3 + unitLen) % unitLen]; - if (nextUnit.disabled !== true) { - column2.onSelect(nextUnit.value); - break; - } - } - } - } - }; - function addColumnNode(condition, node2, columnValue, units, onColumnSelect) { - if (condition !== false) { - columns.push({ - node: cloneElement(node2, { - prefixCls: columnPrefixCls, - value: columnValue, - active: activeColumnIndex === columns.length, - onSelect: onColumnSelect, - units, - hideDisabledOptions - }), - onSelect: onColumnSelect, - value: columnValue, - units - }); - } - } - addColumnNode(showHour, createVNode(TimeUnitColumn_default, { - "key": "hour" - }, null), hour.value, hours.value, (num) => { - onSelect(setTime2(isPM.value, num, minute.value, second.value), "mouse"); - }); - addColumnNode(showMinute, createVNode(TimeUnitColumn_default, { - "key": "minute" - }, null), minute.value, minutes.value, (num) => { - onSelect(setTime2(isPM.value, hour.value, num, second.value), "mouse"); - }); - addColumnNode(showSecond, createVNode(TimeUnitColumn_default, { - "key": "second" - }, null), second.value, seconds.value, (num) => { - onSelect(setTime2(isPM.value, hour.value, minute.value, num), "mouse"); - }); - let PMIndex = -1; - if (typeof isPM.value === "boolean") { - PMIndex = isPM.value ? 1 : 0; - } - addColumnNode(use12Hours === true, createVNode(TimeUnitColumn_default, { - "key": "12hours" - }, null), PMIndex, [{ - label: "AM", - value: 0, - disabled: AMPMDisabled.value[0] - }, { - label: "PM", - value: 1, - disabled: AMPMDisabled.value[1] - }], (num) => { - onSelect(setTime2(!!num, hour.value, minute.value, second.value), "mouse"); - }); - return createVNode("div", { - "class": contentPrefixCls - }, [columns.map((_ref2) => { - let { - node: node2 - } = _ref2; - return node2; - })]); - }; - } -}); -var TimeBody_default = TimeBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/index.js -var countBoolean = (boolList) => boolList.filter((bool) => bool !== false).length; -function TimePanel(_props) { - const props4 = useMergeProps(_props); - const { - generateConfig: generateConfig2, - format: format3 = "HH:mm:ss", - prefixCls, - active, - operationRef, - showHour, - showMinute, - showSecond, - use12Hours = false, - onSelect, - value - } = props4; - const panelPrefixCls = `${prefixCls}-time-panel`; - const bodyOperationRef = ref(); - const activeColumnIndex = ref(-1); - const columnsCount = countBoolean([showHour, showMinute, showSecond, use12Hours]); - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, { - onLeftRight: (diff) => { - activeColumnIndex.value = (activeColumnIndex.value + diff + columnsCount) % columnsCount; - }, - onUpDown: (diff) => { - if (activeColumnIndex.value === -1) { - activeColumnIndex.value = 0; - } else if (bodyOperationRef.value) { - bodyOperationRef.value.onUpDown(diff); - } - }, - onEnter: () => { - onSelect(value || generateConfig2.getNow(), "key"); - activeColumnIndex.value = -1; - } - }), - onBlur: () => { - activeColumnIndex.value = -1; - } - }; - return createVNode("div", { - "class": classNames_default(panelPrefixCls, { - [`${panelPrefixCls}-active`]: active - }) - }, [createVNode(TimeHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "format": format3, - "prefixCls": prefixCls - }), null), createVNode(TimeBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "activeColumnIndex": activeColumnIndex.value, - "operationRef": bodyOperationRef - }), null)]); -} -TimePanel.displayName = "TimePanel"; -TimePanel.inheritAttrs = false; -var TimePanel_default = TimePanel; - -// node_modules/ant-design-vue/es/vc-picker/hooks/useCellClassName.js -function useCellClassName(_ref) { - let { - cellPrefixCls, - generateConfig: generateConfig2, - rangedValue, - hoverRangedValue, - isInView, - isSameCell, - offsetCell, - today, - value - } = _ref; - function getClassName(currentDate) { - const prevDate = offsetCell(currentDate, -1); - const nextDate = offsetCell(currentDate, 1); - const rangeStart = getValue2(rangedValue, 0); - const rangeEnd = getValue2(rangedValue, 1); - const hoverStart = getValue2(hoverRangedValue, 0); - const hoverEnd = getValue2(hoverRangedValue, 1); - const isRangeHovered = isInRange(generateConfig2, hoverStart, hoverEnd, currentDate); - function isRangeStart(date4) { - return isSameCell(rangeStart, date4); - } - function isRangeEnd(date4) { - return isSameCell(rangeEnd, date4); - } - const isHoverStart = isSameCell(hoverStart, currentDate); - const isHoverEnd = isSameCell(hoverEnd, currentDate); - const isHoverEdgeStart = (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate)); - const isHoverEdgeEnd = (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate)); - return { - // In view - [`${cellPrefixCls}-in-view`]: isInView(currentDate), - // Range - [`${cellPrefixCls}-in-range`]: isInRange(generateConfig2, rangeStart, rangeEnd, currentDate), - [`${cellPrefixCls}-range-start`]: isRangeStart(currentDate), - [`${cellPrefixCls}-range-end`]: isRangeEnd(currentDate), - [`${cellPrefixCls}-range-start-single`]: isRangeStart(currentDate) && !rangeEnd, - [`${cellPrefixCls}-range-end-single`]: isRangeEnd(currentDate) && !rangeStart, - [`${cellPrefixCls}-range-start-near-hover`]: isRangeStart(currentDate) && (isSameCell(prevDate, hoverStart) || isInRange(generateConfig2, hoverStart, hoverEnd, prevDate)), - [`${cellPrefixCls}-range-end-near-hover`]: isRangeEnd(currentDate) && (isSameCell(nextDate, hoverEnd) || isInRange(generateConfig2, hoverStart, hoverEnd, nextDate)), - // Range Hover - [`${cellPrefixCls}-range-hover`]: isRangeHovered, - [`${cellPrefixCls}-range-hover-start`]: isHoverStart, - [`${cellPrefixCls}-range-hover-end`]: isHoverEnd, - // Range Edge - [`${cellPrefixCls}-range-hover-edge-start`]: isHoverEdgeStart, - [`${cellPrefixCls}-range-hover-edge-end`]: isHoverEdgeEnd, - [`${cellPrefixCls}-range-hover-edge-start-near-range`]: isHoverEdgeStart && isSameCell(prevDate, rangeEnd), - [`${cellPrefixCls}-range-hover-edge-end-near-range`]: isHoverEdgeEnd && isSameCell(nextDate, rangeStart), - // Others - [`${cellPrefixCls}-today`]: isSameCell(today, currentDate), - [`${cellPrefixCls}-selected`]: isSameCell(value, currentDate) - }; - } - return getClassName; -} - -// node_modules/ant-design-vue/es/vc-picker/RangeContext.js -var RangeContextKey = Symbol("RangeContextProps"); -var useProvideRange = (props4) => { - provide(RangeContextKey, props4); -}; -var useInjectRange = () => { - return inject(RangeContextKey, { - rangedValue: ref(), - hoverRangedValue: ref(), - inRange: ref(), - panelPosition: ref() - }); -}; -var RangeContextProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PanelContextProvider", - inheritAttrs: false, - props: { - value: { - type: Object, - default: () => ({}) - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const value = { - rangedValue: ref(props4.value.rangedValue), - hoverRangedValue: ref(props4.value.hoverRangedValue), - inRange: ref(props4.value.inRange), - panelPosition: ref(props4.value.panelPosition) - }; - useProvideRange(value); - toRef; - watch(() => props4.value, () => { - Object.keys(props4.value).forEach((key2) => { - if (value[key2]) { - value[key2].value = props4.value[key2]; - } - }); - }); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateBody.js -function DateBody(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - prefixColumn, - locale: locale4, - rowCount, - viewDate, - value, - dateRender - } = props4; - const { - rangedValue, - hoverRangedValue - } = useInjectRange(); - const baseDate = getWeekStartDate(locale4.locale, generateConfig2, viewDate); - const cellPrefixCls = `${prefixCls}-cell`; - const weekFirstDay = generateConfig2.locale.getWeekFirstDay(locale4.locale); - const today = generateConfig2.getNow(); - const headerCells = []; - const weekDaysLocale = locale4.shortWeekDays || (generateConfig2.locale.getShortWeekDays ? generateConfig2.locale.getShortWeekDays(locale4.locale) : []); - if (prefixColumn) { - headerCells.push(createVNode("th", { - "key": "empty", - "aria-label": "empty cell" - }, null)); - } - for (let i3 = 0; i3 < WEEK_DAY_COUNT; i3 += 1) { - headerCells.push(createVNode("th", { - "key": i3 - }, [weekDaysLocale[(i3 + weekFirstDay) % WEEK_DAY_COUNT]])); - } - const getCellClassName = useCellClassName({ - cellPrefixCls, - today, - value, - generateConfig: generateConfig2, - rangedValue: prefixColumn ? null : rangedValue.value, - hoverRangedValue: prefixColumn ? null : hoverRangedValue.value, - isSameCell: (current, target) => isSameDate(generateConfig2, current, target), - isInView: (date4) => isSameMonth(generateConfig2, date4, viewDate), - offsetCell: (date4, offset4) => generateConfig2.addDate(date4, offset4) - }); - const getCellNode = dateRender ? (date4) => dateRender({ - current: date4, - today - }) : void 0; - return createVNode(PanelBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "rowNum": rowCount, - "colNum": WEEK_DAY_COUNT, - "baseDate": baseDate, - "getCellNode": getCellNode, - "getCellText": generateConfig2.getDate, - "getCellClassName": getCellClassName, - "getCellDate": generateConfig2.addDate, - "titleCell": (date4) => formatValue(date4, { - locale: locale4, - format: "YYYY-MM-DD", - generateConfig: generateConfig2 - }), - "headerCells": headerCells - }), null); -} -DateBody.displayName = "DateBody"; -DateBody.inheritAttrs = false; -DateBody.props = [ - "prefixCls", - "generateConfig", - "value?", - "viewDate", - "locale", - "rowCount", - "onSelect", - "dateRender?", - "disabledDate?", - // Used for week panel - "prefixColumn?", - "rowClassName?" -]; -var DateBody_default = DateBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateHeader.js -function DateHeader(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - locale: locale4, - viewDate, - onNextMonth, - onPrevMonth, - onNextYear, - onPrevYear, - onYearClick, - onMonthClick - } = props4; - const { - hideHeader - } = useInjectPanel(); - if (hideHeader.value) { - return null; - } - const headerPrefixCls = `${prefixCls}-header`; - const monthsLocale = locale4.shortMonths || (generateConfig2.locale.getShortMonths ? generateConfig2.locale.getShortMonths(locale4.locale) : []); - const month = generateConfig2.getMonth(viewDate); - const yearNode = createVNode("button", { - "type": "button", - "key": "year", - "onClick": onYearClick, - "tabindex": -1, - "class": `${prefixCls}-year-btn` - }, [formatValue(viewDate, { - locale: locale4, - format: locale4.yearFormat, - generateConfig: generateConfig2 - })]); - const monthNode = createVNode("button", { - "type": "button", - "key": "month", - "onClick": onMonthClick, - "tabindex": -1, - "class": `${prefixCls}-month-btn` - }, [locale4.monthFormat ? formatValue(viewDate, { - locale: locale4, - format: locale4.monthFormat, - generateConfig: generateConfig2 - }) : monthsLocale[month]]); - const monthYearNodes = locale4.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode]; - return createVNode(Header_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": headerPrefixCls, - "onSuperPrev": onPrevYear, - "onPrev": onPrevMonth, - "onNext": onNextMonth, - "onSuperNext": onNextYear - }), { - default: () => [monthYearNodes] - }); -} -DateHeader.displayName = "DateHeader"; -DateHeader.inheritAttrs = false; -var DateHeader_default = DateHeader; - -// node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/index.js -var DATE_ROW_COUNT = 6; -function DatePanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - panelName = "date", - keyboardConfig, - active, - operationRef, - generateConfig: generateConfig2, - value, - viewDate, - onViewDateChange, - onPanelChange, - onSelect - } = props4; - const panelPrefixCls = `${prefixCls}-${panelName}-panel`; - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, _extends({ - onLeftRight: (diff) => { - onSelect(generateConfig2.addDate(value || viewDate, diff), "key"); - }, - onCtrlLeftRight: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff), "key"); - }, - onUpDown: (diff) => { - onSelect(generateConfig2.addDate(value || viewDate, diff * WEEK_DAY_COUNT), "key"); - }, - onPageUpDown: (diff) => { - onSelect(generateConfig2.addMonth(value || viewDate, diff), "key"); - } - }, keyboardConfig)) - }; - const onYearChange = (diff) => { - const newDate = generateConfig2.addYear(viewDate, diff); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - const onMonthChange = (diff) => { - const newDate = generateConfig2.addMonth(viewDate, diff); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - return createVNode("div", { - "class": classNames_default(panelPrefixCls, { - [`${panelPrefixCls}-active`]: active - }) - }, [createVNode(DateHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "value": value, - "viewDate": viewDate, - "onPrevYear": () => { - onYearChange(-1); - }, - "onNextYear": () => { - onYearChange(1); - }, - "onPrevMonth": () => { - onMonthChange(-1); - }, - "onNextMonth": () => { - onMonthChange(1); - }, - "onMonthClick": () => { - onPanelChange("month", viewDate); - }, - "onYearClick": () => { - onPanelChange("year", viewDate); - } - }), null), createVNode(DateBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "onSelect": (date4) => onSelect(date4, "mouse"), - "prefixCls": prefixCls, - "value": value, - "viewDate": viewDate, - "rowCount": DATE_ROW_COUNT - }), null)]); -} -DatePanel.displayName = "DatePanel"; -DatePanel.inheritAttrs = false; -var DatePanel_default = DatePanel; - -// node_modules/ant-design-vue/es/vc-picker/panels/DatetimePanel/index.js -var ACTIVE_PANEL = tuple2("date", "time"); -function DatetimePanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - operationRef, - generateConfig: generateConfig2, - value, - defaultValue, - disabledTime, - showTime, - onSelect - } = props4; - const panelPrefixCls = `${prefixCls}-datetime-panel`; - const activePanel = ref(null); - const dateOperationRef = ref({}); - const timeOperationRef = ref({}); - const timeProps = typeof showTime === "object" ? _extends({}, showTime) : {}; - function getNextActive(offset4) { - const activeIndex = ACTIVE_PANEL.indexOf(activePanel.value) + offset4; - const nextActivePanel = ACTIVE_PANEL[activeIndex] || null; - return nextActivePanel; - } - const onBlur = (e3) => { - if (timeOperationRef.value.onBlur) { - timeOperationRef.value.onBlur(e3); - } - activePanel.value = null; - }; - operationRef.value = { - onKeydown: (event) => { - if (event.which === KeyCode_default.TAB) { - const nextActivePanel = getNextActive(event.shiftKey ? -1 : 1); - activePanel.value = nextActivePanel; - if (nextActivePanel) { - event.preventDefault(); - } - return true; - } - if (activePanel.value) { - const ref2 = activePanel.value === "date" ? dateOperationRef : timeOperationRef; - if (ref2.value && ref2.value.onKeydown) { - ref2.value.onKeydown(event); - } - return true; - } - if ([KeyCode_default.LEFT, KeyCode_default.RIGHT, KeyCode_default.UP, KeyCode_default.DOWN].includes(event.which)) { - activePanel.value = "date"; - return true; - } - return false; - }, - onBlur, - onClose: onBlur - }; - const onInternalSelect = (date4, source) => { - let selectedDate = date4; - if (source === "date" && !value && timeProps.defaultValue) { - selectedDate = generateConfig2.setHour(selectedDate, generateConfig2.getHour(timeProps.defaultValue)); - selectedDate = generateConfig2.setMinute(selectedDate, generateConfig2.getMinute(timeProps.defaultValue)); - selectedDate = generateConfig2.setSecond(selectedDate, generateConfig2.getSecond(timeProps.defaultValue)); - } else if (source === "time" && !value && defaultValue) { - selectedDate = generateConfig2.setYear(selectedDate, generateConfig2.getYear(defaultValue)); - selectedDate = generateConfig2.setMonth(selectedDate, generateConfig2.getMonth(defaultValue)); - selectedDate = generateConfig2.setDate(selectedDate, generateConfig2.getDate(defaultValue)); - } - if (onSelect) { - onSelect(selectedDate, "mouse"); - } - }; - const disabledTimes = disabledTime ? disabledTime(value || null) : {}; - return createVNode("div", { - "class": classNames_default(panelPrefixCls, { - [`${panelPrefixCls}-active`]: activePanel.value - }) - }, [createVNode(DatePanel_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "operationRef": dateOperationRef, - "active": activePanel.value === "date", - "onSelect": (date4) => { - onInternalSelect(setDateTime(generateConfig2, date4, !value && typeof showTime === "object" ? showTime.defaultValue : null), "date"); - } - }), null), createVNode(TimePanel_default, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, props4), {}, { - "format": void 0 - }, timeProps), disabledTimes), {}, { - "disabledTime": null, - "defaultValue": void 0, - "operationRef": timeOperationRef, - "active": activePanel.value === "time", - "onSelect": (date4) => { - onInternalSelect(date4, "time"); - } - }), null)]); -} -DatetimePanel.displayName = "DatetimePanel"; -DatetimePanel.inheritAttrs = false; -var DatetimePanel_default = DatetimePanel; - -// node_modules/ant-design-vue/es/vc-picker/panels/WeekPanel/index.js -function WeekPanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - locale: locale4, - value - } = props4; - const cellPrefixCls = `${prefixCls}-cell`; - const prefixColumn = (date4) => createVNode("td", { - "key": "week", - "class": classNames_default(cellPrefixCls, `${cellPrefixCls}-week`) - }, [generateConfig2.locale.getWeek(locale4.locale, date4)]); - const rowPrefixCls = `${prefixCls}-week-panel-row`; - const rowClassName = (date4) => classNames_default(rowPrefixCls, { - [`${rowPrefixCls}-selected`]: isSameWeek(generateConfig2, locale4.locale, value, date4) - }); - return createVNode(DatePanel_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "panelName": "week", - "prefixColumn": prefixColumn, - "rowClassName": rowClassName, - "keyboardConfig": { - onLeftRight: null - } - }), null); -} -WeekPanel.displayName = "WeekPanel"; -WeekPanel.inheritAttrs = false; -var WeekPanel_default = WeekPanel; - -// node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthHeader.js -function MonthHeader(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - locale: locale4, - viewDate, - onNextYear, - onPrevYear, - onYearClick - } = props4; - const { - hideHeader - } = useInjectPanel(); - if (hideHeader.value) { - return null; - } - const headerPrefixCls = `${prefixCls}-header`; - return createVNode(Header_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": headerPrefixCls, - "onSuperPrev": onPrevYear, - "onSuperNext": onNextYear - }), { - default: () => [createVNode("button", { - "type": "button", - "onClick": onYearClick, - "class": `${prefixCls}-year-btn` - }, [formatValue(viewDate, { - locale: locale4, - format: locale4.yearFormat, - generateConfig: generateConfig2 - })])] - }); -} -MonthHeader.displayName = "MonthHeader"; -MonthHeader.inheritAttrs = false; -var MonthHeader_default = MonthHeader; - -// node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthBody.js -var MONTH_COL_COUNT = 3; -var MONTH_ROW_COUNT = 4; -function MonthBody(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - locale: locale4, - value, - viewDate, - generateConfig: generateConfig2, - monthCellRender - } = props4; - const { - rangedValue, - hoverRangedValue - } = useInjectRange(); - const cellPrefixCls = `${prefixCls}-cell`; - const getCellClassName = useCellClassName({ - cellPrefixCls, - value, - generateConfig: generateConfig2, - rangedValue: rangedValue.value, - hoverRangedValue: hoverRangedValue.value, - isSameCell: (current, target) => isSameMonth(generateConfig2, current, target), - isInView: () => true, - offsetCell: (date4, offset4) => generateConfig2.addMonth(date4, offset4) - }); - const monthsLocale = locale4.shortMonths || (generateConfig2.locale.getShortMonths ? generateConfig2.locale.getShortMonths(locale4.locale) : []); - const baseMonth = generateConfig2.setMonth(viewDate, 0); - const getCellNode = monthCellRender ? (date4) => monthCellRender({ - current: date4, - locale: locale4 - }) : void 0; - return createVNode(PanelBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "rowNum": MONTH_ROW_COUNT, - "colNum": MONTH_COL_COUNT, - "baseDate": baseMonth, - "getCellNode": getCellNode, - "getCellText": (date4) => locale4.monthFormat ? formatValue(date4, { - locale: locale4, - format: locale4.monthFormat, - generateConfig: generateConfig2 - }) : monthsLocale[generateConfig2.getMonth(date4)], - "getCellClassName": getCellClassName, - "getCellDate": generateConfig2.addMonth, - "titleCell": (date4) => formatValue(date4, { - locale: locale4, - format: "YYYY-MM", - generateConfig: generateConfig2 - }) - }), null); -} -MonthBody.displayName = "MonthBody"; -MonthBody.inheritAttrs = false; -var MonthBody_default = MonthBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/index.js -function MonthPanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - operationRef, - onViewDateChange, - generateConfig: generateConfig2, - value, - viewDate, - onPanelChange, - onSelect - } = props4; - const panelPrefixCls = `${prefixCls}-month-panel`; - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, { - onLeftRight: (diff) => { - onSelect(generateConfig2.addMonth(value || viewDate, diff), "key"); - }, - onCtrlLeftRight: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff), "key"); - }, - onUpDown: (diff) => { - onSelect(generateConfig2.addMonth(value || viewDate, diff * MONTH_COL_COUNT), "key"); - }, - onEnter: () => { - onPanelChange("date", value || viewDate); - } - }) - }; - const onYearChange = (diff) => { - const newDate = generateConfig2.addYear(viewDate, diff); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - return createVNode("div", { - "class": panelPrefixCls - }, [createVNode(MonthHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onPrevYear": () => { - onYearChange(-1); - }, - "onNextYear": () => { - onYearChange(1); - }, - "onYearClick": () => { - onPanelChange("year", viewDate); - } - }), null), createVNode(MonthBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onSelect": (date4) => { - onSelect(date4, "mouse"); - onPanelChange("date", date4); - } - }), null)]); -} -MonthPanel.displayName = "MonthPanel"; -MonthPanel.inheritAttrs = false; -var MonthPanel_default = MonthPanel; - -// node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterHeader.js -function QuarterHeader(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - locale: locale4, - viewDate, - onNextYear, - onPrevYear, - onYearClick - } = props4; - const { - hideHeader - } = useInjectPanel(); - if (hideHeader.value) { - return null; - } - const headerPrefixCls = `${prefixCls}-header`; - return createVNode(Header_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": headerPrefixCls, - "onSuperPrev": onPrevYear, - "onSuperNext": onNextYear - }), { - default: () => [createVNode("button", { - "type": "button", - "onClick": onYearClick, - "class": `${prefixCls}-year-btn` - }, [formatValue(viewDate, { - locale: locale4, - format: locale4.yearFormat, - generateConfig: generateConfig2 - })])] - }); -} -QuarterHeader.displayName = "QuarterHeader"; -QuarterHeader.inheritAttrs = false; -var QuarterHeader_default = QuarterHeader; - -// node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterBody.js -var QUARTER_COL_COUNT = 4; -var QUARTER_ROW_COUNT = 1; -function QuarterBody(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - locale: locale4, - value, - viewDate, - generateConfig: generateConfig2 - } = props4; - const { - rangedValue, - hoverRangedValue - } = useInjectRange(); - const cellPrefixCls = `${prefixCls}-cell`; - const getCellClassName = useCellClassName({ - cellPrefixCls, - value, - generateConfig: generateConfig2, - rangedValue: rangedValue.value, - hoverRangedValue: hoverRangedValue.value, - isSameCell: (current, target) => isSameQuarter(generateConfig2, current, target), - isInView: () => true, - offsetCell: (date4, offset4) => generateConfig2.addMonth(date4, offset4 * 3) - }); - const baseQuarter = generateConfig2.setDate(generateConfig2.setMonth(viewDate, 0), 1); - return createVNode(PanelBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "rowNum": QUARTER_ROW_COUNT, - "colNum": QUARTER_COL_COUNT, - "baseDate": baseQuarter, - "getCellText": (date4) => formatValue(date4, { - locale: locale4, - format: locale4.quarterFormat || "[Q]Q", - generateConfig: generateConfig2 - }), - "getCellClassName": getCellClassName, - "getCellDate": (date4, offset4) => generateConfig2.addMonth(date4, offset4 * 3), - "titleCell": (date4) => formatValue(date4, { - locale: locale4, - format: "YYYY-[Q]Q", - generateConfig: generateConfig2 - }) - }), null); -} -QuarterBody.displayName = "QuarterBody"; -QuarterBody.inheritAttrs = false; -var QuarterBody_default = QuarterBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/index.js -function QuarterPanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - operationRef, - onViewDateChange, - generateConfig: generateConfig2, - value, - viewDate, - onPanelChange, - onSelect - } = props4; - const panelPrefixCls = `${prefixCls}-quarter-panel`; - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, { - onLeftRight: (diff) => { - onSelect(generateConfig2.addMonth(value || viewDate, diff * 3), "key"); - }, - onCtrlLeftRight: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff), "key"); - }, - onUpDown: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff), "key"); - } - }) - }; - const onYearChange = (diff) => { - const newDate = generateConfig2.addYear(viewDate, diff); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - return createVNode("div", { - "class": panelPrefixCls - }, [createVNode(QuarterHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onPrevYear": () => { - onYearChange(-1); - }, - "onNextYear": () => { - onYearChange(1); - }, - "onYearClick": () => { - onPanelChange("year", viewDate); - } - }), null), createVNode(QuarterBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onSelect": (date4) => { - onSelect(date4, "mouse"); - } - }), null)]); -} -QuarterPanel.displayName = "QuarterPanel"; -QuarterPanel.inheritAttrs = false; -var QuarterPanel_default = QuarterPanel; - -// node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearHeader.js -function YearHeader(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - generateConfig: generateConfig2, - viewDate, - onPrevDecade, - onNextDecade, - onDecadeClick - } = props4; - const { - hideHeader - } = useInjectPanel(); - if (hideHeader.value) { - return null; - } - const headerPrefixCls = `${prefixCls}-header`; - const yearNumber = generateConfig2.getYear(viewDate); - const startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT; - const endYear = startYear + YEAR_DECADE_COUNT - 1; - return createVNode(Header_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": headerPrefixCls, - "onSuperPrev": onPrevDecade, - "onSuperNext": onNextDecade - }), { - default: () => [createVNode("button", { - "type": "button", - "onClick": onDecadeClick, - "class": `${prefixCls}-decade-btn` - }, [startYear, createTextVNode("-"), endYear])] - }); -} -YearHeader.displayName = "YearHeader"; -YearHeader.inheritAttrs = false; -var YearHeader_default = YearHeader; - -// node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearBody.js -var YEAR_COL_COUNT = 3; -var YEAR_ROW_COUNT = 4; -function YearBody(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - value, - viewDate, - locale: locale4, - generateConfig: generateConfig2 - } = props4; - const { - rangedValue, - hoverRangedValue - } = useInjectRange(); - const yearPrefixCls = `${prefixCls}-cell`; - const yearNumber = generateConfig2.getYear(viewDate); - const startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT; - const endYear = startYear + YEAR_DECADE_COUNT - 1; - const baseYear = generateConfig2.setYear(viewDate, startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2)); - const isInView = (date4) => { - const currentYearNumber = generateConfig2.getYear(date4); - return startYear <= currentYearNumber && currentYearNumber <= endYear; - }; - const getCellClassName = useCellClassName({ - cellPrefixCls: yearPrefixCls, - value, - generateConfig: generateConfig2, - rangedValue: rangedValue.value, - hoverRangedValue: hoverRangedValue.value, - isSameCell: (current, target) => isSameYear(generateConfig2, current, target), - isInView, - offsetCell: (date4, offset4) => generateConfig2.addYear(date4, offset4) - }); - return createVNode(PanelBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "rowNum": YEAR_ROW_COUNT, - "colNum": YEAR_COL_COUNT, - "baseDate": baseYear, - "getCellText": generateConfig2.getYear, - "getCellClassName": getCellClassName, - "getCellDate": generateConfig2.addYear, - "titleCell": (date4) => formatValue(date4, { - locale: locale4, - format: "YYYY", - generateConfig: generateConfig2 - }) - }), null); -} -YearBody.displayName = "YearBody"; -YearBody.inheritAttrs = false; -var YearBody_default = YearBody; - -// node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/index.js -var YEAR_DECADE_COUNT = 10; -function YearPanel(_props) { - const props4 = useMergeProps(_props); - const { - prefixCls, - operationRef, - onViewDateChange, - generateConfig: generateConfig2, - value, - viewDate, - sourceMode, - onSelect, - onPanelChange - } = props4; - const panelPrefixCls = `${prefixCls}-year-panel`; - operationRef.value = { - onKeydown: (event) => createKeydownHandler(event, { - onLeftRight: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff), "key"); - }, - onCtrlLeftRight: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff * YEAR_DECADE_COUNT), "key"); - }, - onUpDown: (diff) => { - onSelect(generateConfig2.addYear(value || viewDate, diff * YEAR_COL_COUNT), "key"); - }, - onEnter: () => { - onPanelChange(sourceMode === "date" ? "date" : "month", value || viewDate); - } - }) - }; - const onDecadeChange = (diff) => { - const newDate = generateConfig2.addYear(viewDate, diff * 10); - onViewDateChange(newDate); - onPanelChange(null, newDate); - }; - return createVNode("div", { - "class": panelPrefixCls - }, [createVNode(YearHeader_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onPrevDecade": () => { - onDecadeChange(-1); - }, - "onNextDecade": () => { - onDecadeChange(1); - }, - "onDecadeClick": () => { - onPanelChange("decade", viewDate); - } - }), null), createVNode(YearBody_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls, - "onSelect": (date4) => { - onPanelChange(sourceMode === "date" ? "date" : "month", date4); - onSelect(date4, "mouse"); - } - }), null)]); -} -YearPanel.displayName = "YearPanel"; -YearPanel.inheritAttrs = false; -var YearPanel_default = YearPanel; - -// node_modules/ant-design-vue/es/vc-picker/utils/getExtraFooter.js -function getExtraFooter(prefixCls, mode, renderExtraFooter) { - if (!renderExtraFooter) { - return null; - } - return createVNode("div", { - "class": `${prefixCls}-footer-extra` - }, [renderExtraFooter(mode)]); -} - -// node_modules/ant-design-vue/es/vc-picker/utils/getRanges.js -function getRanges(_ref) { - let { - prefixCls, - components = {}, - needConfirmButton, - onNow, - onOk, - okDisabled, - showNow, - locale: locale4 - } = _ref; - let presetNode; - let okNode; - if (needConfirmButton) { - const Button = components.button || "button"; - if (onNow && showNow !== false) { - presetNode = createVNode("li", { - "class": `${prefixCls}-now` - }, [createVNode("a", { - "class": `${prefixCls}-now-btn`, - "onClick": onNow - }, [locale4.now])]); - } - okNode = needConfirmButton && createVNode("li", { - "class": `${prefixCls}-ok` - }, [createVNode(Button, { - "disabled": okDisabled, - "onClick": (e3) => { - e3.stopPropagation(); - onOk && onOk(); - } - }, { - default: () => [locale4.ok] - })]); - } - if (!presetNode && !okNode) { - return null; - } - return createVNode("ul", { - "class": `${prefixCls}-ranges` - }, [presetNode, okNode]); -} - -// node_modules/ant-design-vue/es/vc-picker/PickerPanel.js -function PickerPanel() { - return defineComponent({ - name: "PickerPanel", - inheritAttrs: false, - props: { - prefixCls: String, - locale: Object, - generateConfig: Object, - value: Object, - defaultValue: Object, - pickerValue: Object, - defaultPickerValue: Object, - disabledDate: Function, - mode: String, - picker: { - type: String, - default: "date" - }, - tabindex: { - type: [Number, String], - default: 0 - }, - showNow: { - type: Boolean, - default: void 0 - }, - showTime: [Boolean, Object], - showToday: Boolean, - renderExtraFooter: Function, - dateRender: Function, - hideHeader: { - type: Boolean, - default: void 0 - }, - onSelect: Function, - onChange: Function, - onPanelChange: Function, - onMousedown: Function, - onPickerValueChange: Function, - onOk: Function, - components: Object, - direction: String, - hourStep: { - type: Number, - default: 1 - }, - minuteStep: { - type: Number, - default: 1 - }, - secondStep: { - type: Number, - default: 1 - } - }, - setup(props4, _ref) { - let { - attrs - } = _ref; - const needConfirmButton = computed(() => props4.picker === "date" && !!props4.showTime || props4.picker === "time"); - const isHourStepValid = computed(() => 24 % props4.hourStep === 0); - const isMinuteStepValid = computed(() => 60 % props4.minuteStep === 0); - const isSecondStepValid = computed(() => 60 % props4.secondStep === 0); - if (true) { - watchEffect(() => { - const { - generateConfig: generateConfig2, - value, - hourStep = 1, - minuteStep = 1, - secondStep = 1 - } = props4; - warning(!value || generateConfig2.isValidate(value), "Invalidate date pass to `value`."); - warning(!value || generateConfig2.isValidate(value), "Invalidate date pass to `defaultValue`."); - warning(isHourStepValid.value, `\`hourStep\` ${hourStep} is invalid. It should be a factor of 24.`); - warning(isMinuteStepValid.value, `\`minuteStep\` ${minuteStep} is invalid. It should be a factor of 60.`); - warning(isSecondStepValid.value, `\`secondStep\` ${secondStep} is invalid. It should be a factor of 60.`); - }); - } - const panelContext = useInjectPanel(); - const { - operationRef, - onSelect: onContextSelect, - hideRanges, - defaultOpenValue - } = panelContext; - const { - inRange: inRange2, - panelPosition, - rangedValue, - hoverRangedValue - } = useInjectRange(); - const panelRef = ref({}); - const [mergedValue, setInnerValue] = useMergedState(null, { - value: toRef(props4, "value"), - defaultValue: props4.defaultValue, - postState: (val) => { - if (!val && (defaultOpenValue === null || defaultOpenValue === void 0 ? void 0 : defaultOpenValue.value) && props4.picker === "time") { - return defaultOpenValue.value; - } - return val; - } - }); - const [viewDate, setInnerViewDate] = useMergedState(null, { - value: toRef(props4, "pickerValue"), - defaultValue: props4.defaultPickerValue || mergedValue.value, - postState: (date4) => { - const { - generateConfig: generateConfig2, - showTime, - defaultValue - } = props4; - const now5 = generateConfig2.getNow(); - if (!date4) return now5; - if (!mergedValue.value && props4.showTime) { - if (typeof showTime === "object") { - return setDateTime(generateConfig2, Array.isArray(date4) ? date4[0] : date4, showTime.defaultValue || now5); - } - if (defaultValue) { - return setDateTime(generateConfig2, Array.isArray(date4) ? date4[0] : date4, defaultValue); - } - return setDateTime(generateConfig2, Array.isArray(date4) ? date4[0] : date4, now5); - } - return date4; - } - }); - const setViewDate = (date4) => { - setInnerViewDate(date4); - if (props4.onPickerValueChange) { - props4.onPickerValueChange(date4); - } - }; - const getInternalNextMode = (nextMode) => { - const getNextMode = PickerModeMap[props4.picker]; - if (getNextMode) { - return getNextMode(nextMode); - } - return nextMode; - }; - const [mergedMode, setInnerMode] = useMergedState(() => { - if (props4.picker === "time") { - return "time"; - } - return getInternalNextMode("date"); - }, { - value: toRef(props4, "mode") - }); - watch(() => props4.picker, () => { - setInnerMode(props4.picker); - }); - const sourceMode = ref(mergedMode.value); - const setSourceMode = (val) => { - sourceMode.value = val; - }; - const onInternalPanelChange = (newMode, viewValue) => { - const { - onPanelChange, - generateConfig: generateConfig2 - } = props4; - const nextMode = getInternalNextMode(newMode || mergedMode.value); - setSourceMode(mergedMode.value); - setInnerMode(nextMode); - if (onPanelChange && (mergedMode.value !== nextMode || isEqual2(generateConfig2, viewDate.value, viewDate.value))) { - onPanelChange(viewValue, nextMode); - } - }; - const triggerSelect = function(date4, type4) { - let forceTriggerSelect = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - const { - picker, - generateConfig: generateConfig2, - onSelect, - onChange, - disabledDate - } = props4; - if (mergedMode.value === picker || forceTriggerSelect) { - setInnerValue(date4); - if (onSelect) { - onSelect(date4); - } - if (onContextSelect) { - onContextSelect(date4, type4); - } - if (onChange && !isEqual2(generateConfig2, date4, mergedValue.value) && !(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date4))) { - onChange(date4); - } - } - }; - const onInternalKeydown = (e3) => { - if (panelRef.value && panelRef.value.onKeydown) { - if ([KeyCode_default.LEFT, KeyCode_default.RIGHT, KeyCode_default.UP, KeyCode_default.DOWN, KeyCode_default.PAGE_UP, KeyCode_default.PAGE_DOWN, KeyCode_default.ENTER].includes(e3.which)) { - e3.preventDefault(); - } - return panelRef.value.onKeydown(e3); - } - { - warning(false, "Panel not correct handle keyDown event. Please help to fire issue about this."); - return false; - } - }; - const onInternalBlur = (e3) => { - if (panelRef.value && panelRef.value.onBlur) { - panelRef.value.onBlur(e3); - } - }; - const onNow = () => { - const { - generateConfig: generateConfig2, - hourStep, - minuteStep, - secondStep - } = props4; - const now5 = generateConfig2.getNow(); - const lowerBoundTime = getLowerBoundTime(generateConfig2.getHour(now5), generateConfig2.getMinute(now5), generateConfig2.getSecond(now5), isHourStepValid.value ? hourStep : 1, isMinuteStepValid.value ? minuteStep : 1, isSecondStepValid.value ? secondStep : 1); - const adjustedNow = setTime( - generateConfig2, - now5, - lowerBoundTime[0], - // hour - lowerBoundTime[1], - // minute - lowerBoundTime[2] - ); - triggerSelect(adjustedNow, "submit"); - }; - const classString = computed(() => { - const { - prefixCls, - direction - } = props4; - return classNames_default(`${prefixCls}-panel`, { - [`${prefixCls}-panel-has-range`]: rangedValue && rangedValue.value && rangedValue.value[0] && rangedValue.value[1], - [`${prefixCls}-panel-has-range-hover`]: hoverRangedValue && hoverRangedValue.value && hoverRangedValue.value[0] && hoverRangedValue.value[1], - [`${prefixCls}-panel-rtl`]: direction === "rtl" - }); - }); - useProvidePanel(_extends(_extends({}, panelContext), { - mode: mergedMode, - hideHeader: computed(() => { - var _a2; - return props4.hideHeader !== void 0 ? props4.hideHeader : (_a2 = panelContext.hideHeader) === null || _a2 === void 0 ? void 0 : _a2.value; - }), - hidePrevBtn: computed(() => inRange2.value && panelPosition.value === "right"), - hideNextBtn: computed(() => inRange2.value && panelPosition.value === "left") - })); - watch(() => props4.value, () => { - if (props4.value) { - setInnerViewDate(props4.value); - } - }); - return () => { - const { - prefixCls = "ant-picker", - locale: locale4, - generateConfig: generateConfig2, - disabledDate, - picker = "date", - tabindex = 0, - showNow, - showTime, - showToday, - renderExtraFooter, - onMousedown, - onOk, - components - } = props4; - if (operationRef && panelPosition.value !== "right") { - operationRef.value = { - onKeydown: onInternalKeydown, - onClose: () => { - if (panelRef.value && panelRef.value.onClose) { - panelRef.value.onClose(); - } - } - }; - } - let panelNode; - const pickerProps = _extends(_extends(_extends({}, attrs), props4), { - operationRef: panelRef, - prefixCls, - viewDate: viewDate.value, - value: mergedValue.value, - onViewDateChange: setViewDate, - sourceMode: sourceMode.value, - onPanelChange: onInternalPanelChange, - disabledDate - }); - delete pickerProps.onChange; - delete pickerProps.onSelect; - switch (mergedMode.value) { - case "decade": - panelNode = createVNode(DecadePanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - case "year": - panelNode = createVNode(YearPanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - case "month": - panelNode = createVNode(MonthPanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - case "quarter": - panelNode = createVNode(QuarterPanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - case "week": - panelNode = createVNode(WeekPanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - case "time": - delete pickerProps.showTime; - panelNode = createVNode(TimePanel_default, _objectSpread2(_objectSpread2(_objectSpread2({}, pickerProps), typeof showTime === "object" ? showTime : null), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - break; - default: - if (showTime) { - panelNode = createVNode(DatetimePanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - } else { - panelNode = createVNode(DatePanel_default, _objectSpread2(_objectSpread2({}, pickerProps), {}, { - "onSelect": (date4, type4) => { - setViewDate(date4); - triggerSelect(date4, type4); - } - }), null); - } - } - let extraFooter; - let rangesNode; - if (!(hideRanges === null || hideRanges === void 0 ? void 0 : hideRanges.value)) { - extraFooter = getExtraFooter(prefixCls, mergedMode.value, renderExtraFooter); - rangesNode = getRanges({ - prefixCls, - components, - needConfirmButton: needConfirmButton.value, - okDisabled: !mergedValue.value || disabledDate && disabledDate(mergedValue.value), - locale: locale4, - showNow, - onNow: needConfirmButton.value && onNow, - onOk: () => { - if (mergedValue.value) { - triggerSelect(mergedValue.value, "submit", true); - if (onOk) { - onOk(mergedValue.value); - } - } - } - }); - } - let todayNode; - if (showToday && mergedMode.value === "date" && picker === "date" && !showTime) { - const now5 = generateConfig2.getNow(); - const todayCls = `${prefixCls}-today-btn`; - const disabled = disabledDate && disabledDate(now5); - todayNode = createVNode("a", { - "class": classNames_default(todayCls, disabled && `${todayCls}-disabled`), - "aria-disabled": disabled, - "onClick": () => { - if (!disabled) { - triggerSelect(now5, "mouse", true); - } - } - }, [locale4.today]); - } - return createVNode("div", { - "tabindex": tabindex, - "class": classNames_default(classString.value, attrs.class), - "style": attrs.style, - "onKeydown": onInternalKeydown, - "onBlur": onInternalBlur, - "onMousedown": onMousedown - }, [panelNode, extraFooter || rangesNode || todayNode ? createVNode("div", { - "class": `${prefixCls}-footer` - }, [extraFooter, rangesNode, todayNode]) : null]); - }; - } - }); -} -var InterPickerPanel = PickerPanel(); -var PickerPanel_default = (props4) => createVNode(InterPickerPanel, props4); - -// node_modules/ant-design-vue/es/vc-picker/PickerTrigger.js -var BUILT_IN_PLACEMENTS = { - bottomLeft: { - points: ["tl", "bl"], - offset: [0, 4], - overflow: { - adjustX: 1, - adjustY: 1 - } - }, - bottomRight: { - points: ["tr", "br"], - offset: [0, 4], - overflow: { - adjustX: 1, - adjustY: 1 - } - }, - topLeft: { - points: ["bl", "tl"], - offset: [0, -4], - overflow: { - adjustX: 0, - adjustY: 1 - } - }, - topRight: { - points: ["br", "tr"], - offset: [0, -4], - overflow: { - adjustX: 0, - adjustY: 1 - } - } -}; -function PickerTrigger(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls, - popupStyle, - visible, - dropdownClassName, - dropdownAlign, - transitionName: transitionName2, - getPopupContainer, - range: range4, - popupPlacement, - direction - } = useMergeProps(props4); - const dropdownPrefixCls = `${prefixCls}-dropdown`; - const getPopupPlacement = () => { - if (popupPlacement !== void 0) { - return popupPlacement; - } - return direction === "rtl" ? "bottomRight" : "bottomLeft"; - }; - return createVNode(vc_trigger_default, { - "showAction": [], - "hideAction": [], - "popupPlacement": getPopupPlacement(), - "builtinPlacements": BUILT_IN_PLACEMENTS, - "prefixCls": dropdownPrefixCls, - "popupTransitionName": transitionName2, - "popupAlign": dropdownAlign, - "popupVisible": visible, - "popupClassName": classNames_default(dropdownClassName, { - [`${dropdownPrefixCls}-range`]: range4, - [`${dropdownPrefixCls}-rtl`]: direction === "rtl" - }), - "popupStyle": popupStyle, - "getPopupContainer": getPopupContainer - }, { - default: slots.default, - popup: slots.popupElement - }); -} -var PickerTrigger_default = PickerTrigger; - -// node_modules/ant-design-vue/es/vc-picker/PresetPanel.js -var PresetPanel_default = defineComponent({ - name: "PresetPanel", - props: { - prefixCls: String, - presets: { - type: Array, - default: () => [] - }, - onClick: Function, - onHover: Function - }, - setup(props4) { - return () => { - if (!props4.presets.length) { - return null; - } - return createVNode("div", { - "class": `${props4.prefixCls}-presets` - }, [createVNode("ul", null, [props4.presets.map((_ref, index3) => { - let { - label, - value - } = _ref; - return createVNode("li", { - "key": index3, - "onClick": () => { - props4.onClick(value); - }, - "onMouseenter": () => { - var _a2; - (_a2 = props4.onHover) === null || _a2 === void 0 ? void 0 : _a2.call(props4, value); - }, - "onMouseleave": () => { - var _a2; - (_a2 = props4.onHover) === null || _a2 === void 0 ? void 0 : _a2.call(props4, null); - } - }, [label]); - })])]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-picker/hooks/usePickerInput.js -function usePickerInput(_ref) { - let { - open: open2, - value, - isClickOutside, - triggerOpen, - forwardKeydown, - onKeydown, - blurToCancel, - onSubmit, - onCancel, - onFocus, - onBlur - } = _ref; - const typing = shallowRef(false); - const focused = shallowRef(false); - const preventBlurRef = shallowRef(false); - const valueChangedRef = shallowRef(false); - const preventDefaultRef = shallowRef(false); - const inputProps4 = computed(() => ({ - onMousedown: () => { - typing.value = true; - triggerOpen(true); - }, - onKeydown: (e3) => { - const preventDefault = () => { - preventDefaultRef.value = true; - }; - onKeydown(e3, preventDefault); - if (preventDefaultRef.value) return; - switch (e3.which) { - case KeyCode_default.ENTER: { - if (!open2.value) { - triggerOpen(true); - } else if (onSubmit() !== false) { - typing.value = true; - } - e3.preventDefault(); - return; - } - case KeyCode_default.TAB: { - if (typing.value && open2.value && !e3.shiftKey) { - typing.value = false; - e3.preventDefault(); - } else if (!typing.value && open2.value) { - if (!forwardKeydown(e3) && e3.shiftKey) { - typing.value = true; - e3.preventDefault(); - } - } - return; - } - case KeyCode_default.ESC: { - typing.value = true; - onCancel(); - return; - } - } - if (!open2.value && ![KeyCode_default.SHIFT].includes(e3.which)) { - triggerOpen(true); - } else if (!typing.value) { - forwardKeydown(e3); - } - }, - onFocus: (e3) => { - typing.value = true; - focused.value = true; - if (onFocus) { - onFocus(e3); - } - }, - onBlur: (e3) => { - if (preventBlurRef.value || !isClickOutside(document.activeElement)) { - preventBlurRef.value = false; - return; - } - if (blurToCancel.value) { - setTimeout(() => { - let { - activeElement - } = document; - while (activeElement && activeElement.shadowRoot) { - activeElement = activeElement.shadowRoot.activeElement; - } - if (isClickOutside(activeElement)) { - onCancel(); - } - }, 0); - } else if (open2.value) { - triggerOpen(false); - if (valueChangedRef.value) { - onSubmit(); - } - } - focused.value = false; - if (onBlur) { - onBlur(e3); - } - } - })); - watch(open2, () => { - valueChangedRef.value = false; - }); - watch(value, () => { - valueChangedRef.value = true; - }); - const globalMousedownEvent = shallowRef(); - onMounted(() => { - globalMousedownEvent.value = addGlobalMousedownEvent((e3) => { - const target = getTargetFromEvent(e3); - if (open2.value) { - const clickedOutside = isClickOutside(target); - if (!clickedOutside) { - preventBlurRef.value = true; - wrapperRaf(() => { - preventBlurRef.value = false; - }); - } else if (!focused.value || clickedOutside) { - triggerOpen(false); - } - } - }); - }); - onBeforeUnmount(() => { - globalMousedownEvent.value && globalMousedownEvent.value(); - }); - return [inputProps4, { - focused, - typing - }]; -} - -// node_modules/ant-design-vue/es/vc-picker/hooks/useTextValueMapping.js -function useTextValueMapping(_ref) { - let { - valueTexts, - onTextChange - } = _ref; - const text = ref(""); - function triggerTextChange(value) { - text.value = value; - onTextChange(value); - } - function resetText() { - text.value = valueTexts.value[0]; - } - watch(() => [...valueTexts.value], function(cur) { - let pre = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : []; - if (cur.join("||") !== pre.join("||") && valueTexts.value.every((valText) => valText !== text.value)) { - resetText(); - } - }, { - immediate: true - }); - return [text, triggerTextChange, resetText]; -} - -// node_modules/ant-design-vue/es/vc-picker/hooks/useValueTexts.js -function useValueTexts(value, _ref) { - let { - formatList, - generateConfig: generateConfig2, - locale: locale4 - } = _ref; - const texts = useMemo(() => { - if (!value.value) { - return [[""], ""]; - } - let firstValueText2 = ""; - const fullValueTexts2 = []; - for (let i3 = 0; i3 < formatList.value.length; i3 += 1) { - const format3 = formatList.value[i3]; - const formatStr = formatValue(value.value, { - generateConfig: generateConfig2.value, - locale: locale4.value, - format: format3 - }); - fullValueTexts2.push(formatStr); - if (i3 === 0) { - firstValueText2 = formatStr; - } - } - return [fullValueTexts2, firstValueText2]; - }, [value, formatList], (next2, prev2) => prev2[0] !== next2[0] || !shallowequal_default(prev2[1], next2[1])); - const fullValueTexts = computed(() => texts.value[0]); - const firstValueText = computed(() => texts.value[1]); - return [fullValueTexts, firstValueText]; -} - -// node_modules/ant-design-vue/es/vc-picker/hooks/useHoverValue.js -function useHoverValue(valueText, _ref) { - let { - formatList, - generateConfig: generateConfig2, - locale: locale4 - } = _ref; - const innerValue = ref(null); - let rafId; - function setValue2(val) { - let immediately = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - wrapperRaf.cancel(rafId); - if (immediately) { - innerValue.value = val; - return; - } - rafId = wrapperRaf(() => { - innerValue.value = val; - }); - } - const [, firstText] = useValueTexts(innerValue, { - formatList, - generateConfig: generateConfig2, - locale: locale4 - }); - function onEnter(date4) { - setValue2(date4); - } - function onLeave() { - let immediately = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - setValue2(null, immediately); - } - watch(valueText, () => { - onLeave(true); - }); - onBeforeUnmount(() => { - wrapperRaf.cancel(rafId); - }); - return [firstText, onEnter, onLeave]; -} - -// node_modules/ant-design-vue/es/vc-picker/hooks/usePresets.js -function usePresets(presets, legacyRanges) { - return computed(() => { - if (presets === null || presets === void 0 ? void 0 : presets.value) { - return presets.value; - } - if (legacyRanges === null || legacyRanges === void 0 ? void 0 : legacyRanges.value) { - warning_default(false, "`ranges` is deprecated. Please use `presets` instead."); - const rangeLabels = Object.keys(legacyRanges.value); - return rangeLabels.map((label) => { - const range4 = legacyRanges.value[label]; - const newValues = typeof range4 === "function" ? range4() : range4; - return { - label, - value: newValues - }; - }); - } - return []; - }); -} - -// node_modules/ant-design-vue/es/vc-picker/utils/warnUtil.js -function legacyPropsWarning(props4) { - const { - picker, - disabledHours, - disabledMinutes, - disabledSeconds - } = props4; - if (picker === "time" && (disabledHours || disabledMinutes || disabledSeconds)) { - warning(false, `'disabledHours', 'disabledMinutes', 'disabledSeconds' will be removed in the next major version, please use 'disabledTime' instead.`); - } -} - -// node_modules/ant-design-vue/es/vc-picker/Picker.js -function Picker() { - return defineComponent({ - name: "Picker", - inheritAttrs: false, - props: ["prefixCls", "id", "tabindex", "dropdownClassName", "dropdownAlign", "popupStyle", "transitionName", "generateConfig", "locale", "inputReadOnly", "allowClear", "autofocus", "showTime", "showNow", "showHour", "showMinute", "showSecond", "picker", "format", "use12Hours", "value", "defaultValue", "open", "defaultOpen", "defaultOpenValue", "suffixIcon", "presets", "clearIcon", "disabled", "disabledDate", "placeholder", "getPopupContainer", "panelRender", "inputRender", "onChange", "onOpenChange", "onPanelChange", "onFocus", "onBlur", "onMousedown", "onMouseup", "onMouseenter", "onMouseleave", "onContextmenu", "onClick", "onKeydown", "onSelect", "direction", "autocomplete", "showToday", "renderExtraFooter", "dateRender", "minuteStep", "hourStep", "secondStep", "hideDisabledOptions"], - setup(props4, _ref) { - let { - attrs, - expose - } = _ref; - const inputRef = ref(null); - const presets = computed(() => props4.presets); - const presetList = usePresets(presets); - const picker = computed(() => { - var _a2; - return (_a2 = props4.picker) !== null && _a2 !== void 0 ? _a2 : "date"; - }); - const needConfirmButton = computed(() => picker.value === "date" && !!props4.showTime || picker.value === "time"); - if (true) { - legacyPropsWarning(props4); - } - const formatList = computed(() => toArray3(getDefaultFormat(props4.format, picker.value, props4.showTime, props4.use12Hours))); - const panelDivRef = ref(null); - const inputDivRef = ref(null); - const containerRef = ref(null); - const [mergedValue, setInnerValue] = useMergedState(null, { - value: toRef(props4, "value"), - defaultValue: props4.defaultValue - }); - const selectedValue = ref(mergedValue.value); - const setSelectedValue = (val) => { - selectedValue.value = val; - }; - const operationRef = ref(null); - const [mergedOpen, triggerInnerOpen] = useMergedState(false, { - value: toRef(props4, "open"), - defaultValue: props4.defaultOpen, - postState: (postOpen) => props4.disabled ? false : postOpen, - onChange: (newOpen) => { - if (props4.onOpenChange) { - props4.onOpenChange(newOpen); - } - if (!newOpen && operationRef.value && operationRef.value.onClose) { - operationRef.value.onClose(); - } - } - }); - const [valueTexts, firstValueText] = useValueTexts(selectedValue, { - formatList, - generateConfig: toRef(props4, "generateConfig"), - locale: toRef(props4, "locale") - }); - const [text, triggerTextChange, resetText] = useTextValueMapping({ - valueTexts, - onTextChange: (newText) => { - const inputDate = parseValue(newText, { - locale: props4.locale, - formatList: formatList.value, - generateConfig: props4.generateConfig - }); - if (inputDate && (!props4.disabledDate || !props4.disabledDate(inputDate))) { - setSelectedValue(inputDate); - } - } - }); - const triggerChange = (newValue) => { - const { - onChange, - generateConfig: generateConfig2, - locale: locale4 - } = props4; - setSelectedValue(newValue); - setInnerValue(newValue); - if (onChange && !isEqual2(generateConfig2, mergedValue.value, newValue)) { - onChange(newValue, newValue ? formatValue(newValue, { - generateConfig: generateConfig2, - locale: locale4, - format: formatList.value[0] - }) : ""); - } - }; - const triggerOpen = (newOpen) => { - if (props4.disabled && newOpen) { - return; - } - triggerInnerOpen(newOpen); - }; - const forwardKeydown = (e3) => { - if (mergedOpen.value && operationRef.value && operationRef.value.onKeydown) { - return operationRef.value.onKeydown(e3); - } - { - warning(false, "Picker not correct forward Keydown operation. Please help to fire issue about this."); - return false; - } - }; - const onInternalMouseup = function() { - if (props4.onMouseup) { - props4.onMouseup(...arguments); - } - if (inputRef.value) { - inputRef.value.focus(); - triggerOpen(true); - } - }; - const [inputProps4, { - focused, - typing - }] = usePickerInput({ - blurToCancel: needConfirmButton, - open: mergedOpen, - value: text, - triggerOpen, - forwardKeydown, - isClickOutside: (target) => !elementsContains([panelDivRef.value, inputDivRef.value, containerRef.value], target), - onSubmit: () => { - if ( - // When user typing disabledDate with keyboard and enter, this value will be empty - !selectedValue.value || // Normal disabled check - props4.disabledDate && props4.disabledDate(selectedValue.value) - ) { - return false; - } - triggerChange(selectedValue.value); - triggerOpen(false); - resetText(); - return true; - }, - onCancel: () => { - triggerOpen(false); - setSelectedValue(mergedValue.value); - resetText(); - }, - onKeydown: (e3, preventDefault) => { - var _a2; - (_a2 = props4.onKeydown) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3, preventDefault); - }, - onFocus: (e3) => { - var _a2; - (_a2 = props4.onFocus) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }, - onBlur: (e3) => { - var _a2; - (_a2 = props4.onBlur) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - } - }); - watch([mergedOpen, valueTexts], () => { - if (!mergedOpen.value) { - setSelectedValue(mergedValue.value); - if (!valueTexts.value.length || valueTexts.value[0] === "") { - triggerTextChange(""); - } else if (firstValueText.value !== text.value) { - resetText(); - } - } - }); - watch(picker, () => { - if (!mergedOpen.value) { - resetText(); - } - }); - watch(mergedValue, () => { - setSelectedValue(mergedValue.value); - }); - const [hoverValue, onEnter, onLeave] = useHoverValue(text, { - formatList, - generateConfig: toRef(props4, "generateConfig"), - locale: toRef(props4, "locale") - }); - const onContextSelect = (date4, type4) => { - if (type4 === "submit" || type4 !== "key" && !needConfirmButton.value) { - triggerChange(date4); - triggerOpen(false); - } - }; - useProvidePanel({ - operationRef, - hideHeader: computed(() => picker.value === "time"), - onSelect: onContextSelect, - open: mergedOpen, - defaultOpenValue: toRef(props4, "defaultOpenValue"), - onDateMouseenter: onEnter, - onDateMouseleave: onLeave - }); - expose({ - focus: () => { - if (inputRef.value) { - inputRef.value.focus(); - } - }, - blur: () => { - if (inputRef.value) { - inputRef.value.blur(); - } - } - }); - return () => { - const { - prefixCls = "rc-picker", - id, - tabindex, - dropdownClassName, - dropdownAlign, - popupStyle, - transitionName: transitionName2, - generateConfig: generateConfig2, - locale: locale4, - inputReadOnly, - allowClear, - autofocus, - picker: picker2 = "date", - defaultOpenValue, - suffixIcon, - clearIcon, - disabled, - placeholder, - getPopupContainer, - panelRender: panelRender2, - onMousedown, - onMouseenter, - onMouseleave, - onContextmenu, - onClick, - onSelect, - direction, - autocomplete = "off" - } = props4; - const panelProps = _extends(_extends(_extends({}, props4), attrs), { - class: classNames_default({ - [`${prefixCls}-panel-focused`]: !typing.value - }), - style: void 0, - pickerValue: void 0, - onPickerValueChange: void 0, - onChange: null - }); - let panelNode = createVNode("div", { - "class": `${prefixCls}-panel-layout` - }, [createVNode(PresetPanel_default, { - "prefixCls": prefixCls, - "presets": presetList.value, - "onClick": (nextValue) => { - triggerChange(nextValue); - triggerOpen(false); - } - }, null), createVNode(PickerPanel_default, _objectSpread2(_objectSpread2({}, panelProps), {}, { - "generateConfig": generateConfig2, - "value": selectedValue.value, - "locale": locale4, - "tabindex": -1, - "onSelect": (date4) => { - onSelect === null || onSelect === void 0 ? void 0 : onSelect(date4); - setSelectedValue(date4); - }, - "direction": direction, - "onPanelChange": (viewDate, mode) => { - const { - onPanelChange - } = props4; - onLeave(true); - onPanelChange === null || onPanelChange === void 0 ? void 0 : onPanelChange(viewDate, mode); - } - }), null)]); - if (panelRender2) { - panelNode = panelRender2(panelNode); - } - const panel = createVNode("div", { - "class": `${prefixCls}-panel-container`, - "ref": panelDivRef, - "onMousedown": (e3) => { - e3.preventDefault(); - } - }, [panelNode]); - let suffixNode; - if (suffixIcon) { - suffixNode = createVNode("span", { - "class": `${prefixCls}-suffix` - }, [suffixIcon]); - } - let clearNode; - if (allowClear && mergedValue.value && !disabled) { - clearNode = createVNode("span", { - "onMousedown": (e3) => { - e3.preventDefault(); - e3.stopPropagation(); - }, - "onMouseup": (e3) => { - e3.preventDefault(); - e3.stopPropagation(); - triggerChange(null); - triggerOpen(false); - }, - "class": `${prefixCls}-clear`, - "role": "button" - }, [clearIcon || createVNode("span", { - "class": `${prefixCls}-clear-btn` - }, null)]); - } - const mergedInputProps = _extends(_extends(_extends(_extends({ - id, - tabindex, - disabled, - readonly: inputReadOnly || typeof formatList.value[0] === "function" || !typing.value, - value: hoverValue.value || text.value, - onInput: (e3) => { - triggerTextChange(e3.target.value); - }, - autofocus, - placeholder, - ref: inputRef, - title: text.value - }, inputProps4.value), { - size: getInputSize(picker2, formatList.value[0], generateConfig2) - }), getDataOrAriaProps(props4)), { - autocomplete - }); - const inputNode = props4.inputRender ? props4.inputRender(mergedInputProps) : createVNode("input", mergedInputProps, null); - if (true) { - warning(!defaultOpenValue, "`defaultOpenValue` may confuse user for the current value status. Please use `defaultValue` instead."); - } - const popupPlacement = direction === "rtl" ? "bottomRight" : "bottomLeft"; - return createVNode("div", { - "ref": containerRef, - "class": classNames_default(prefixCls, attrs.class, { - [`${prefixCls}-disabled`]: disabled, - [`${prefixCls}-focused`]: focused.value, - [`${prefixCls}-rtl`]: direction === "rtl" - }), - "style": attrs.style, - "onMousedown": onMousedown, - "onMouseup": onInternalMouseup, - "onMouseenter": onMouseenter, - "onMouseleave": onMouseleave, - "onContextmenu": onContextmenu, - "onClick": onClick - }, [createVNode("div", { - "class": classNames_default(`${prefixCls}-input`, { - [`${prefixCls}-input-placeholder`]: !!hoverValue.value - }), - "ref": inputDivRef - }, [inputNode, suffixNode, clearNode]), createVNode(PickerTrigger_default, { - "visible": mergedOpen.value, - "popupStyle": popupStyle, - "prefixCls": prefixCls, - "dropdownClassName": dropdownClassName, - "dropdownAlign": dropdownAlign, - "getPopupContainer": getPopupContainer, - "transitionName": transitionName2, - "popupPlacement": popupPlacement, - "direction": direction - }, { - default: () => [createVNode("div", { - "style": { - pointerEvents: "none", - position: "absolute", - top: 0, - bottom: 0, - left: 0, - right: 0 - } - }, null)], - popupElement: () => panel - })]); - }; - } - }); -} -var Picker_default = Picker(); - -// node_modules/ant-design-vue/es/vc-picker/hooks/useRangeDisabled.js -function useRangeDisabled(_ref, openRecordsRef) { - let { - picker, - locale: locale4, - selectedValue, - disabledDate, - disabled, - generateConfig: generateConfig2 - } = _ref; - const startDate = computed(() => getValue2(selectedValue.value, 0)); - const endDate = computed(() => getValue2(selectedValue.value, 1)); - function weekFirstDate(date4) { - return generateConfig2.value.locale.getWeekFirstDate(locale4.value.locale, date4); - } - function monthNumber(date4) { - const year = generateConfig2.value.getYear(date4); - const month = generateConfig2.value.getMonth(date4); - return year * 100 + month; - } - function quarterNumber(date4) { - const year = generateConfig2.value.getYear(date4); - const quarter = getQuarter(generateConfig2.value, date4); - return year * 10 + quarter; - } - const disabledStartDate = (date4) => { - var _a2; - if (disabledDate && ((_a2 = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate.value) === null || _a2 === void 0 ? void 0 : _a2.call(disabledDate, date4))) { - return true; - } - if (disabled[1] && endDate) { - return !isSameDate(generateConfig2.value, date4, endDate.value) && generateConfig2.value.isAfter(date4, endDate.value); - } - if (openRecordsRef.value[1] && endDate.value) { - switch (picker.value) { - case "quarter": - return quarterNumber(date4) > quarterNumber(endDate.value); - case "month": - return monthNumber(date4) > monthNumber(endDate.value); - case "week": - return weekFirstDate(date4) > weekFirstDate(endDate.value); - default: - return !isSameDate(generateConfig2.value, date4, endDate.value) && generateConfig2.value.isAfter(date4, endDate.value); - } - } - return false; - }; - const disabledEndDate = (date4) => { - var _a2; - if ((_a2 = disabledDate.value) === null || _a2 === void 0 ? void 0 : _a2.call(disabledDate, date4)) { - return true; - } - if (disabled[0] && startDate) { - return !isSameDate(generateConfig2.value, date4, endDate.value) && generateConfig2.value.isAfter(startDate.value, date4); - } - if (openRecordsRef.value[0] && startDate.value) { - switch (picker.value) { - case "quarter": - return quarterNumber(date4) < quarterNumber(startDate.value); - case "month": - return monthNumber(date4) < monthNumber(startDate.value); - case "week": - return weekFirstDate(date4) < weekFirstDate(startDate.value); - default: - return !isSameDate(generateConfig2.value, date4, startDate.value) && generateConfig2.value.isAfter(startDate.value, date4); - } - } - return false; - }; - return [disabledStartDate, disabledEndDate]; -} - -// node_modules/ant-design-vue/es/vc-picker/hooks/useRangeViewDates.js -function getStartEndDistance(startDate, endDate, picker, generateConfig2) { - const startNext = getClosingViewDate(startDate, picker, generateConfig2, 1); - function getDistance(compareFunc) { - if (compareFunc(startDate, endDate)) { - return "same"; - } - if (compareFunc(startNext, endDate)) { - return "closing"; - } - return "far"; - } - switch (picker) { - case "year": - return getDistance((start, end) => isSameDecade(generateConfig2, start, end)); - case "quarter": - case "month": - return getDistance((start, end) => isSameYear(generateConfig2, start, end)); - default: - return getDistance((start, end) => isSameMonth(generateConfig2, start, end)); - } -} -function getRangeViewDate(values2, index3, picker, generateConfig2) { - const startDate = getValue2(values2, 0); - const endDate = getValue2(values2, 1); - if (index3 === 0) { - return startDate; - } - if (startDate && endDate) { - const distance = getStartEndDistance(startDate, endDate, picker, generateConfig2); - switch (distance) { - case "same": - return startDate; - case "closing": - return startDate; - default: - return getClosingViewDate(endDate, picker, generateConfig2, -1); - } - } - return startDate; -} -function useRangeViewDates(_ref) { - let { - values: values2, - picker, - defaultDates, - generateConfig: generateConfig2 - } = _ref; - const defaultViewDates = ref([getValue2(defaultDates, 0), getValue2(defaultDates, 1)]); - const viewDates = ref(null); - const startDate = computed(() => getValue2(values2.value, 0)); - const endDate = computed(() => getValue2(values2.value, 1)); - const getViewDate = (index3) => { - if (defaultViewDates.value[index3]) { - return defaultViewDates.value[index3]; - } - return getValue2(viewDates.value, index3) || getRangeViewDate(values2.value, index3, picker.value, generateConfig2.value) || startDate.value || endDate.value || generateConfig2.value.getNow(); - }; - const startViewDate = ref(null); - const endViewDate = ref(null); - watchEffect(() => { - startViewDate.value = getViewDate(0); - endViewDate.value = getViewDate(1); - }); - function setViewDate(viewDate, index3) { - if (viewDate) { - let newViewDates = updateValues(viewDates.value, viewDate, index3); - defaultViewDates.value = updateValues(defaultViewDates.value, null, index3) || [null, null]; - const anotherIndex = (index3 + 1) % 2; - if (!getValue2(values2.value, anotherIndex)) { - newViewDates = updateValues(newViewDates, viewDate, anotherIndex); - } - viewDates.value = newViewDates; - } else if (startDate.value || endDate.value) { - viewDates.value = null; - } - } - return [startViewDate, endViewDate, setViewDate]; -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnScopeDispose.js -function tryOnScopeDispose(fn) { - if (getCurrentScope()) { - onScopeDispose(fn); - return true; - } - return false; -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/resolveUnref.js -function resolveUnref(r3) { - return typeof r3 === "function" ? r3() : unref(r3); -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/unrefElement.js -function unrefElement(elRef) { - var _a2; - const plain = resolveUnref(elRef); - return (_a2 = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _a2 !== void 0 ? _a2 : plain; -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnMounted.js -function tryOnMounted(fn) { - let sync = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; - if (getCurrentInstance()) onMounted(fn); - else if (sync) fn(); - else nextTick(fn); -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/useSupported.js -function useSupported(callback) { - let sync = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const isSupported = shallowRef(); - const update2 = () => isSupported.value = Boolean(callback()); - update2(); - tryOnMounted(update2, sync); - return isSupported; -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/is.js -var _a; -var isClient2 = typeof window !== "undefined"; -var isIOS = isClient2 && ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/_configurable.js -var defaultWindow = isClient2 ? window : void 0; -var defaultDocument = isClient2 ? window.document : void 0; -var defaultNavigator = isClient2 ? window.navigator : void 0; -var defaultLocation = isClient2 ? window.location : void 0; - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/useResizeObserver.js -var __rest19 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function useResizeObserver(target, callback) { - let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - const { - window: window2 = defaultWindow - } = options, observerOptions = __rest19(options, ["window"]); - let observer; - const isSupported = useSupported(() => window2 && "ResizeObserver" in window2); - const cleanup2 = () => { - if (observer) { - observer.disconnect(); - observer = void 0; - } - }; - const stopWatch = watch(() => unrefElement(target), (el) => { - cleanup2(); - if (isSupported.value && window2 && el) { - observer = new ResizeObserver(callback); - observer.observe(el, observerOptions); - } - }, { - immediate: true, - flush: "post" - }); - const stop = () => { - cleanup2(); - stopWatch(); - }; - tryOnScopeDispose(stop); - return { - isSupported, - stop - }; -} - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/useElementSize.js -function useElementSize(target) { - let initialSize = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { - width: 0, - height: 0 - }; - let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - const { - box: box2 = "content-box" - } = options; - const width = shallowRef(initialSize.width); - const height = shallowRef(initialSize.height); - useResizeObserver(target, (_ref) => { - let [entry] = _ref; - const boxSize = box2 === "border-box" ? entry.borderBoxSize : box2 === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; - if (boxSize) { - width.value = boxSize.reduce((acc, _ref2) => { - let { - inlineSize - } = _ref2; - return acc + inlineSize; - }, 0); - height.value = boxSize.reduce((acc, _ref3) => { - let { - blockSize - } = _ref3; - return acc + blockSize; - }, 0); - } else { - width.value = entry.contentRect.width; - height.value = entry.contentRect.height; - } - }, options); - watch(() => unrefElement(target), (ele) => { - width.value = ele ? initialSize.width : 0; - height.value = ele ? initialSize.height : 0; - }); - return { - width, - height - }; -} - -// node_modules/ant-design-vue/es/vc-picker/RangePicker.js -function reorderValues(values2, generateConfig2) { - if (values2 && values2[0] && values2[1] && generateConfig2.isAfter(values2[0], values2[1])) { - return [values2[1], values2[0]]; - } - return values2; -} -function canValueTrigger(value, index3, disabled, allowEmpty) { - if (value) { - return true; - } - if (allowEmpty && allowEmpty[index3]) { - return true; - } - if (disabled[(index3 + 1) % 2]) { - return true; - } - return false; -} -function RangerPicker() { - return defineComponent({ - name: "RangerPicker", - inheritAttrs: false, - props: ["prefixCls", "id", "popupStyle", "dropdownClassName", "transitionName", "dropdownAlign", "getPopupContainer", "generateConfig", "locale", "placeholder", "autofocus", "disabled", "format", "picker", "showTime", "showNow", "showHour", "showMinute", "showSecond", "use12Hours", "separator", "value", "defaultValue", "defaultPickerValue", "open", "defaultOpen", "disabledDate", "disabledTime", "dateRender", "panelRender", "ranges", "allowEmpty", "allowClear", "suffixIcon", "clearIcon", "pickerRef", "inputReadOnly", "mode", "renderExtraFooter", "onChange", "onOpenChange", "onPanelChange", "onCalendarChange", "onFocus", "onBlur", "onMousedown", "onMouseup", "onMouseenter", "onMouseleave", "onClick", "onOk", "onKeydown", "components", "order", "direction", "activePickerIndex", "autocomplete", "minuteStep", "hourStep", "secondStep", "hideDisabledOptions", "disabledMinutes", "presets", "prevIcon", "nextIcon", "superPrevIcon", "superNextIcon"], - setup(props4, _ref) { - let { - attrs, - expose - } = _ref; - const needConfirmButton = computed(() => props4.picker === "date" && !!props4.showTime || props4.picker === "time"); - const presets = computed(() => props4.presets); - const ranges = computed(() => props4.ranges); - const presetList = usePresets(presets, ranges); - const openRecordsRef = ref({}); - const containerRef = ref(null); - const panelDivRef = ref(null); - const startInputDivRef = ref(null); - const endInputDivRef = ref(null); - const separatorRef = ref(null); - const startInputRef = ref(null); - const endInputRef = ref(null); - const arrowRef = ref(null); - if (true) { - legacyPropsWarning(props4); - } - const formatList = computed(() => toArray3(getDefaultFormat(props4.format, props4.picker, props4.showTime, props4.use12Hours))); - const [mergedActivePickerIndex, setMergedActivePickerIndex] = useMergedState(0, { - value: toRef(props4, "activePickerIndex") - }); - const operationRef = ref(null); - const mergedDisabled = computed(() => { - const { - disabled - } = props4; - if (Array.isArray(disabled)) { - return disabled; - } - return [disabled || false, disabled || false]; - }); - const [mergedValue, setInnerValue] = useMergedState(null, { - value: toRef(props4, "value"), - defaultValue: props4.defaultValue, - postState: (values2) => props4.picker === "time" && !props4.order ? values2 : reorderValues(values2, props4.generateConfig) - }); - const [startViewDate, endViewDate, setViewDate] = useRangeViewDates({ - values: mergedValue, - picker: toRef(props4, "picker"), - defaultDates: props4.defaultPickerValue, - generateConfig: toRef(props4, "generateConfig") - }); - const [selectedValue, setSelectedValue] = useMergedState(mergedValue.value, { - postState: (values2) => { - let postValues = values2; - if (mergedDisabled.value[0] && mergedDisabled.value[1]) { - return postValues; - } - for (let i3 = 0; i3 < 2; i3 += 1) { - if (mergedDisabled.value[i3] && !getValue2(postValues, i3) && !getValue2(props4.allowEmpty, i3)) { - postValues = updateValues(postValues, props4.generateConfig.getNow(), i3); - } - } - return postValues; - } - }); - const [mergedModes, setInnerModes] = useMergedState([props4.picker, props4.picker], { - value: toRef(props4, "mode") - }); - watch(() => props4.picker, () => { - setInnerModes([props4.picker, props4.picker]); - }); - const triggerModesChange = (modes, values2) => { - var _a2; - setInnerModes(modes); - (_a2 = props4.onPanelChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, values2, modes); - }; - const [disabledStartDate, disabledEndDate] = useRangeDisabled({ - picker: toRef(props4, "picker"), - selectedValue, - locale: toRef(props4, "locale"), - disabled: mergedDisabled, - disabledDate: toRef(props4, "disabledDate"), - generateConfig: toRef(props4, "generateConfig") - }, openRecordsRef); - const [mergedOpen, triggerInnerOpen] = useMergedState(false, { - value: toRef(props4, "open"), - defaultValue: props4.defaultOpen, - postState: (postOpen) => mergedDisabled.value[mergedActivePickerIndex.value] ? false : postOpen, - onChange: (newOpen) => { - var _a2; - (_a2 = props4.onOpenChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, newOpen); - if (!newOpen && operationRef.value && operationRef.value.onClose) { - operationRef.value.onClose(); - } - } - }); - const startOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 0); - const endOpen = computed(() => mergedOpen.value && mergedActivePickerIndex.value === 1); - const panelLeft = ref(0); - const arrowLeft = ref(0); - const popupMinWidth = ref(0); - const { - width: containerWidth - } = useElementSize(containerRef); - watch([mergedOpen, containerWidth], () => { - if (!mergedOpen.value && containerRef.value) { - popupMinWidth.value = containerWidth.value; - } - }); - const { - width: panelDivWidth - } = useElementSize(panelDivRef); - const { - width: arrowWidth - } = useElementSize(arrowRef); - const { - width: startInputDivWidth - } = useElementSize(startInputDivRef); - const { - width: separatorWidth - } = useElementSize(separatorRef); - watch([mergedActivePickerIndex, mergedOpen, panelDivWidth, arrowWidth, startInputDivWidth, separatorWidth, () => props4.direction], () => { - arrowLeft.value = 0; - if (mergedActivePickerIndex.value) { - if (startInputDivRef.value && separatorRef.value) { - arrowLeft.value = startInputDivWidth.value + separatorWidth.value; - if (panelDivWidth.value && arrowWidth.value && arrowLeft.value > panelDivWidth.value - arrowWidth.value - (props4.direction === "rtl" || arrowRef.value.offsetLeft > arrowLeft.value ? 0 : arrowRef.value.offsetLeft)) { - panelLeft.value = arrowLeft.value; - } - } - } else if (mergedActivePickerIndex.value === 0) { - panelLeft.value = 0; - } - }, { - immediate: true - }); - const triggerRef2 = ref(); - function triggerOpen(newOpen, index3) { - if (newOpen) { - clearTimeout(triggerRef2.value); - openRecordsRef.value[index3] = true; - setMergedActivePickerIndex(index3); - triggerInnerOpen(newOpen); - if (!mergedOpen.value) { - setViewDate(null, index3); - } - } else if (mergedActivePickerIndex.value === index3) { - triggerInnerOpen(newOpen); - const openRecords = openRecordsRef.value; - triggerRef2.value = setTimeout(() => { - if (openRecords === openRecordsRef.value) { - openRecordsRef.value = {}; - } - }); - } - } - function triggerOpenAndFocus(index3) { - triggerOpen(true, index3); - setTimeout(() => { - const inputRef = [startInputRef, endInputRef][index3]; - if (inputRef.value) { - inputRef.value.focus(); - } - }, 0); - } - function triggerChange(newValue, sourceIndex) { - let values2 = newValue; - let startValue = getValue2(values2, 0); - let endValue = getValue2(values2, 1); - const { - generateConfig: generateConfig2, - locale: locale4, - picker, - order, - onCalendarChange, - allowEmpty, - onChange, - showTime - } = props4; - if (startValue && endValue && generateConfig2.isAfter(startValue, endValue)) { - if ( - // WeekPicker only compare week - picker === "week" && !isSameWeek(generateConfig2, locale4.locale, startValue, endValue) || // QuotaPicker only compare week - picker === "quarter" && !isSameQuarter(generateConfig2, startValue, endValue) || // Other non-TimePicker compare date - picker !== "week" && picker !== "quarter" && picker !== "time" && !(showTime ? isEqual2(generateConfig2, startValue, endValue) : isSameDate(generateConfig2, startValue, endValue)) - ) { - if (sourceIndex === 0) { - values2 = [startValue, null]; - endValue = null; - } else { - startValue = null; - values2 = [null, endValue]; - } - openRecordsRef.value = { - [sourceIndex]: true - }; - } else if (picker !== "time" || order !== false) { - values2 = reorderValues(values2, generateConfig2); - } - } - setSelectedValue(values2); - const startStr2 = values2 && values2[0] ? formatValue(values2[0], { - generateConfig: generateConfig2, - locale: locale4, - format: formatList.value[0] - }) : ""; - const endStr2 = values2 && values2[1] ? formatValue(values2[1], { - generateConfig: generateConfig2, - locale: locale4, - format: formatList.value[0] - }) : ""; - if (onCalendarChange) { - const info = { - range: sourceIndex === 0 ? "start" : "end" - }; - onCalendarChange(values2, [startStr2, endStr2], info); - } - const canStartValueTrigger = canValueTrigger(startValue, 0, mergedDisabled.value, allowEmpty); - const canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled.value, allowEmpty); - const canTrigger = values2 === null || canStartValueTrigger && canEndValueTrigger; - if (canTrigger) { - setInnerValue(values2); - if (onChange && (!isEqual2(generateConfig2, getValue2(mergedValue.value, 0), startValue) || !isEqual2(generateConfig2, getValue2(mergedValue.value, 1), endValue))) { - onChange(values2, [startStr2, endStr2]); - } - } - let nextOpenIndex = null; - if (sourceIndex === 0 && !mergedDisabled.value[1]) { - nextOpenIndex = 1; - } else if (sourceIndex === 1 && !mergedDisabled.value[0]) { - nextOpenIndex = 0; - } - if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex.value && (!openRecordsRef.value[nextOpenIndex] || !getValue2(values2, nextOpenIndex)) && getValue2(values2, sourceIndex)) { - triggerOpenAndFocus(nextOpenIndex); - } else { - triggerOpen(false, sourceIndex); - } - } - const forwardKeydown = (e3) => { - if (mergedOpen && operationRef.value && operationRef.value.onKeydown) { - return operationRef.value.onKeydown(e3); - } - { - warning(false, "Picker not correct forward Keydown operation. Please help to fire issue about this."); - return false; - } - }; - const sharedTextHooksProps = { - formatList, - generateConfig: toRef(props4, "generateConfig"), - locale: toRef(props4, "locale") - }; - const [startValueTexts, firstStartValueText] = useValueTexts(computed(() => getValue2(selectedValue.value, 0)), sharedTextHooksProps); - const [endValueTexts, firstEndValueText] = useValueTexts(computed(() => getValue2(selectedValue.value, 1)), sharedTextHooksProps); - const onTextChange = (newText, index3) => { - const inputDate = parseValue(newText, { - locale: props4.locale, - formatList: formatList.value, - generateConfig: props4.generateConfig - }); - const disabledFunc = index3 === 0 ? disabledStartDate : disabledEndDate; - if (inputDate && !disabledFunc(inputDate)) { - setSelectedValue(updateValues(selectedValue.value, inputDate, index3)); - setViewDate(inputDate, index3); - } - }; - const [startText, triggerStartTextChange, resetStartText] = useTextValueMapping({ - valueTexts: startValueTexts, - onTextChange: (newText) => onTextChange(newText, 0) - }); - const [endText, triggerEndTextChange, resetEndText] = useTextValueMapping({ - valueTexts: endValueTexts, - onTextChange: (newText) => onTextChange(newText, 1) - }); - const [rangeHoverValue, setRangeHoverValue] = useState(null); - const [hoverRangedValue, setHoverRangedValue] = useState(null); - const [startHoverValue, onStartEnter, onStartLeave] = useHoverValue(startText, sharedTextHooksProps); - const [endHoverValue, onEndEnter, onEndLeave] = useHoverValue(endText, sharedTextHooksProps); - const onDateMouseenter = (date4) => { - setHoverRangedValue(updateValues(selectedValue.value, date4, mergedActivePickerIndex.value)); - if (mergedActivePickerIndex.value === 0) { - onStartEnter(date4); - } else { - onEndEnter(date4); - } - }; - const onDateMouseleave = () => { - setHoverRangedValue(updateValues(selectedValue.value, null, mergedActivePickerIndex.value)); - if (mergedActivePickerIndex.value === 0) { - onStartLeave(); - } else { - onEndLeave(); - } - }; - const getSharedInputHookProps = (index3, resetText) => ({ - forwardKeydown, - onBlur: (e3) => { - var _a2; - (_a2 = props4.onBlur) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }, - isClickOutside: (target) => !elementsContains([panelDivRef.value, startInputDivRef.value, endInputDivRef.value, containerRef.value], target), - onFocus: (e3) => { - var _a2; - setMergedActivePickerIndex(index3); - (_a2 = props4.onFocus) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }, - triggerOpen: (newOpen) => { - triggerOpen(newOpen, index3); - }, - onSubmit: () => { - if ( - // When user typing disabledDate with keyboard and enter, this value will be empty - !selectedValue.value || // Normal disabled check - props4.disabledDate && props4.disabledDate(selectedValue.value[index3]) - ) { - return false; - } - triggerChange(selectedValue.value, index3); - resetText(); - }, - onCancel: () => { - triggerOpen(false, index3); - setSelectedValue(mergedValue.value); - resetText(); - } - }); - const [startInputProps, { - focused: startFocused, - typing: startTyping - }] = usePickerInput(_extends(_extends({}, getSharedInputHookProps(0, resetStartText)), { - blurToCancel: needConfirmButton, - open: startOpen, - value: startText, - onKeydown: (e3, preventDefault) => { - var _a2; - (_a2 = props4.onKeydown) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3, preventDefault); - } - })); - const [endInputProps, { - focused: endFocused, - typing: endTyping - }] = usePickerInput(_extends(_extends({}, getSharedInputHookProps(1, resetEndText)), { - blurToCancel: needConfirmButton, - open: endOpen, - value: endText, - onKeydown: (e3, preventDefault) => { - var _a2; - (_a2 = props4.onKeydown) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3, preventDefault); - } - })); - const onPickerClick = (e3) => { - var _a2; - (_a2 = props4.onClick) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - if (!mergedOpen.value && !startInputRef.value.contains(e3.target) && !endInputRef.value.contains(e3.target)) { - if (!mergedDisabled.value[0]) { - triggerOpenAndFocus(0); - } else if (!mergedDisabled.value[1]) { - triggerOpenAndFocus(1); - } - } - }; - const onPickerMousedown = (e3) => { - var _a2; - (_a2 = props4.onMousedown) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - if (mergedOpen.value && (startFocused.value || endFocused.value) && !startInputRef.value.contains(e3.target) && !endInputRef.value.contains(e3.target)) { - e3.preventDefault(); - } - }; - const startStr = computed(() => { - var _a2; - return ((_a2 = mergedValue.value) === null || _a2 === void 0 ? void 0 : _a2[0]) ? formatValue(mergedValue.value[0], { - locale: props4.locale, - format: "YYYYMMDDHHmmss", - generateConfig: props4.generateConfig - }) : ""; - }); - const endStr = computed(() => { - var _a2; - return ((_a2 = mergedValue.value) === null || _a2 === void 0 ? void 0 : _a2[1]) ? formatValue(mergedValue.value[1], { - locale: props4.locale, - format: "YYYYMMDDHHmmss", - generateConfig: props4.generateConfig - }) : ""; - }); - watch([mergedOpen, startValueTexts, endValueTexts], () => { - if (!mergedOpen.value) { - setSelectedValue(mergedValue.value); - if (!startValueTexts.value.length || startValueTexts.value[0] === "") { - triggerStartTextChange(""); - } else if (firstStartValueText.value !== startText.value) { - resetStartText(); - } - if (!endValueTexts.value.length || endValueTexts.value[0] === "") { - triggerEndTextChange(""); - } else if (firstEndValueText.value !== endText.value) { - resetEndText(); - } - } - }); - watch([startStr, endStr], () => { - setSelectedValue(mergedValue.value); - }); - if (true) { - watchEffect(() => { - const { - value, - disabled - } = props4; - if (value && Array.isArray(disabled) && (getValue2(disabled, 0) && !getValue2(value, 0) || getValue2(disabled, 1) && !getValue2(value, 1))) { - warning(false, "`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead."); - } - }); - } - expose({ - focus: () => { - if (startInputRef.value) { - startInputRef.value.focus(); - } - }, - blur: () => { - if (startInputRef.value) { - startInputRef.value.blur(); - } - if (endInputRef.value) { - endInputRef.value.blur(); - } - } - }); - const panelHoverRangedValue = computed(() => { - if (mergedOpen.value && hoverRangedValue.value && hoverRangedValue.value[0] && hoverRangedValue.value[1] && props4.generateConfig.isAfter(hoverRangedValue.value[1], hoverRangedValue.value[0])) { - return hoverRangedValue.value; - } else { - return null; - } - }); - function renderPanel() { - let panelPosition = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - let panelProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const { - generateConfig: generateConfig2, - showTime, - dateRender, - direction, - disabledTime, - prefixCls, - locale: locale4 - } = props4; - let panelShowTime = showTime; - if (showTime && typeof showTime === "object" && showTime.defaultValue) { - const timeDefaultValues = showTime.defaultValue; - panelShowTime = _extends(_extends({}, showTime), { - defaultValue: getValue2(timeDefaultValues, mergedActivePickerIndex.value) || void 0 - }); - } - let panelDateRender = null; - if (dateRender) { - panelDateRender = (_ref2) => { - let { - current: date4, - today - } = _ref2; - return dateRender({ - current: date4, - today, - info: { - range: mergedActivePickerIndex.value ? "end" : "start" - } - }); - }; - } - return createVNode(RangeContextProvider, { - "value": { - inRange: true, - panelPosition, - rangedValue: rangeHoverValue.value || selectedValue.value, - hoverRangedValue: panelHoverRangedValue.value - } - }, { - default: () => [createVNode(PickerPanel_default, _objectSpread2(_objectSpread2(_objectSpread2({}, props4), panelProps), {}, { - "dateRender": panelDateRender, - "showTime": panelShowTime, - "mode": mergedModes.value[mergedActivePickerIndex.value], - "generateConfig": generateConfig2, - "style": void 0, - "direction": direction, - "disabledDate": mergedActivePickerIndex.value === 0 ? disabledStartDate : disabledEndDate, - "disabledTime": (date4) => { - if (disabledTime) { - return disabledTime(date4, mergedActivePickerIndex.value === 0 ? "start" : "end"); - } - return false; - }, - "class": classNames_default({ - [`${prefixCls}-panel-focused`]: mergedActivePickerIndex.value === 0 ? !startTyping.value : !endTyping.value - }), - "value": getValue2(selectedValue.value, mergedActivePickerIndex.value), - "locale": locale4, - "tabIndex": -1, - "onPanelChange": (date4, newMode) => { - if (mergedActivePickerIndex.value === 0) { - onStartLeave(true); - } - if (mergedActivePickerIndex.value === 1) { - onEndLeave(true); - } - triggerModesChange(updateValues(mergedModes.value, newMode, mergedActivePickerIndex.value), updateValues(selectedValue.value, date4, mergedActivePickerIndex.value)); - let viewDate = date4; - if (panelPosition === "right" && mergedModes.value[mergedActivePickerIndex.value] === newMode) { - viewDate = getClosingViewDate(viewDate, newMode, generateConfig2, -1); - } - setViewDate(viewDate, mergedActivePickerIndex.value); - }, - "onOk": null, - "onSelect": void 0, - "onChange": void 0, - "defaultValue": mergedActivePickerIndex.value === 0 ? getValue2(selectedValue.value, 1) : getValue2(selectedValue.value, 0) - }), null)] - }); - } - const onContextSelect = (date4, type4) => { - const values2 = updateValues(selectedValue.value, date4, mergedActivePickerIndex.value); - if (type4 === "submit" || type4 !== "key" && !needConfirmButton.value) { - triggerChange(values2, mergedActivePickerIndex.value); - if (mergedActivePickerIndex.value === 0) { - onStartLeave(); - } else { - onEndLeave(); - } - } else { - setSelectedValue(values2); - } - }; - useProvidePanel({ - operationRef, - hideHeader: computed(() => props4.picker === "time"), - onDateMouseenter, - onDateMouseleave, - hideRanges: computed(() => true), - onSelect: onContextSelect, - open: mergedOpen - }); - return () => { - const { - prefixCls = "rc-picker", - id, - popupStyle, - dropdownClassName, - transitionName: transitionName2, - dropdownAlign, - getPopupContainer, - generateConfig: generateConfig2, - locale: locale4, - placeholder, - autofocus, - picker = "date", - showTime, - separator = "~", - disabledDate, - panelRender: panelRender2, - allowClear, - suffixIcon, - clearIcon, - inputReadOnly, - renderExtraFooter, - onMouseenter, - onMouseleave, - onMouseup, - onOk, - components, - direction, - autocomplete = "off" - } = props4; - const arrowPositionStyle = direction === "rtl" ? { - right: `${arrowLeft.value}px` - } : { - left: `${arrowLeft.value}px` - }; - function renderPanels() { - let panels; - const extraNode = getExtraFooter(prefixCls, mergedModes.value[mergedActivePickerIndex.value], renderExtraFooter); - const rangesNode = getRanges({ - prefixCls, - components, - needConfirmButton: needConfirmButton.value, - okDisabled: !getValue2(selectedValue.value, mergedActivePickerIndex.value) || disabledDate && disabledDate(selectedValue.value[mergedActivePickerIndex.value]), - locale: locale4, - onOk: () => { - if (getValue2(selectedValue.value, mergedActivePickerIndex.value)) { - triggerChange(selectedValue.value, mergedActivePickerIndex.value); - if (onOk) { - onOk(selectedValue.value); - } - } - } - }); - if (picker !== "time" && !showTime) { - const viewDate = mergedActivePickerIndex.value === 0 ? startViewDate.value : endViewDate.value; - const nextViewDate = getClosingViewDate(viewDate, picker, generateConfig2); - const currentMode = mergedModes.value[mergedActivePickerIndex.value]; - const showDoublePanel = currentMode === picker; - const leftPanel = renderPanel(showDoublePanel ? "left" : false, { - pickerValue: viewDate, - onPickerValueChange: (newViewDate) => { - setViewDate(newViewDate, mergedActivePickerIndex.value); - } - }); - const rightPanel = renderPanel("right", { - pickerValue: nextViewDate, - onPickerValueChange: (newViewDate) => { - setViewDate(getClosingViewDate(newViewDate, picker, generateConfig2, -1), mergedActivePickerIndex.value); - } - }); - if (direction === "rtl") { - panels = createVNode(Fragment, null, [rightPanel, showDoublePanel && leftPanel]); - } else { - panels = createVNode(Fragment, null, [leftPanel, showDoublePanel && rightPanel]); - } - } else { - panels = renderPanel(); - } - let mergedNodes = createVNode("div", { - "class": `${prefixCls}-panel-layout` - }, [createVNode(PresetPanel_default, { - "prefixCls": prefixCls, - "presets": presetList.value, - "onClick": (nextValue) => { - triggerChange(nextValue, null); - triggerOpen(false, mergedActivePickerIndex.value); - }, - "onHover": (hoverValue) => { - setRangeHoverValue(hoverValue); - } - }, null), createVNode("div", null, [createVNode("div", { - "class": `${prefixCls}-panels` - }, [panels]), (extraNode || rangesNode) && createVNode("div", { - "class": `${prefixCls}-footer` - }, [extraNode, rangesNode])])]); - if (panelRender2) { - mergedNodes = panelRender2(mergedNodes); - } - return createVNode("div", { - "class": `${prefixCls}-panel-container`, - "style": { - marginLeft: `${panelLeft.value}px` - }, - "ref": panelDivRef, - "onMousedown": (e3) => { - e3.preventDefault(); - } - }, [mergedNodes]); - } - const rangePanel = createVNode("div", { - "class": classNames_default(`${prefixCls}-range-wrapper`, `${prefixCls}-${picker}-range-wrapper`), - "style": { - minWidth: `${popupMinWidth.value}px` - } - }, [createVNode("div", { - "ref": arrowRef, - "class": `${prefixCls}-range-arrow`, - "style": arrowPositionStyle - }, null), renderPanels()]); - let suffixNode; - if (suffixIcon) { - suffixNode = createVNode("span", { - "class": `${prefixCls}-suffix` - }, [suffixIcon]); - } - let clearNode; - if (allowClear && (getValue2(mergedValue.value, 0) && !mergedDisabled.value[0] || getValue2(mergedValue.value, 1) && !mergedDisabled.value[1])) { - clearNode = createVNode("span", { - "onMousedown": (e3) => { - e3.preventDefault(); - e3.stopPropagation(); - }, - "onMouseup": (e3) => { - e3.preventDefault(); - e3.stopPropagation(); - let values2 = mergedValue.value; - if (!mergedDisabled.value[0]) { - values2 = updateValues(values2, null, 0); - } - if (!mergedDisabled.value[1]) { - values2 = updateValues(values2, null, 1); - } - triggerChange(values2, null); - triggerOpen(false, mergedActivePickerIndex.value); - }, - "class": `${prefixCls}-clear` - }, [clearIcon || createVNode("span", { - "class": `${prefixCls}-clear-btn` - }, null)]); - } - const inputSharedProps = { - size: getInputSize(picker, formatList.value[0], generateConfig2) - }; - let activeBarLeft = 0; - let activeBarWidth = 0; - if (startInputDivRef.value && endInputDivRef.value && separatorRef.value) { - if (mergedActivePickerIndex.value === 0) { - activeBarWidth = startInputDivRef.value.offsetWidth; - } else { - activeBarLeft = arrowLeft.value; - activeBarWidth = endInputDivRef.value.offsetWidth; - } - } - const activeBarPositionStyle = direction === "rtl" ? { - right: `${activeBarLeft}px` - } : { - left: `${activeBarLeft}px` - }; - return createVNode("div", _objectSpread2({ - "ref": containerRef, - "class": classNames_default(prefixCls, `${prefixCls}-range`, attrs.class, { - [`${prefixCls}-disabled`]: mergedDisabled.value[0] && mergedDisabled.value[1], - [`${prefixCls}-focused`]: mergedActivePickerIndex.value === 0 ? startFocused.value : endFocused.value, - [`${prefixCls}-rtl`]: direction === "rtl" - }), - "style": attrs.style, - "onClick": onPickerClick, - "onMouseenter": onMouseenter, - "onMouseleave": onMouseleave, - "onMousedown": onPickerMousedown, - "onMouseup": onMouseup - }, getDataOrAriaProps(props4)), [createVNode("div", { - "class": classNames_default(`${prefixCls}-input`, { - [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 0, - [`${prefixCls}-input-placeholder`]: !!startHoverValue.value - }), - "ref": startInputDivRef - }, [createVNode("input", _objectSpread2(_objectSpread2(_objectSpread2({ - "id": id, - "disabled": mergedDisabled.value[0], - "readonly": inputReadOnly || typeof formatList.value[0] === "function" || !startTyping.value, - "value": startHoverValue.value || startText.value, - "onInput": (e3) => { - triggerStartTextChange(e3.target.value); - }, - "autofocus": autofocus, - "placeholder": getValue2(placeholder, 0) || "", - "ref": startInputRef - }, startInputProps.value), inputSharedProps), {}, { - "autocomplete": autocomplete - }), null)]), createVNode("div", { - "class": `${prefixCls}-range-separator`, - "ref": separatorRef - }, [separator]), createVNode("div", { - "class": classNames_default(`${prefixCls}-input`, { - [`${prefixCls}-input-active`]: mergedActivePickerIndex.value === 1, - [`${prefixCls}-input-placeholder`]: !!endHoverValue.value - }), - "ref": endInputDivRef - }, [createVNode("input", _objectSpread2(_objectSpread2(_objectSpread2({ - "disabled": mergedDisabled.value[1], - "readonly": inputReadOnly || typeof formatList.value[0] === "function" || !endTyping.value, - "value": endHoverValue.value || endText.value, - "onInput": (e3) => { - triggerEndTextChange(e3.target.value); - }, - "placeholder": getValue2(placeholder, 1) || "", - "ref": endInputRef - }, endInputProps.value), inputSharedProps), {}, { - "autocomplete": autocomplete - }), null)]), createVNode("div", { - "class": `${prefixCls}-active-bar`, - "style": _extends(_extends({}, activeBarPositionStyle), { - width: `${activeBarWidth}px`, - position: "absolute" - }) - }, null), suffixNode, clearNode, createVNode(PickerTrigger_default, { - "visible": mergedOpen.value, - "popupStyle": popupStyle, - "prefixCls": prefixCls, - "dropdownClassName": dropdownClassName, - "dropdownAlign": dropdownAlign, - "getPopupContainer": getPopupContainer, - "transitionName": transitionName2, - "range": true, - "direction": direction - }, { - default: () => [createVNode("div", { - "style": { - pointerEvents: "none", - position: "absolute", - top: 0, - bottom: 0, - left: 0, - right: 0 - } - }, null)], - popupElement: () => rangePanel - })]); - }; - } - }); -} -var InterRangerPicker = RangerPicker(); -var RangePicker_default = InterRangerPicker; - -// node_modules/ant-design-vue/es/vc-picker/index.js -var vc_picker_default = Picker_default; - -// node_modules/ant-design-vue/es/vc-checkbox/Checkbox.js -var __rest20 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var checkboxProps = { - prefixCls: String, - name: String, - id: String, - type: String, - defaultChecked: { - type: [Boolean, Number], - default: void 0 - }, - checked: { - type: [Boolean, Number], - default: void 0 - }, - disabled: Boolean, - tabindex: { - type: [Number, String] - }, - readonly: Boolean, - autofocus: Boolean, - value: vue_types_default.any, - required: Boolean -}; -var Checkbox_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Checkbox", - inheritAttrs: false, - props: initDefaultProps_default(checkboxProps, { - prefixCls: "rc-checkbox", - type: "checkbox", - defaultChecked: false - }), - emits: ["click", "change"], - setup(props4, _ref) { - let { - attrs, - emit, - expose - } = _ref; - const checked = ref(props4.checked === void 0 ? props4.defaultChecked : props4.checked); - const inputRef = ref(); - watch(() => props4.checked, () => { - checked.value = props4.checked; - }); - expose({ - focus() { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const eventShiftKey = ref(); - const handleChange = (e3) => { - if (props4.disabled) { - return; - } - if (props4.checked === void 0) { - checked.value = e3.target.checked; - } - e3.shiftKey = eventShiftKey.value; - const eventObj = { - target: _extends(_extends({}, props4), { - checked: e3.target.checked - }), - stopPropagation() { - e3.stopPropagation(); - }, - preventDefault() { - e3.preventDefault(); - }, - nativeEvent: e3 - }; - if (props4.checked !== void 0) { - inputRef.value.checked = !!props4.checked; - } - emit("change", eventObj); - eventShiftKey.value = false; - }; - const onClick = (e3) => { - emit("click", e3); - eventShiftKey.value = e3.shiftKey; - }; - return () => { - const { - prefixCls, - name, - id, - type: type4, - disabled, - readonly, - tabindex, - autofocus, - value, - required: required4 - } = props4, others = __rest20(props4, ["prefixCls", "name", "id", "type", "disabled", "readonly", "tabindex", "autofocus", "value", "required"]); - const { - class: className, - onFocus, - onBlur, - onKeydown, - onKeypress, - onKeyup - } = attrs; - const othersAndAttrs = _extends(_extends({}, others), attrs); - const globalProps = Object.keys(othersAndAttrs).reduce((prev2, key2) => { - if (key2.startsWith("data-") || key2.startsWith("aria-") || key2 === "role") { - prev2[key2] = othersAndAttrs[key2]; - } - return prev2; - }, {}); - const classString = classNames_default(prefixCls, className, { - [`${prefixCls}-checked`]: checked.value, - [`${prefixCls}-disabled`]: disabled - }); - const inputProps4 = _extends(_extends({ - name, - id, - type: type4, - readonly, - disabled, - tabindex, - class: `${prefixCls}-input`, - checked: !!checked.value, - autofocus, - value - }, globalProps), { - onChange: handleChange, - onClick, - onFocus, - onBlur, - onKeydown, - onKeypress, - onKeyup, - required: required4 - }); - return createVNode("span", { - "class": classString - }, [createVNode("input", _objectSpread2({ - "ref": inputRef - }, inputProps4), null), createVNode("span", { - "class": `${prefixCls}-inner` - }, null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/radio/context.js -var radioGroupContextKey = Symbol("radioGroupContextKey"); -var useProvideRadioGroupContext = (props4) => { - provide(radioGroupContextKey, props4); -}; -var useInjectRadioGroupContext = () => { - return inject(radioGroupContextKey, void 0); -}; -var radioOptionTypeContextKey = Symbol("radioOptionTypeContextKey"); -var useProvideRadioOptionTypeContext = (props4) => { - provide(radioOptionTypeContextKey, props4); -}; -var useInjectRadioOptionTypeContext = () => { - return inject(radioOptionTypeContextKey, void 0); -}; - -// node_modules/ant-design-vue/es/radio/style/index.js -var antRadioEffect = new Keyframes_default("antRadioEffect", { - "0%": { - transform: "scale(1)", - opacity: 0.5 - }, - "100%": { - transform: "scale(1.6)", - opacity: 0 - } -}); -var getGroupRadioStyle = (token2) => { - const { - componentCls, - antCls - } = token2; - const groupPrefixCls = `${componentCls}-group`; - return { - [groupPrefixCls]: _extends(_extends({}, resetComponent(token2)), { - display: "inline-block", - fontSize: 0, - // RTL - [`&${groupPrefixCls}-rtl`]: { - direction: "rtl" - }, - [`${antCls}-badge ${antCls}-badge-count`]: { - zIndex: 1 - }, - [`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: { - borderInlineStart: "none" - } - }) - }; -}; -var getRadioBasicStyle = (token2) => { - const { - componentCls, - radioWrapperMarginRight, - radioCheckedColor, - radioSize, - motionDurationSlow, - motionDurationMid, - motionEaseInOut, - motionEaseInOutCirc, - radioButtonBg, - colorBorder, - lineWidth, - radioDotSize, - colorBgContainerDisabled, - colorTextDisabled, - paddingXS, - radioDotDisabledColor, - lineType, - radioDotDisabledSize, - wireframe, - colorWhite - } = token2; - const radioInnerPrefixCls = `${componentCls}-inner`; - return { - [`${componentCls}-wrapper`]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-flex", - alignItems: "baseline", - marginInlineStart: 0, - marginInlineEnd: radioWrapperMarginRight, - cursor: "pointer", - // RTL - [`&${componentCls}-wrapper-rtl`]: { - direction: "rtl" - }, - "&-disabled": { - cursor: "not-allowed", - color: token2.colorTextDisabled - }, - "&::after": { - display: "inline-block", - width: 0, - overflow: "hidden", - content: '"\\a0"' - }, - // hashId 在 wrapper 上,只能铺平 - [`${componentCls}-checked::after`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - width: "100%", - height: "100%", - border: `${lineWidth}px ${lineType} ${radioCheckedColor}`, - borderRadius: "50%", - visibility: "hidden", - animationName: antRadioEffect, - animationDuration: motionDurationSlow, - animationTimingFunction: motionEaseInOut, - animationFillMode: "both", - content: '""' - }, - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-block", - outline: "none", - cursor: "pointer", - alignSelf: "center" - }), - [`${componentCls}-wrapper:hover &, - &:hover ${radioInnerPrefixCls}`]: { - borderColor: radioCheckedColor - }, - [`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: _extends({}, genFocusOutline(token2)), - [`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: { - visibility: "visible" - }, - [`${componentCls}-inner`]: { - "&::after": { - boxSizing: "border-box", - position: "absolute", - insetBlockStart: "50%", - insetInlineStart: "50%", - display: "block", - width: radioSize, - height: radioSize, - marginBlockStart: radioSize / -2, - marginInlineStart: radioSize / -2, - backgroundColor: wireframe ? radioCheckedColor : colorWhite, - borderBlockStart: 0, - borderInlineStart: 0, - borderRadius: radioSize, - transform: "scale(0)", - opacity: 0, - transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`, - content: '""' - }, - boxSizing: "border-box", - position: "relative", - insetBlockStart: 0, - insetInlineStart: 0, - display: "block", - width: radioSize, - height: radioSize, - backgroundColor: radioButtonBg, - borderColor: colorBorder, - borderStyle: "solid", - borderWidth: lineWidth, - borderRadius: "50%", - transition: `all ${motionDurationMid}` - }, - [`${componentCls}-input`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineEnd: 0, - insetBlockEnd: 0, - insetInlineStart: 0, - zIndex: 1, - cursor: "pointer", - opacity: 0 - }, - // 选中状态 - [`${componentCls}-checked`]: { - [radioInnerPrefixCls]: { - borderColor: radioCheckedColor, - backgroundColor: wireframe ? radioButtonBg : radioCheckedColor, - "&::after": { - transform: `scale(${radioDotSize / radioSize})`, - opacity: 1, - transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}` - } - } - }, - [`${componentCls}-disabled`]: { - cursor: "not-allowed", - [radioInnerPrefixCls]: { - backgroundColor: colorBgContainerDisabled, - borderColor: colorBorder, - cursor: "not-allowed", - "&::after": { - backgroundColor: radioDotDisabledColor - } - }, - [`${componentCls}-input`]: { - cursor: "not-allowed" - }, - [`${componentCls}-disabled + span`]: { - color: colorTextDisabled, - cursor: "not-allowed" - }, - [`&${componentCls}-checked`]: { - [radioInnerPrefixCls]: { - "&::after": { - transform: `scale(${radioDotDisabledSize / radioSize})` - } - } - } - }, - [`span${componentCls} + *`]: { - paddingInlineStart: paddingXS, - paddingInlineEnd: paddingXS - } - }) - }; -}; -var getRadioButtonStyle = (token2) => { - const { - radioButtonColor, - controlHeight, - componentCls, - lineWidth, - lineType, - colorBorder, - motionDurationSlow, - motionDurationMid, - radioButtonPaddingHorizontal, - fontSize, - radioButtonBg, - fontSizeLG, - controlHeightLG, - controlHeightSM, - paddingXS, - borderRadius, - borderRadiusSM, - borderRadiusLG, - radioCheckedColor, - radioButtonCheckedBg, - radioButtonHoverColor, - radioButtonActiveColor, - radioSolidCheckedColor, - colorTextDisabled, - colorBgContainerDisabled, - radioDisabledButtonCheckedColor, - radioDisabledButtonCheckedBg - } = token2; - return { - [`${componentCls}-button-wrapper`]: { - position: "relative", - display: "inline-block", - height: controlHeight, - margin: 0, - paddingInline: radioButtonPaddingHorizontal, - paddingBlock: 0, - color: radioButtonColor, - fontSize, - lineHeight: `${controlHeight - lineWidth * 2}px`, - background: radioButtonBg, - border: `${lineWidth}px ${lineType} ${colorBorder}`, - // strange align fix for chrome but works - // https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif - borderBlockStartWidth: lineWidth + 0.02, - borderInlineStartWidth: 0, - borderInlineEndWidth: lineWidth, - cursor: "pointer", - transition: [`color ${motionDurationMid}`, `background ${motionDurationMid}`, `border-color ${motionDurationMid}`, `box-shadow ${motionDurationMid}`].join(","), - a: { - color: radioButtonColor - }, - [`> ${componentCls}-button`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - zIndex: -1, - width: "100%", - height: "100%" - }, - "&:not(:first-child)": { - "&::before": { - position: "absolute", - insetBlockStart: -lineWidth, - insetInlineStart: -lineWidth, - display: "block", - boxSizing: "content-box", - width: 1, - height: "100%", - paddingBlock: lineWidth, - paddingInline: 0, - backgroundColor: colorBorder, - transition: `background-color ${motionDurationSlow}`, - content: '""' - } - }, - "&:first-child": { - borderInlineStart: `${lineWidth}px ${lineType} ${colorBorder}`, - borderStartStartRadius: borderRadius, - borderEndStartRadius: borderRadius - }, - "&:last-child": { - borderStartEndRadius: borderRadius, - borderEndEndRadius: borderRadius - }, - "&:first-child:last-child": { - borderRadius - }, - [`${componentCls}-group-large &`]: { - height: controlHeightLG, - fontSize: fontSizeLG, - lineHeight: `${controlHeightLG - lineWidth * 2}px`, - "&:first-child": { - borderStartStartRadius: borderRadiusLG, - borderEndStartRadius: borderRadiusLG - }, - "&:last-child": { - borderStartEndRadius: borderRadiusLG, - borderEndEndRadius: borderRadiusLG - } - }, - [`${componentCls}-group-small &`]: { - height: controlHeightSM, - paddingInline: paddingXS - lineWidth, - paddingBlock: 0, - lineHeight: `${controlHeightSM - lineWidth * 2}px`, - "&:first-child": { - borderStartStartRadius: borderRadiusSM, - borderEndStartRadius: borderRadiusSM - }, - "&:last-child": { - borderStartEndRadius: borderRadiusSM, - borderEndEndRadius: borderRadiusSM - } - }, - "&:hover": { - position: "relative", - color: radioCheckedColor - }, - "&:has(:focus-visible)": _extends({}, genFocusOutline(token2)), - [`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: { - width: 0, - height: 0, - opacity: 0, - pointerEvents: "none" - }, - [`&-checked:not(${componentCls}-button-wrapper-disabled)`]: { - zIndex: 1, - color: radioCheckedColor, - background: radioButtonCheckedBg, - borderColor: radioCheckedColor, - "&::before": { - backgroundColor: radioCheckedColor - }, - "&:first-child": { - borderColor: radioCheckedColor - }, - "&:hover": { - color: radioButtonHoverColor, - borderColor: radioButtonHoverColor, - "&::before": { - backgroundColor: radioButtonHoverColor - } - }, - "&:active": { - color: radioButtonActiveColor, - borderColor: radioButtonActiveColor, - "&::before": { - backgroundColor: radioButtonActiveColor - } - } - }, - [`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: { - color: radioSolidCheckedColor, - background: radioCheckedColor, - borderColor: radioCheckedColor, - "&:hover": { - color: radioSolidCheckedColor, - background: radioButtonHoverColor, - borderColor: radioButtonHoverColor - }, - "&:active": { - color: radioSolidCheckedColor, - background: radioButtonActiveColor, - borderColor: radioButtonActiveColor - } - }, - "&-disabled": { - color: colorTextDisabled, - backgroundColor: colorBgContainerDisabled, - borderColor: colorBorder, - cursor: "not-allowed", - "&:first-child, &:hover": { - color: colorTextDisabled, - backgroundColor: colorBgContainerDisabled, - borderColor: colorBorder - } - }, - [`&-disabled${componentCls}-button-wrapper-checked`]: { - color: radioDisabledButtonCheckedColor, - backgroundColor: radioDisabledButtonCheckedBg, - borderColor: colorBorder, - boxShadow: "none" - } - } - }; -}; -var style_default16 = genComponentStyleHook("Radio", (token2) => { - const { - padding, - lineWidth, - controlItemBgActiveDisabled, - colorTextDisabled, - colorBgContainer, - fontSizeLG, - controlOutline, - colorPrimaryHover, - colorPrimaryActive, - colorText, - colorPrimary, - marginXS, - controlOutlineWidth, - colorTextLightSolid, - wireframe - } = token2; - const radioFocusShadow = `0 0 0 ${controlOutlineWidth}px ${controlOutline}`; - const radioButtonFocusShadow = radioFocusShadow; - const radioSize = fontSizeLG; - const dotPadding = 4; - const radioDotDisabledSize = radioSize - dotPadding * 2; - const radioDotSize = wireframe ? radioDotDisabledSize : radioSize - (dotPadding + lineWidth) * 2; - const radioCheckedColor = colorPrimary; - const radioButtonColor = colorText; - const radioButtonHoverColor = colorPrimaryHover; - const radioButtonActiveColor = colorPrimaryActive; - const radioButtonPaddingHorizontal = padding - lineWidth; - const radioDisabledButtonCheckedColor = colorTextDisabled; - const radioWrapperMarginRight = marginXS; - const radioToken = merge(token2, { - radioFocusShadow, - radioButtonFocusShadow, - radioSize, - radioDotSize, - radioDotDisabledSize, - radioCheckedColor, - radioDotDisabledColor: colorTextDisabled, - radioSolidCheckedColor: colorTextLightSolid, - radioButtonBg: colorBgContainer, - radioButtonCheckedBg: colorBgContainer, - radioButtonColor, - radioButtonHoverColor, - radioButtonActiveColor, - radioButtonPaddingHorizontal, - radioDisabledButtonCheckedBg: controlItemBgActiveDisabled, - radioDisabledButtonCheckedColor, - radioWrapperMarginRight - }); - return [getGroupRadioStyle(radioToken), getRadioBasicStyle(radioToken), getRadioButtonStyle(radioToken)]; -}); - -// node_modules/ant-design-vue/es/radio/Radio.js -var __rest21 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var radioProps = () => ({ - prefixCls: String, - checked: booleanType(), - disabled: booleanType(), - isGroup: booleanType(), - value: vue_types_default.any, - name: String, - id: String, - autofocus: booleanType(), - onChange: functionType(), - onFocus: functionType(), - onBlur: functionType(), - onClick: functionType(), - "onUpdate:checked": functionType(), - "onUpdate:value": functionType() -}); -var Radio_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARadio", - inheritAttrs: false, - props: radioProps(), - setup(props4, _ref) { - let { - emit, - expose, - slots, - attrs - } = _ref; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const radioOptionTypeContext = useInjectRadioOptionTypeContext(); - const radioGroupContext = useInjectRadioGroupContext(); - const disabledContext = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - const vcCheckbox = ref(); - const { - prefixCls: radioPrefixCls, - direction, - disabled - } = useConfigInject_default("radio", props4); - const prefixCls = computed(() => (radioGroupContext === null || radioGroupContext === void 0 ? void 0 : radioGroupContext.optionType.value) === "button" || radioOptionTypeContext === "button" ? `${radioPrefixCls.value}-button` : radioPrefixCls.value); - const contextDisabled = useInjectDisabled(); - const [wrapSSR, hashId] = style_default16(radioPrefixCls); - const focus = () => { - vcCheckbox.value.focus(); - }; - const blur = () => { - vcCheckbox.value.blur(); - }; - expose({ - focus, - blur - }); - const handleChange = (event) => { - const targetChecked = event.target.checked; - emit("update:checked", targetChecked); - emit("update:value", targetChecked); - emit("change", event); - formItemContext.onFieldChange(); - }; - const onChange = (e3) => { - emit("change", e3); - if (radioGroupContext && radioGroupContext.onChange) { - radioGroupContext.onChange(e3); - } - }; - return () => { - var _a2; - const radioGroup = radioGroupContext; - const { - prefixCls: customizePrefixCls, - id = formItemContext.id.value - } = props4, restProps = __rest21(props4, ["prefixCls", "id"]); - const rProps = _extends(_extends({ - prefixCls: prefixCls.value, - id - }, omit_default(restProps, ["onUpdate:checked", "onUpdate:value"])), { - disabled: (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : contextDisabled.value - }); - if (radioGroup) { - rProps.name = radioGroup.name.value; - rProps.onChange = onChange; - rProps.checked = props4.value === radioGroup.value.value; - rProps.disabled = mergedDisabled.value || radioGroup.disabled.value; - } else { - rProps.onChange = handleChange; - } - const wrapperClassString = classNames_default({ - [`${prefixCls.value}-wrapper`]: true, - [`${prefixCls.value}-wrapper-checked`]: rProps.checked, - [`${prefixCls.value}-wrapper-disabled`]: rProps.disabled, - [`${prefixCls.value}-wrapper-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-wrapper-in-form-item`]: formItemInputContext.isFormItemInput - }, attrs.class, hashId.value); - return wrapSSR(createVNode("label", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": wrapperClassString - }), [createVNode(Checkbox_default, _objectSpread2(_objectSpread2({}, rProps), {}, { - "type": "radio", - "ref": vcCheckbox - }), null), slots.default && createVNode("span", null, [slots.default()])])); - }; - } -}); - -// node_modules/ant-design-vue/es/radio/Group.js -var radioGroupProps = () => ({ - prefixCls: String, - value: vue_types_default.any, - size: stringType(), - options: arrayType(), - disabled: booleanType(), - name: String, - buttonStyle: stringType("outline"), - id: String, - optionType: stringType("default"), - onChange: functionType(), - "onUpdate:value": functionType() -}); -var Group_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARadioGroup", - inheritAttrs: false, - props: radioGroupProps(), - // emits: ['update:value', 'change'], - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const formItemContext = useInjectFormItemContext(); - const { - prefixCls, - direction, - size: size2 - } = useConfigInject_default("radio", props4); - const [wrapSSR, hashId] = style_default16(prefixCls); - const stateValue = ref(props4.value); - const updatingValue = ref(false); - watch(() => props4.value, (val) => { - stateValue.value = val; - updatingValue.value = false; - }); - const onRadioChange = (ev) => { - const lastValue = stateValue.value; - const { - value - } = ev.target; - if (!("value" in props4)) { - stateValue.value = value; - } - if (!updatingValue.value && value !== lastValue) { - updatingValue.value = true; - emit("update:value", value); - emit("change", ev); - formItemContext.onFieldChange(); - } - nextTick(() => { - updatingValue.value = false; - }); - }; - useProvideRadioGroupContext({ - onChange: onRadioChange, - value: stateValue, - disabled: computed(() => props4.disabled), - name: computed(() => props4.name), - optionType: computed(() => props4.optionType) - }); - return () => { - var _a2; - const { - options, - buttonStyle, - id = formItemContext.id.value - } = props4; - const groupPrefixCls = `${prefixCls.value}-group`; - const classString = classNames_default(groupPrefixCls, `${groupPrefixCls}-${buttonStyle}`, { - [`${groupPrefixCls}-${size2.value}`]: size2.value, - [`${groupPrefixCls}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - let children = null; - if (options && options.length > 0) { - children = options.map((option) => { - if (typeof option === "string" || typeof option === "number") { - return createVNode(Radio_default, { - "key": option, - "prefixCls": prefixCls.value, - "disabled": props4.disabled, - "value": option, - "checked": stateValue.value === option - }, { - default: () => [option] - }); - } - const { - value, - disabled, - label - } = option; - return createVNode(Radio_default, { - "key": `radio-group-value-options-${value}`, - "prefixCls": prefixCls.value, - "disabled": disabled || props4.disabled, - "value": value, - "checked": stateValue.value === value - }, { - default: () => [label] - }); - }); - } else { - children = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classString, - "id": id - }), [children])); - }; - } -}); - -// node_modules/ant-design-vue/es/radio/RadioButton.js -var RadioButton_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARadioButton", - inheritAttrs: false, - props: radioProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls - } = useConfigInject_default("radio", props4); - useProvideRadioOptionTypeContext("button"); - return () => { - var _a2; - return createVNode(Radio_default, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), props4), {}, { - "prefixCls": prefixCls.value - }), { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/radio/index.js -Radio_default.Group = Group_default2; -Radio_default.Button = RadioButton_default; -Radio_default.install = function(app) { - app.component(Radio_default.name, Radio_default); - app.component(Radio_default.Group.name, Radio_default.Group); - app.component(Radio_default.Button.name, Radio_default.Button); - return app; -}; -var radio_default = Radio_default; - -// node_modules/ant-design-vue/es/calendar/Header.js -var YearSelectOffset = 10; -var YearSelectTotal = 20; -function YearSelect(props4) { - const { - fullscreen, - validRange, - generateConfig: generateConfig2, - locale: locale4, - prefixCls, - value, - onChange, - divRef - } = props4; - const year = generateConfig2.getYear(value || generateConfig2.getNow()); - let start = year - YearSelectOffset; - let end = start + YearSelectTotal; - if (validRange) { - start = generateConfig2.getYear(validRange[0]); - end = generateConfig2.getYear(validRange[1]) + 1; - } - const suffix = locale4 && locale4.year === "年" ? "年" : ""; - const options = []; - for (let index3 = start; index3 < end; index3++) { - options.push({ - label: `${index3}${suffix}`, - value: index3 - }); - } - return createVNode(select_default, { - "size": fullscreen ? void 0 : "small", - "options": options, - "value": year, - "class": `${prefixCls}-year-select`, - "onChange": (numYear) => { - let newDate = generateConfig2.setYear(value, numYear); - if (validRange) { - const [startDate, endDate] = validRange; - const newYear = generateConfig2.getYear(newDate); - const newMonth = generateConfig2.getMonth(newDate); - if (newYear === generateConfig2.getYear(endDate) && newMonth > generateConfig2.getMonth(endDate)) { - newDate = generateConfig2.setMonth(newDate, generateConfig2.getMonth(endDate)); - } - if (newYear === generateConfig2.getYear(startDate) && newMonth < generateConfig2.getMonth(startDate)) { - newDate = generateConfig2.setMonth(newDate, generateConfig2.getMonth(startDate)); - } - } - onChange(newDate); - }, - "getPopupContainer": () => divRef.value - }, null); -} -YearSelect.inheritAttrs = false; -function MonthSelect(props4) { - const { - prefixCls, - fullscreen, - validRange, - value, - generateConfig: generateConfig2, - locale: locale4, - onChange, - divRef - } = props4; - const month = generateConfig2.getMonth(value || generateConfig2.getNow()); - let start = 0; - let end = 11; - if (validRange) { - const [rangeStart, rangeEnd] = validRange; - const currentYear = generateConfig2.getYear(value); - if (generateConfig2.getYear(rangeEnd) === currentYear) { - end = generateConfig2.getMonth(rangeEnd); - } - if (generateConfig2.getYear(rangeStart) === currentYear) { - start = generateConfig2.getMonth(rangeStart); - } - } - const months = locale4.shortMonths || generateConfig2.locale.getShortMonths(locale4.locale); - const options = []; - for (let index3 = start; index3 <= end; index3 += 1) { - options.push({ - label: months[index3], - value: index3 - }); - } - return createVNode(select_default, { - "size": fullscreen ? void 0 : "small", - "class": `${prefixCls}-month-select`, - "value": month, - "options": options, - "onChange": (newMonth) => { - onChange(generateConfig2.setMonth(value, newMonth)); - }, - "getPopupContainer": () => divRef.value - }, null); -} -MonthSelect.inheritAttrs = false; -function ModeSwitch(props4) { - const { - prefixCls, - locale: locale4, - mode, - fullscreen, - onModeChange - } = props4; - return createVNode(Group_default2, { - "onChange": (_ref) => { - let { - target: { - value - } - } = _ref; - onModeChange(value); - }, - "value": mode, - "size": fullscreen ? void 0 : "small", - "class": `${prefixCls}-mode-switch` - }, { - default: () => [createVNode(RadioButton_default, { - "value": "month" - }, { - default: () => [locale4.month] - }), createVNode(RadioButton_default, { - "value": "year" - }, { - default: () => [locale4.year] - })] - }); -} -ModeSwitch.inheritAttrs = false; -var Header_default2 = defineComponent({ - name: "CalendarHeader", - inheritAttrs: false, - props: ["mode", "prefixCls", "value", "validRange", "generateConfig", "locale", "mode", "fullscreen"], - setup(_props, _ref2) { - let { - attrs - } = _ref2; - const divRef = ref(null); - const formItemInputContext = FormItemInputContext.useInject(); - FormItemInputContext.useProvide(formItemInputContext, { - isFormItemInput: false - }); - return () => { - const props4 = _extends(_extends({}, _props), attrs); - const { - prefixCls, - fullscreen, - mode, - onChange, - onModeChange - } = props4; - const sharedProps = _extends(_extends({}, props4), { - fullscreen, - divRef - }); - return createVNode("div", { - "class": `${prefixCls}-header`, - "ref": divRef - }, [createVNode(YearSelect, _objectSpread2(_objectSpread2({}, sharedProps), {}, { - "onChange": (v2) => { - onChange(v2, "year"); - } - }), null), mode === "month" && createVNode(MonthSelect, _objectSpread2(_objectSpread2({}, sharedProps), {}, { - "onChange": (v2) => { - onChange(v2, "month"); - } - }), null), createVNode(ModeSwitch, _objectSpread2(_objectSpread2({}, sharedProps), {}, { - "onModeChange": onModeChange - }), null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/input/style/index.js -var genPlaceholderStyle = (color) => ({ - // Firefox - "&::-moz-placeholder": { - opacity: 1 - }, - "&::placeholder": { - color, - userSelect: "none" - // https://github.com/ant-design/ant-design/pull/32639 - }, - "&:placeholder-shown": { - textOverflow: "ellipsis" - } -}); -var genHoverStyle = (token2) => ({ - borderColor: token2.inputBorderHoverColor, - borderInlineEndWidth: token2.lineWidth -}); -var genActiveStyle = (token2) => ({ - borderColor: token2.inputBorderHoverColor, - boxShadow: `0 0 0 ${token2.controlOutlineWidth}px ${token2.controlOutline}`, - borderInlineEndWidth: token2.lineWidth, - outline: 0 -}); -var genDisabledStyle2 = (token2) => ({ - color: token2.colorTextDisabled, - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - boxShadow: "none", - cursor: "not-allowed", - opacity: 1, - "&:hover": _extends({}, genHoverStyle(merge(token2, { - inputBorderHoverColor: token2.colorBorder - }))) -}); -var genInputLargeStyle = (token2) => { - const { - inputPaddingVerticalLG, - fontSizeLG, - lineHeightLG, - borderRadiusLG, - inputPaddingHorizontalLG - } = token2; - return { - padding: `${inputPaddingVerticalLG}px ${inputPaddingHorizontalLG}px`, - fontSize: fontSizeLG, - lineHeight: lineHeightLG, - borderRadius: borderRadiusLG - }; -}; -var genInputSmallStyle = (token2) => ({ - padding: `${token2.inputPaddingVerticalSM}px ${token2.controlPaddingHorizontalSM - 1}px`, - borderRadius: token2.borderRadiusSM -}); -var genStatusStyle3 = (token2, parentCls) => { - const { - componentCls, - colorError, - colorWarning, - colorErrorOutline, - colorWarningOutline, - colorErrorBorderHover, - colorWarningBorderHover - } = token2; - return { - [`&-status-error:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: { - borderColor: colorError, - "&:hover": { - borderColor: colorErrorBorderHover - }, - "&:focus, &-focused": _extends({}, genActiveStyle(merge(token2, { - inputBorderActiveColor: colorError, - inputBorderHoverColor: colorError, - controlOutline: colorErrorOutline - }))), - [`${componentCls}-prefix`]: { - color: colorError - } - }, - [`&-status-warning:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: { - borderColor: colorWarning, - "&:hover": { - borderColor: colorWarningBorderHover - }, - "&:focus, &-focused": _extends({}, genActiveStyle(merge(token2, { - inputBorderActiveColor: colorWarning, - inputBorderHoverColor: colorWarning, - controlOutline: colorWarningOutline - }))), - [`${componentCls}-prefix`]: { - color: colorWarning - } - } - }; -}; -var genBasicInputStyle = (token2) => _extends(_extends({ - position: "relative", - display: "inline-block", - width: "100%", - minWidth: 0, - padding: `${token2.inputPaddingVertical}px ${token2.inputPaddingHorizontal}px`, - color: token2.colorText, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - backgroundColor: token2.colorBgContainer, - backgroundImage: "none", - borderWidth: token2.lineWidth, - borderStyle: token2.lineType, - borderColor: token2.colorBorder, - borderRadius: token2.borderRadius, - transition: `all ${token2.motionDurationMid}` -}, genPlaceholderStyle(token2.colorTextPlaceholder)), { - "&:hover": _extends({}, genHoverStyle(token2)), - "&:focus, &-focused": _extends({}, genActiveStyle(token2)), - "&-disabled, &[disabled]": _extends({}, genDisabledStyle2(token2)), - "&-borderless": { - "&, &:hover, &:focus, &-focused, &-disabled, &[disabled]": { - backgroundColor: "transparent", - border: "none", - boxShadow: "none" - } - }, - // Reset height for `textarea`s - "textarea&": { - maxWidth: "100%", - height: "auto", - minHeight: token2.controlHeight, - lineHeight: token2.lineHeight, - verticalAlign: "bottom", - transition: `all ${token2.motionDurationSlow}, height 0s`, - resize: "vertical" - }, - // Size - "&-lg": _extends({}, genInputLargeStyle(token2)), - "&-sm": _extends({}, genInputSmallStyle(token2)), - // RTL - "&-rtl": { - direction: "rtl" - }, - "&-textarea-rtl": { - direction: "rtl" - } -}); -var genInputGroupStyle = (token2) => { - const { - componentCls, - antCls - } = token2; - return { - position: "relative", - display: "table", - width: "100%", - borderCollapse: "separate", - borderSpacing: 0, - // Undo padding and float of grid classes - [`&[class*='col-']`]: { - paddingInlineEnd: token2.paddingXS, - "&:last-child": { - paddingInlineEnd: 0 - } - }, - // Sizing options - [`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: _extends({}, genInputLargeStyle(token2)), - [`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: _extends({}, genInputSmallStyle(token2)), - [`> ${componentCls}`]: { - display: "table-cell", - "&:not(:first-child):not(:last-child)": { - borderRadius: 0 - } - }, - [`${componentCls}-group`]: { - [`&-addon, &-wrap`]: { - display: "table-cell", - width: 1, - whiteSpace: "nowrap", - verticalAlign: "middle", - "&:not(:first-child):not(:last-child)": { - borderRadius: 0 - } - }, - "&-wrap > *": { - display: "block !important" - }, - "&-addon": { - position: "relative", - padding: `0 ${token2.inputPaddingHorizontal}px`, - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize, - textAlign: "center", - backgroundColor: token2.colorFillAlter, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: token2.borderRadius, - transition: `all ${token2.motionDurationSlow}`, - lineHeight: 1, - // Reset Select's style in addon - [`${antCls}-select`]: { - margin: `-${token2.inputPaddingVertical + 1}px -${token2.inputPaddingHorizontal}px`, - [`&${antCls}-select-single:not(${antCls}-select-customize-input)`]: { - [`${antCls}-select-selector`]: { - backgroundColor: "inherit", - border: `${token2.lineWidth}px ${token2.lineType} transparent`, - boxShadow: "none" - } - }, - "&-open, &-focused": { - [`${antCls}-select-selector`]: { - color: token2.colorPrimary - } - } - }, - // https://github.com/ant-design/ant-design/issues/31333 - [`${antCls}-cascader-picker`]: { - margin: `-9px -${token2.inputPaddingHorizontal}px`, - backgroundColor: "transparent", - [`${antCls}-cascader-input`]: { - textAlign: "start", - border: 0, - boxShadow: "none" - } - } - }, - "&-addon:first-child": { - borderInlineEnd: 0 - }, - "&-addon:last-child": { - borderInlineStart: 0 - } - }, - [`${componentCls}`]: { - float: "inline-start", - width: "100%", - marginBottom: 0, - textAlign: "inherit", - "&:focus": { - zIndex: 1, - borderInlineEndWidth: 1 - }, - "&:hover": { - zIndex: 1, - borderInlineEndWidth: 1, - [`${componentCls}-search-with-button &`]: { - zIndex: 0 - } - } - }, - // Reset rounded corners - [`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: { - borderStartEndRadius: 0, - borderEndEndRadius: 0, - // Reset Select's style in addon - [`${antCls}-select ${antCls}-select-selector`]: { - borderStartEndRadius: 0, - borderEndEndRadius: 0 - } - }, - [`> ${componentCls}-affix-wrapper`]: { - [`&:not(:first-child) ${componentCls}`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0 - }, - [`&:not(:last-child) ${componentCls}`]: { - borderStartEndRadius: 0, - borderEndEndRadius: 0 - } - }, - [`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0, - // Reset Select's style in addon - [`${antCls}-select ${antCls}-select-selector`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0 - } - }, - [`${componentCls}-affix-wrapper`]: { - "&:not(:last-child)": { - borderStartEndRadius: 0, - borderEndEndRadius: 0, - [`${componentCls}-search &`]: { - borderStartStartRadius: token2.borderRadius, - borderEndStartRadius: token2.borderRadius - } - }, - [`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0 - } - }, - [`&${componentCls}-group-compact`]: _extends(_extends({ - display: "block" - }, clearFix()), { - [`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: { - "&:not(:first-child):not(:last-child)": { - borderInlineEndWidth: token2.lineWidth, - "&:hover": { - zIndex: 1 - }, - "&:focus": { - zIndex: 1 - } - } - }, - "& > *": { - display: "inline-block", - float: "none", - verticalAlign: "top", - borderRadius: 0 - }, - [`& > ${componentCls}-affix-wrapper`]: { - display: "inline-flex" - }, - [`& > ${antCls}-picker-range`]: { - display: "inline-flex" - }, - "& > *:not(:last-child)": { - marginInlineEnd: -token2.lineWidth, - borderInlineEndWidth: token2.lineWidth - }, - // Undo float for .ant-input-group .ant-input - [`${componentCls}`]: { - float: "none" - }, - // reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input - [`& > ${antCls}-select > ${antCls}-select-selector, - & > ${antCls}-select-auto-complete ${componentCls}, - & > ${antCls}-cascader-picker ${componentCls}, - & > ${componentCls}-group-wrapper ${componentCls}`]: { - borderInlineEndWidth: token2.lineWidth, - borderRadius: 0, - "&:hover": { - zIndex: 1 - }, - "&:focus": { - zIndex: 1 - } - }, - [`& > ${antCls}-select-focused`]: { - zIndex: 1 - }, - // update z-index for arrow icon - [`& > ${antCls}-select > ${antCls}-select-arrow`]: { - zIndex: 1 - // https://github.com/ant-design/ant-design/issues/20371 - }, - [`& > *:first-child, - & > ${antCls}-select:first-child > ${antCls}-select-selector, - & > ${antCls}-select-auto-complete:first-child ${componentCls}, - & > ${antCls}-cascader-picker:first-child ${componentCls}`]: { - borderStartStartRadius: token2.borderRadius, - borderEndStartRadius: token2.borderRadius - }, - [`& > *:last-child, - & > ${antCls}-select:last-child > ${antCls}-select-selector, - & > ${antCls}-cascader-picker:last-child ${componentCls}, - & > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: { - borderInlineEndWidth: token2.lineWidth, - borderStartEndRadius: token2.borderRadius, - borderEndEndRadius: token2.borderRadius - }, - // https://github.com/ant-design/ant-design/issues/12493 - [`& > ${antCls}-select-auto-complete ${componentCls}`]: { - verticalAlign: "top" - }, - [`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: { - marginInlineStart: -token2.lineWidth, - [`${componentCls}-affix-wrapper`]: { - borderRadius: 0 - } - }, - [`${componentCls}-group-wrapper:not(:last-child)`]: { - [`&${componentCls}-search > ${componentCls}-group`]: { - [`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: { - borderRadius: 0 - }, - [`& > ${componentCls}`]: { - borderStartStartRadius: token2.borderRadius, - borderStartEndRadius: 0, - borderEndEndRadius: 0, - borderEndStartRadius: token2.borderRadius - } - } - } - }), - [`&&-sm ${antCls}-btn`]: { - fontSize: token2.fontSizeSM, - height: token2.controlHeightSM, - lineHeight: "normal" - }, - [`&&-lg ${antCls}-btn`]: { - fontSize: token2.fontSizeLG, - height: token2.controlHeightLG, - lineHeight: "normal" - }, - // Fix https://github.com/ant-design/ant-design/issues/5754 - [`&&-lg ${antCls}-select-single ${antCls}-select-selector`]: { - height: `${token2.controlHeightLG}px`, - [`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: { - // -2 is for the border size & override default - lineHeight: `${token2.controlHeightLG - 2}px` - }, - [`${antCls}-select-selection-search-input`]: { - height: `${token2.controlHeightLG}px` - } - }, - [`&&-sm ${antCls}-select-single ${antCls}-select-selector`]: { - height: `${token2.controlHeightSM}px`, - [`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: { - // -2 is for the border size & override default - lineHeight: `${token2.controlHeightSM - 2}px` - }, - [`${antCls}-select-selection-search-input`]: { - height: `${token2.controlHeightSM}px` - } - } - }; -}; -var genInputStyle = (token2) => { - const { - componentCls, - controlHeightSM, - lineWidth - } = token2; - const FIXED_CHROME_COLOR_HEIGHT = 16; - const colorSmallPadding = (controlHeightSM - lineWidth * 2 - FIXED_CHROME_COLOR_HEIGHT) / 2; - return { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), genBasicInputStyle(token2)), genStatusStyle3(token2, componentCls)), { - '&[type="color"]': { - height: token2.controlHeight, - [`&${componentCls}-lg`]: { - height: token2.controlHeightLG - }, - [`&${componentCls}-sm`]: { - height: controlHeightSM, - paddingTop: colorSmallPadding, - paddingBottom: colorSmallPadding - } - } - }) - }; -}; -var genAllowClearStyle = (token2) => { - const { - componentCls - } = token2; - return { - // ========================= Input ========================= - [`${componentCls}-clear-icon`]: { - margin: 0, - color: token2.colorTextQuaternary, - fontSize: token2.fontSizeIcon, - verticalAlign: -1, - // https://github.com/ant-design/ant-design/pull/18151 - // https://codesandbox.io/s/wizardly-sun-u10br - cursor: "pointer", - transition: `color ${token2.motionDurationSlow}`, - "&:hover": { - color: token2.colorTextTertiary - }, - "&:active": { - color: token2.colorText - }, - "&-hidden": { - visibility: "hidden" - }, - "&-has-suffix": { - margin: `0 ${token2.inputAffixPadding}px` - } - }, - // ======================= TextArea ======================== - "&-textarea-with-clear-btn": { - padding: "0 !important", - border: "0 !important", - [`${componentCls}-clear-icon`]: { - position: "absolute", - insetBlockStart: token2.paddingXS, - insetInlineEnd: token2.paddingXS, - zIndex: 1 - } - } - }; -}; -var genAffixStyle = (token2) => { - const { - componentCls, - inputAffixPadding, - colorTextDescription, - motionDurationSlow, - colorIcon, - colorIconHover, - iconCls - } = token2; - return { - [`${componentCls}-affix-wrapper`]: _extends(_extends(_extends(_extends(_extends({}, genBasicInputStyle(token2)), { - display: "inline-flex", - [`&:not(${componentCls}-affix-wrapper-disabled):hover`]: _extends(_extends({}, genHoverStyle(token2)), { - zIndex: 1, - [`${componentCls}-search-with-button &`]: { - zIndex: 0 - } - }), - "&-focused, &:focus": { - zIndex: 1 - }, - "&-disabled": { - [`${componentCls}[disabled]`]: { - background: "transparent" - } - }, - [`> input${componentCls}`]: { - padding: 0, - fontSize: "inherit", - border: "none", - borderRadius: 0, - outline: "none", - "&:focus": { - boxShadow: "none !important" - } - }, - "&::before": { - width: 0, - visibility: "hidden", - content: '"\\a0"' - }, - [`${componentCls}`]: { - "&-prefix, &-suffix": { - display: "flex", - flex: "none", - alignItems: "center", - "> *:not(:last-child)": { - marginInlineEnd: token2.paddingXS - } - }, - "&-show-count-suffix": { - color: colorTextDescription - }, - "&-show-count-has-suffix": { - marginInlineEnd: token2.paddingXXS - }, - "&-prefix": { - marginInlineEnd: inputAffixPadding - }, - "&-suffix": { - marginInlineStart: inputAffixPadding - } - } - }), genAllowClearStyle(token2)), { - // password - [`${iconCls}${componentCls}-password-icon`]: { - color: colorIcon, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - "&:hover": { - color: colorIconHover - } - } - }), genStatusStyle3(token2, `${componentCls}-affix-wrapper`)) - }; -}; -var genGroupStyle3 = (token2) => { - const { - componentCls, - colorError, - colorSuccess, - borderRadiusLG, - borderRadiusSM - } = token2; - return { - [`${componentCls}-group`]: _extends(_extends(_extends({}, resetComponent(token2)), genInputGroupStyle(token2)), { - "&-rtl": { - direction: "rtl" - }, - "&-wrapper": { - display: "inline-block", - width: "100%", - textAlign: "start", - verticalAlign: "top", - "&-rtl": { - direction: "rtl" - }, - // Size - "&-lg": { - [`${componentCls}-group-addon`]: { - borderRadius: borderRadiusLG - } - }, - "&-sm": { - [`${componentCls}-group-addon`]: { - borderRadius: borderRadiusSM - } - }, - // Status - "&-status-error": { - [`${componentCls}-group-addon`]: { - color: colorError, - borderColor: colorError - } - }, - "&-status-warning": { - [`${componentCls}-group-addon:last-child`]: { - color: colorSuccess, - borderColor: colorSuccess - } - } - } - }) - }; -}; -var genSearchInputStyle = (token2) => { - const { - componentCls, - antCls - } = token2; - const searchPrefixCls = `${componentCls}-search`; - return { - [searchPrefixCls]: { - [`${componentCls}`]: { - "&:hover, &:focus": { - borderColor: token2.colorPrimaryHover, - [`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: { - borderInlineStartColor: token2.colorPrimaryHover - } - } - }, - [`${componentCls}-affix-wrapper`]: { - borderRadius: 0 - }, - // fix slight height diff in Firefox: - // https://ant.design/components/auto-complete-cn/#components-auto-complete-demo-certain-category - [`${componentCls}-lg`]: { - lineHeight: token2.lineHeightLG - 2e-4 - }, - [`> ${componentCls}-group`]: { - [`> ${componentCls}-group-addon:last-child`]: { - insetInlineStart: -1, - padding: 0, - border: 0, - [`${searchPrefixCls}-button`]: { - paddingTop: 0, - paddingBottom: 0, - borderStartStartRadius: 0, - borderStartEndRadius: token2.borderRadius, - borderEndEndRadius: token2.borderRadius, - borderEndStartRadius: 0 - }, - [`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: { - color: token2.colorTextDescription, - "&:hover": { - color: token2.colorPrimaryHover - }, - "&:active": { - color: token2.colorPrimaryActive - }, - [`&${antCls}-btn-loading::before`]: { - insetInlineStart: 0, - insetInlineEnd: 0, - insetBlockStart: 0, - insetBlockEnd: 0 - } - } - } - }, - [`${searchPrefixCls}-button`]: { - height: token2.controlHeight, - "&:hover, &:focus": { - zIndex: 1 - } - }, - [`&-large ${searchPrefixCls}-button`]: { - height: token2.controlHeightLG - }, - [`&-small ${searchPrefixCls}-button`]: { - height: token2.controlHeightSM - }, - "&-rtl": { - direction: "rtl" - }, - // ===================== Compact Item Customized Styles ===================== - [`&${componentCls}-compact-item`]: { - [`&:not(${componentCls}-compact-last-item)`]: { - [`${componentCls}-group-addon`]: { - [`${componentCls}-search-button`]: { - marginInlineEnd: -token2.lineWidth, - borderRadius: 0 - } - } - }, - [`&:not(${componentCls}-compact-first-item)`]: { - [`${componentCls},${componentCls}-affix-wrapper`]: { - borderRadius: 0 - } - }, - [`> ${componentCls}-group-addon ${componentCls}-search-button, - > ${componentCls}, - ${componentCls}-affix-wrapper`]: { - "&:hover,&:focus,&:active": { - zIndex: 2 - } - }, - [`> ${componentCls}-affix-wrapper-focused`]: { - zIndex: 2 - } - } - } - }; -}; -function initInputToken(token2) { - return merge(token2, { - inputAffixPadding: token2.paddingXXS, - inputPaddingVertical: Math.max(Math.round((token2.controlHeight - token2.fontSize * token2.lineHeight) / 2 * 10) / 10 - token2.lineWidth, 3), - inputPaddingVerticalLG: Math.ceil((token2.controlHeightLG - token2.fontSizeLG * token2.lineHeightLG) / 2 * 10) / 10 - token2.lineWidth, - inputPaddingVerticalSM: Math.max(Math.round((token2.controlHeightSM - token2.fontSize * token2.lineHeight) / 2 * 10) / 10 - token2.lineWidth, 0), - inputPaddingHorizontal: token2.paddingSM - token2.lineWidth, - inputPaddingHorizontalSM: token2.paddingXS - token2.lineWidth, - inputPaddingHorizontalLG: token2.controlPaddingHorizontal - token2.lineWidth, - inputBorderHoverColor: token2.colorPrimaryHover, - inputBorderActiveColor: token2.colorPrimaryHover - }); -} -var genTextAreaStyle = (token2) => { - const { - componentCls, - inputPaddingHorizontal, - paddingLG - } = token2; - const textareaPrefixCls = `${componentCls}-textarea`; - return { - [textareaPrefixCls]: { - position: "relative", - [`${textareaPrefixCls}-suffix`]: { - position: "absolute", - top: 0, - insetInlineEnd: inputPaddingHorizontal, - bottom: 0, - zIndex: 1, - display: "inline-flex", - alignItems: "center", - margin: "auto" - }, - [`&-status-error, - &-status-warning, - &-status-success, - &-status-validating`]: { - [`&${textareaPrefixCls}-has-feedback`]: { - [`${componentCls}`]: { - paddingInlineEnd: paddingLG - } - } - }, - "&-show-count": { - // https://github.com/ant-design/ant-design/issues/33049 - [`> ${componentCls}`]: { - height: "100%" - }, - "&::after": { - color: token2.colorTextDescription, - whiteSpace: "nowrap", - content: "attr(data-count)", - pointerEvents: "none", - float: "right" - } - }, - "&-rtl": { - "&::after": { - float: "left" - } - } - } - }; -}; -var style_default17 = genComponentStyleHook("Input", (token2) => { - const inputToken = initInputToken(token2); - return [ - genInputStyle(inputToken), - genTextAreaStyle(inputToken), - genAffixStyle(inputToken), - genGroupStyle3(inputToken), - genSearchInputStyle(inputToken), - // ===================================================== - // == Space Compact == - // ===================================================== - genCompactItemStyle(inputToken) - ]; -}); - -// node_modules/ant-design-vue/es/date-picker/style/index.js -var genPikerPadding = (token2, inputHeight, fontSize, paddingHorizontal) => { - const { - lineHeight - } = token2; - const fontHeight = Math.floor(fontSize * lineHeight) + 2; - const paddingTop = Math.max((inputHeight - fontHeight) / 2, 0); - const paddingBottom = Math.max(inputHeight - fontHeight - paddingTop, 0); - return { - padding: `${paddingTop}px ${paddingHorizontal}px ${paddingBottom}px` - }; -}; -var genPickerCellInnerStyle = (token2) => { - const { - componentCls, - pickerCellCls, - pickerCellInnerCls, - pickerPanelCellHeight, - motionDurationSlow, - borderRadiusSM, - motionDurationMid, - controlItemBgHover, - lineWidth, - lineType, - colorPrimary, - controlItemBgActive, - colorTextLightSolid, - controlHeightSM, - pickerDateHoverRangeBorderColor, - pickerCellBorderGap, - pickerBasicCellHoverWithRangeColor, - pickerPanelCellWidth, - colorTextDisabled, - colorBgContainerDisabled - } = token2; - return { - "&::before": { - position: "absolute", - top: "50%", - insetInlineStart: 0, - insetInlineEnd: 0, - zIndex: 1, - height: pickerPanelCellHeight, - transform: "translateY(-50%)", - transition: `all ${motionDurationSlow}`, - content: '""' - }, - // >>> Default - [pickerCellInnerCls]: { - position: "relative", - zIndex: 2, - display: "inline-block", - minWidth: pickerPanelCellHeight, - height: pickerPanelCellHeight, - lineHeight: `${pickerPanelCellHeight}px`, - borderRadius: borderRadiusSM, - transition: `background ${motionDurationMid}, border ${motionDurationMid}` - }, - // >>> Hover - [`&:hover:not(${pickerCellCls}-in-view), - &:hover:not(${pickerCellCls}-selected):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end):not(${pickerCellCls}-range-hover-start):not(${pickerCellCls}-range-hover-end)`]: { - [pickerCellInnerCls]: { - background: controlItemBgHover - } - }, - // >>> Today - [`&-in-view${pickerCellCls}-today ${pickerCellInnerCls}`]: { - "&::before": { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - zIndex: 1, - border: `${lineWidth}px ${lineType} ${colorPrimary}`, - borderRadius: borderRadiusSM, - content: '""' - } - }, - // >>> In Range - [`&-in-view${pickerCellCls}-in-range`]: { - position: "relative", - "&::before": { - background: controlItemBgActive - } - }, - // >>> Selected - [`&-in-view${pickerCellCls}-selected ${pickerCellInnerCls}, - &-in-view${pickerCellCls}-range-start ${pickerCellInnerCls}, - &-in-view${pickerCellCls}-range-end ${pickerCellInnerCls}`]: { - color: colorTextLightSolid, - background: colorPrimary - }, - [`&-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single), - &-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single)`]: { - "&::before": { - background: controlItemBgActive - } - }, - [`&-in-view${pickerCellCls}-range-start::before`]: { - insetInlineStart: "50%" - }, - [`&-in-view${pickerCellCls}-range-end::before`]: { - insetInlineEnd: "50%" - }, - // >>> Range Hover - [`&-in-view${pickerCellCls}-range-hover-start:not(${pickerCellCls}-in-range):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end), - &-in-view${pickerCellCls}-range-hover-end:not(${pickerCellCls}-in-range):not(${pickerCellCls}-range-start):not(${pickerCellCls}-range-end), - &-in-view${pickerCellCls}-range-hover-start${pickerCellCls}-range-start-single, - &-in-view${pickerCellCls}-range-hover-start${pickerCellCls}-range-start${pickerCellCls}-range-end${pickerCellCls}-range-end-near-hover, - &-in-view${pickerCellCls}-range-hover-end${pickerCellCls}-range-start${pickerCellCls}-range-end${pickerCellCls}-range-start-near-hover, - &-in-view${pickerCellCls}-range-hover-end${pickerCellCls}-range-end-single, - &-in-view${pickerCellCls}-range-hover:not(${pickerCellCls}-in-range)`]: { - "&::after": { - position: "absolute", - top: "50%", - zIndex: 0, - height: controlHeightSM, - borderTop: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderBottom: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - transform: "translateY(-50%)", - transition: `all ${motionDurationSlow}`, - content: '""' - } - }, - // Add space for stash - [`&-range-hover-start::after, - &-range-hover-end::after, - &-range-hover::after`]: { - insetInlineEnd: 0, - insetInlineStart: pickerCellBorderGap - }, - // Hover with in range - [`&-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover::before, - &-in-view${pickerCellCls}-range-start${pickerCellCls}-range-hover::before, - &-in-view${pickerCellCls}-range-end${pickerCellCls}-range-hover::before, - &-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single)${pickerCellCls}-range-hover-start::before, - &-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single)${pickerCellCls}-range-hover-end::before, - ${componentCls}-panel - > :not(${componentCls}-date-panel) - &-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover-start::before, - ${componentCls}-panel - > :not(${componentCls}-date-panel) - &-in-view${pickerCellCls}-in-range${pickerCellCls}-range-hover-end::before`]: { - background: pickerBasicCellHoverWithRangeColor - }, - // range start border-radius - [`&-in-view${pickerCellCls}-range-start:not(${pickerCellCls}-range-start-single):not(${pickerCellCls}-range-end) ${pickerCellInnerCls}`]: { - borderStartStartRadius: borderRadiusSM, - borderEndStartRadius: borderRadiusSM, - borderStartEndRadius: 0, - borderEndEndRadius: 0 - }, - // range end border-radius - [`&-in-view${pickerCellCls}-range-end:not(${pickerCellCls}-range-end-single):not(${pickerCellCls}-range-start) ${pickerCellInnerCls}`]: { - borderStartStartRadius: 0, - borderEndStartRadius: 0, - borderStartEndRadius: borderRadiusSM, - borderEndEndRadius: borderRadiusSM - }, - [`&-range-hover${pickerCellCls}-range-end::after`]: { - insetInlineStart: "50%" - }, - // Edge start - [`tr > &-in-view${pickerCellCls}-range-hover:first-child::after, - tr > &-in-view${pickerCellCls}-range-hover-end:first-child::after, - &-in-view${pickerCellCls}-start${pickerCellCls}-range-hover-edge-start${pickerCellCls}-range-hover-edge-start-near-range::after, - &-in-view${pickerCellCls}-range-hover-edge-start:not(${pickerCellCls}-range-hover-edge-start-near-range)::after, - &-in-view${pickerCellCls}-range-hover-start::after`]: { - insetInlineStart: (pickerPanelCellWidth - pickerPanelCellHeight) / 2, - borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartStartRadius: lineWidth, - borderEndStartRadius: lineWidth - }, - // Edge end - [`tr > &-in-view${pickerCellCls}-range-hover:last-child::after, - tr > &-in-view${pickerCellCls}-range-hover-start:last-child::after, - &-in-view${pickerCellCls}-end${pickerCellCls}-range-hover-edge-end${pickerCellCls}-range-hover-edge-end-near-range::after, - &-in-view${pickerCellCls}-range-hover-edge-end:not(${pickerCellCls}-range-hover-edge-end-near-range)::after, - &-in-view${pickerCellCls}-range-hover-end::after`]: { - insetInlineEnd: (pickerPanelCellWidth - pickerPanelCellHeight) / 2, - borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartEndRadius: lineWidth, - borderEndEndRadius: lineWidth - }, - // >>> Disabled - "&-disabled": { - color: colorTextDisabled, - pointerEvents: "none", - [pickerCellInnerCls]: { - background: "transparent" - }, - "&::before": { - background: colorBgContainerDisabled - } - }, - [`&-disabled${pickerCellCls}-today ${pickerCellInnerCls}::before`]: { - borderColor: colorTextDisabled - } - }; -}; -var genPanelStyle = (token2) => { - const { - componentCls, - pickerCellInnerCls, - pickerYearMonthCellWidth, - pickerControlIconSize, - pickerPanelCellWidth, - paddingSM, - paddingXS, - paddingXXS, - colorBgContainer, - lineWidth, - lineType, - borderRadiusLG, - colorPrimary, - colorTextHeading, - colorSplit, - pickerControlIconBorderWidth, - colorIcon, - pickerTextHeight, - motionDurationMid, - colorIconHover, - fontWeightStrong, - pickerPanelCellHeight, - pickerCellPaddingVertical, - colorTextDisabled, - colorText, - fontSize, - pickerBasicCellHoverWithRangeColor, - motionDurationSlow, - pickerPanelWithoutTimeCellHeight, - pickerQuarterPanelContentHeight, - colorLink, - colorLinkActive, - colorLinkHover, - pickerDateHoverRangeBorderColor, - borderRadiusSM, - colorTextLightSolid, - borderRadius, - controlItemBgHover, - pickerTimePanelColumnHeight, - pickerTimePanelColumnWidth, - pickerTimePanelCellHeight, - controlItemBgActive, - marginXXS - } = token2; - const pickerPanelWidth = pickerPanelCellWidth * 7 + paddingSM * 2 + 4; - const hoverCellFixedDistance = (pickerPanelWidth - paddingXS * 2) / 3 - pickerYearMonthCellWidth - paddingSM; - return { - [componentCls]: { - "&-panel": { - display: "inline-flex", - flexDirection: "column", - textAlign: "center", - background: colorBgContainer, - border: `${lineWidth}px ${lineType} ${colorSplit}`, - borderRadius: borderRadiusLG, - outline: "none", - "&-focused": { - borderColor: colorPrimary - }, - "&-rtl": { - direction: "rtl", - [`${componentCls}-prev-icon, - ${componentCls}-super-prev-icon`]: { - transform: "rotate(45deg)" - }, - [`${componentCls}-next-icon, - ${componentCls}-super-next-icon`]: { - transform: "rotate(-135deg)" - } - } - }, - // ======================================================== - // = Shared Panel = - // ======================================================== - [`&-decade-panel, - &-year-panel, - &-quarter-panel, - &-month-panel, - &-week-panel, - &-date-panel, - &-time-panel`]: { - display: "flex", - flexDirection: "column", - width: pickerPanelWidth - }, - // ======================= Header ======================= - "&-header": { - display: "flex", - padding: `0 ${paddingXS}px`, - color: colorTextHeading, - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`, - "> *": { - flex: "none" - }, - button: { - padding: 0, - color: colorIcon, - lineHeight: `${pickerTextHeight}px`, - background: "transparent", - border: 0, - cursor: "pointer", - transition: `color ${motionDurationMid}` - }, - "> button": { - minWidth: "1.6em", - fontSize, - "&:hover": { - color: colorIconHover - } - }, - "&-view": { - flex: "auto", - fontWeight: fontWeightStrong, - lineHeight: `${pickerTextHeight}px`, - button: { - color: "inherit", - fontWeight: "inherit", - verticalAlign: "top", - "&:not(:first-child)": { - marginInlineStart: paddingXS - }, - "&:hover": { - color: colorPrimary - } - } - } - }, - // Arrow button - [`&-prev-icon, - &-next-icon, - &-super-prev-icon, - &-super-next-icon`]: { - position: "relative", - display: "inline-block", - width: pickerControlIconSize, - height: pickerControlIconSize, - "&::before": { - position: "absolute", - top: 0, - insetInlineStart: 0, - display: "inline-block", - width: pickerControlIconSize, - height: pickerControlIconSize, - border: `0 solid currentcolor`, - borderBlockStartWidth: pickerControlIconBorderWidth, - borderBlockEndWidth: 0, - borderInlineStartWidth: pickerControlIconBorderWidth, - borderInlineEndWidth: 0, - content: '""' - } - }, - [`&-super-prev-icon, - &-super-next-icon`]: { - "&::after": { - position: "absolute", - top: Math.ceil(pickerControlIconSize / 2), - insetInlineStart: Math.ceil(pickerControlIconSize / 2), - display: "inline-block", - width: pickerControlIconSize, - height: pickerControlIconSize, - border: "0 solid currentcolor", - borderBlockStartWidth: pickerControlIconBorderWidth, - borderBlockEndWidth: 0, - borderInlineStartWidth: pickerControlIconBorderWidth, - borderInlineEndWidth: 0, - content: '""' - } - }, - [`&-prev-icon, - &-super-prev-icon`]: { - transform: "rotate(-45deg)" - }, - [`&-next-icon, - &-super-next-icon`]: { - transform: "rotate(135deg)" - }, - // ======================== Body ======================== - "&-content": { - width: "100%", - tableLayout: "fixed", - borderCollapse: "collapse", - "th, td": { - position: "relative", - minWidth: pickerPanelCellHeight, - fontWeight: "normal" - }, - th: { - height: pickerPanelCellHeight + pickerCellPaddingVertical * 2, - color: colorText, - verticalAlign: "middle" - } - }, - "&-cell": _extends({ - padding: `${pickerCellPaddingVertical}px 0`, - color: colorTextDisabled, - cursor: "pointer", - // In view - "&-in-view": { - color: colorText - } - }, genPickerCellInnerStyle(token2)), - // DatePanel only - [`&-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-start ${pickerCellInnerCls}, - &-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-end ${pickerCellInnerCls}`]: { - "&::after": { - position: "absolute", - top: 0, - bottom: 0, - zIndex: -1, - background: pickerBasicCellHoverWithRangeColor, - transition: `all ${motionDurationSlow}`, - content: '""' - } - }, - [`&-date-panel - ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-start - ${pickerCellInnerCls}::after`]: { - insetInlineEnd: -(pickerPanelCellWidth - pickerPanelCellHeight) / 2, - insetInlineStart: 0 - }, - [`&-date-panel ${componentCls}-cell-in-view${componentCls}-cell-in-range${componentCls}-cell-range-hover-end ${pickerCellInnerCls}::after`]: { - insetInlineEnd: 0, - insetInlineStart: -(pickerPanelCellWidth - pickerPanelCellHeight) / 2 - }, - // Hover with range start & end - [`&-range-hover${componentCls}-range-start::after`]: { - insetInlineEnd: "50%" - }, - [`&-decade-panel, - &-year-panel, - &-quarter-panel, - &-month-panel`]: { - [`${componentCls}-content`]: { - height: pickerPanelWithoutTimeCellHeight * 4 - }, - [pickerCellInnerCls]: { - padding: `0 ${paddingXS}px` - } - }, - "&-quarter-panel": { - [`${componentCls}-content`]: { - height: pickerQuarterPanelContentHeight - } - }, - // ======================== Footer ======================== - [`&-panel ${componentCls}-footer`]: { - borderTop: `${lineWidth}px ${lineType} ${colorSplit}` - }, - "&-footer": { - width: "min-content", - minWidth: "100%", - lineHeight: `${pickerTextHeight - 2 * lineWidth}px`, - textAlign: "center", - "&-extra": { - padding: `0 ${paddingSM}`, - lineHeight: `${pickerTextHeight - 2 * lineWidth}px`, - textAlign: "start", - "&:not(:last-child)": { - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}` - } - } - }, - "&-now": { - textAlign: "start" - }, - "&-today-btn": { - color: colorLink, - "&:hover": { - color: colorLinkHover - }, - "&:active": { - color: colorLinkActive - }, - [`&${componentCls}-today-btn-disabled`]: { - color: colorTextDisabled, - cursor: "not-allowed" - } - }, - // ======================================================== - // = Special = - // ======================================================== - // ===================== Decade Panel ===================== - "&-decade-panel": { - [pickerCellInnerCls]: { - padding: `0 ${paddingXS / 2}px` - }, - [`${componentCls}-cell::before`]: { - display: "none" - } - }, - // ============= Year & Quarter & Month Panel ============= - [`&-year-panel, - &-quarter-panel, - &-month-panel`]: { - [`${componentCls}-body`]: { - padding: `0 ${paddingXS}px` - }, - [pickerCellInnerCls]: { - width: pickerYearMonthCellWidth - }, - [`${componentCls}-cell-range-hover-start::after`]: { - insetInlineStart: hoverCellFixedDistance, - borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartStartRadius: borderRadiusSM, - borderBottomStartRadius: borderRadiusSM, - borderStartEndRadius: 0, - borderBottomEndRadius: 0, - [`${componentCls}-panel-rtl &`]: { - insetInlineEnd: hoverCellFixedDistance, - borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartStartRadius: 0, - borderBottomStartRadius: 0, - borderStartEndRadius: borderRadiusSM, - borderBottomEndRadius: borderRadiusSM - } - }, - [`${componentCls}-cell-range-hover-end::after`]: { - insetInlineEnd: hoverCellFixedDistance, - borderInlineEnd: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartStartRadius: 0, - borderEndStartRadius: 0, - borderStartEndRadius: borderRadius, - borderEndEndRadius: borderRadius, - [`${componentCls}-panel-rtl &`]: { - insetInlineStart: hoverCellFixedDistance, - borderInlineStart: `${lineWidth}px dashed ${pickerDateHoverRangeBorderColor}`, - borderStartStartRadius: borderRadius, - borderEndStartRadius: borderRadius, - borderStartEndRadius: 0, - borderEndEndRadius: 0 - } - } - }, - // ====================== Week Panel ====================== - "&-week-panel": { - [`${componentCls}-body`]: { - padding: `${paddingXS}px ${paddingSM}px` - }, - // Clear cell style - [`${componentCls}-cell`]: { - [`&:hover ${pickerCellInnerCls}, - &-selected ${pickerCellInnerCls}, - ${pickerCellInnerCls}`]: { - background: "transparent !important" - } - }, - "&-row": { - td: { - transition: `background ${motionDurationMid}`, - "&:first-child": { - borderStartStartRadius: borderRadiusSM, - borderEndStartRadius: borderRadiusSM - }, - "&:last-child": { - borderStartEndRadius: borderRadiusSM, - borderEndEndRadius: borderRadiusSM - } - }, - "&:hover td": { - background: controlItemBgHover - }, - [`&-selected td, - &-selected:hover td`]: { - background: colorPrimary, - [`&${componentCls}-cell-week`]: { - color: new TinyColor(colorTextLightSolid).setAlpha(0.5).toHexString() - }, - [`&${componentCls}-cell-today ${pickerCellInnerCls}::before`]: { - borderColor: colorTextLightSolid - }, - [pickerCellInnerCls]: { - color: colorTextLightSolid - } - } - } - }, - // ====================== Date Panel ====================== - "&-date-panel": { - [`${componentCls}-body`]: { - padding: `${paddingXS}px ${paddingSM}px` - }, - [`${componentCls}-content`]: { - width: pickerPanelCellWidth * 7, - th: { - width: pickerPanelCellWidth - } - } - }, - // ==================== Datetime Panel ==================== - "&-datetime-panel": { - display: "flex", - [`${componentCls}-time-panel`]: { - borderInlineStart: `${lineWidth}px ${lineType} ${colorSplit}` - }, - [`${componentCls}-date-panel, - ${componentCls}-time-panel`]: { - transition: `opacity ${motionDurationSlow}` - }, - // Keyboard - "&-active": { - [`${componentCls}-date-panel, - ${componentCls}-time-panel`]: { - opacity: 0.3, - "&-active": { - opacity: 1 - } - } - } - }, - // ====================== Time Panel ====================== - "&-time-panel": { - width: "auto", - minWidth: "auto", - direction: "ltr", - [`${componentCls}-content`]: { - display: "flex", - flex: "auto", - height: pickerTimePanelColumnHeight - }, - "&-column": { - flex: "1 0 auto", - width: pickerTimePanelColumnWidth, - margin: `${paddingXXS}px 0`, - padding: 0, - overflowY: "hidden", - textAlign: "start", - listStyle: "none", - transition: `background ${motionDurationMid}`, - overflowX: "hidden", - "&::after": { - display: "block", - height: pickerTimePanelColumnHeight - pickerTimePanelCellHeight, - content: '""' - }, - "&:not(:first-child)": { - borderInlineStart: `${lineWidth}px ${lineType} ${colorSplit}` - }, - "&-active": { - background: new TinyColor(controlItemBgActive).setAlpha(0.2).toHexString() - }, - "&:hover": { - overflowY: "auto" - }, - "> li": { - margin: 0, - padding: 0, - [`&${componentCls}-time-panel-cell`]: { - marginInline: marginXXS, - [`${componentCls}-time-panel-cell-inner`]: { - display: "block", - width: pickerTimePanelColumnWidth - 2 * marginXXS, - height: pickerTimePanelCellHeight, - margin: 0, - paddingBlock: 0, - paddingInlineEnd: 0, - paddingInlineStart: (pickerTimePanelColumnWidth - pickerTimePanelCellHeight) / 2, - color: colorText, - lineHeight: `${pickerTimePanelCellHeight}px`, - borderRadius: borderRadiusSM, - cursor: "pointer", - transition: `background ${motionDurationMid}`, - "&:hover": { - background: controlItemBgHover - } - }, - "&-selected": { - [`${componentCls}-time-panel-cell-inner`]: { - background: controlItemBgActive - } - }, - "&-disabled": { - [`${componentCls}-time-panel-cell-inner`]: { - color: colorTextDisabled, - background: "transparent", - cursor: "not-allowed" - } - } - } - } - } - }, - // https://github.com/ant-design/ant-design/issues/39227 - [`&-datetime-panel ${componentCls}-time-panel-column:after`]: { - height: pickerTimePanelColumnHeight - pickerTimePanelCellHeight + paddingXXS * 2 - } - } - }; -}; -var genPickerStatusStyle = (token2) => { - const { - componentCls, - colorBgContainer, - colorError, - colorErrorOutline, - colorWarning, - colorWarningOutline - } = token2; - return { - [componentCls]: { - [`&-status-error${componentCls}`]: { - "&, &:not([disabled]):hover": { - backgroundColor: colorBgContainer, - borderColor: colorError - }, - "&-focused, &:focus": _extends({}, genActiveStyle(merge(token2, { - inputBorderActiveColor: colorError, - inputBorderHoverColor: colorError, - controlOutline: colorErrorOutline - }))), - [`${componentCls}-active-bar`]: { - background: colorError - } - }, - [`&-status-warning${componentCls}`]: { - "&, &:not([disabled]):hover": { - backgroundColor: colorBgContainer, - borderColor: colorWarning - }, - "&-focused, &:focus": _extends({}, genActiveStyle(merge(token2, { - inputBorderActiveColor: colorWarning, - inputBorderHoverColor: colorWarning, - controlOutline: colorWarningOutline - }))), - [`${componentCls}-active-bar`]: { - background: colorWarning - } - } - } - }; -}; -var genPickerStyle = (token2) => { - const { - componentCls, - antCls, - boxShadowPopoverArrow, - controlHeight, - fontSize, - inputPaddingHorizontal, - colorBgContainer, - lineWidth, - lineType, - colorBorder, - borderRadius, - motionDurationMid, - colorBgContainerDisabled, - colorTextDisabled, - colorTextPlaceholder, - controlHeightLG, - fontSizeLG, - controlHeightSM, - inputPaddingHorizontalSM, - paddingXS, - marginXS, - colorTextDescription, - lineWidthBold, - lineHeight, - colorPrimary, - motionDurationSlow, - zIndexPopup, - paddingXXS, - paddingSM, - pickerTextHeight, - controlItemBgActive, - colorPrimaryBorder, - sizePopupArrow, - borderRadiusXS, - borderRadiusOuter, - colorBgElevated, - borderRadiusLG, - boxShadowSecondary, - borderRadiusSM, - colorSplit, - controlItemBgHover, - presetsWidth, - presetsMaxWidth - } = token2; - return [ - { - [componentCls]: _extends(_extends(_extends({}, resetComponent(token2)), genPikerPadding(token2, controlHeight, fontSize, inputPaddingHorizontal)), { - position: "relative", - display: "inline-flex", - alignItems: "center", - background: colorBgContainer, - lineHeight: 1, - border: `${lineWidth}px ${lineType} ${colorBorder}`, - borderRadius, - transition: `border ${motionDurationMid}, box-shadow ${motionDurationMid}`, - "&:hover, &-focused": _extends({}, genHoverStyle(token2)), - "&-focused": _extends({}, genActiveStyle(token2)), - [`&${componentCls}-disabled`]: { - background: colorBgContainerDisabled, - borderColor: colorBorder, - cursor: "not-allowed", - [`${componentCls}-suffix`]: { - color: colorTextDisabled - } - }, - [`&${componentCls}-borderless`]: { - backgroundColor: "transparent !important", - borderColor: "transparent !important", - boxShadow: "none !important" - }, - // ======================== Input ========================= - [`${componentCls}-input`]: { - position: "relative", - display: "inline-flex", - alignItems: "center", - width: "100%", - "> input": _extends(_extends({}, genBasicInputStyle(token2)), { - flex: "auto", - // Fix Firefox flex not correct: - // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553 - minWidth: 1, - height: "auto", - padding: 0, - background: "transparent", - border: 0, - "&:focus": { - boxShadow: "none" - }, - "&[disabled]": { - background: "transparent" - } - }), - "&:hover": { - [`${componentCls}-clear`]: { - opacity: 1 - } - }, - "&-placeholder": { - "> input": { - color: colorTextPlaceholder - } - } - }, - // Size - "&-large": _extends(_extends({}, genPikerPadding(token2, controlHeightLG, fontSizeLG, inputPaddingHorizontal)), { - [`${componentCls}-input > input`]: { - fontSize: fontSizeLG - } - }), - "&-small": _extends({}, genPikerPadding(token2, controlHeightSM, fontSize, inputPaddingHorizontalSM)), - [`${componentCls}-suffix`]: { - display: "flex", - flex: "none", - alignSelf: "center", - marginInlineStart: paddingXS / 2, - color: colorTextDisabled, - lineHeight: 1, - pointerEvents: "none", - "> *": { - verticalAlign: "top", - "&:not(:last-child)": { - marginInlineEnd: marginXS - } - } - }, - [`${componentCls}-clear`]: { - position: "absolute", - top: "50%", - insetInlineEnd: 0, - color: colorTextDisabled, - lineHeight: 1, - background: colorBgContainer, - transform: "translateY(-50%)", - cursor: "pointer", - opacity: 0, - transition: `opacity ${motionDurationMid}, color ${motionDurationMid}`, - "> *": { - verticalAlign: "top" - }, - "&:hover": { - color: colorTextDescription - } - }, - [`${componentCls}-separator`]: { - position: "relative", - display: "inline-block", - width: "1em", - height: fontSizeLG, - color: colorTextDisabled, - fontSize: fontSizeLG, - verticalAlign: "top", - cursor: "default", - [`${componentCls}-focused &`]: { - color: colorTextDescription - }, - [`${componentCls}-range-separator &`]: { - [`${componentCls}-disabled &`]: { - cursor: "not-allowed" - } - } - }, - // ======================== Range ========================= - "&-range": { - position: "relative", - display: "inline-flex", - // Clear - [`${componentCls}-clear`]: { - insetInlineEnd: inputPaddingHorizontal - }, - "&:hover": { - [`${componentCls}-clear`]: { - opacity: 1 - } - }, - // Active bar - [`${componentCls}-active-bar`]: { - bottom: -lineWidth, - height: lineWidthBold, - marginInlineStart: inputPaddingHorizontal, - background: colorPrimary, - opacity: 0, - transition: `all ${motionDurationSlow} ease-out`, - pointerEvents: "none" - }, - [`&${componentCls}-focused`]: { - [`${componentCls}-active-bar`]: { - opacity: 1 - } - }, - [`${componentCls}-range-separator`]: { - alignItems: "center", - padding: `0 ${paddingXS}px`, - lineHeight: 1 - }, - [`&${componentCls}-small`]: { - [`${componentCls}-clear`]: { - insetInlineEnd: inputPaddingHorizontalSM - }, - [`${componentCls}-active-bar`]: { - marginInlineStart: inputPaddingHorizontalSM - } - } - }, - // ======================= Dropdown ======================= - "&-dropdown": _extends(_extends(_extends({}, resetComponent(token2)), genPanelStyle(token2)), { - position: "absolute", - // Fix incorrect position of picker popup - // https://github.com/ant-design/ant-design/issues/35590 - top: -9999, - left: { - _skip_check_: true, - value: -9999 - }, - zIndex: zIndexPopup, - [`&${componentCls}-dropdown-hidden`]: { - display: "none" - }, - [`&${componentCls}-dropdown-placement-bottomLeft`]: { - [`${componentCls}-range-arrow`]: { - top: 0, - display: "block", - transform: "translateY(-100%)" - } - }, - [`&${componentCls}-dropdown-placement-topLeft`]: { - [`${componentCls}-range-arrow`]: { - bottom: 0, - display: "block", - transform: "translateY(100%) rotate(180deg)" - } - }, - [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topLeft, - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-topRight, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topLeft, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-topRight`]: { - animationName: slideDownIn - }, - [`&${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomLeft, - &${antCls}-slide-up-enter${antCls}-slide-up-enter-active${componentCls}-dropdown-placement-bottomRight, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomLeft, - &${antCls}-slide-up-appear${antCls}-slide-up-appear-active${componentCls}-dropdown-placement-bottomRight`]: { - animationName: slideUpIn - }, - [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topLeft, - &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-topRight`]: { - animationName: slideDownOut - }, - [`&${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomLeft, - &${antCls}-slide-up-leave${antCls}-slide-up-leave-active${componentCls}-dropdown-placement-bottomRight`]: { - animationName: slideUpOut - }, - // Time picker with additional style - [`${componentCls}-panel > ${componentCls}-time-panel`]: { - paddingTop: paddingXXS - }, - // ======================== Ranges ======================== - [`${componentCls}-ranges`]: { - marginBottom: 0, - padding: `${paddingXXS}px ${paddingSM}px`, - overflow: "hidden", - lineHeight: `${pickerTextHeight - 2 * lineWidth - paddingXS / 2}px`, - textAlign: "start", - listStyle: "none", - display: "flex", - justifyContent: "space-between", - "> li": { - display: "inline-block" - }, - // https://github.com/ant-design/ant-design/issues/23687 - [`${componentCls}-preset > ${antCls}-tag-blue`]: { - color: colorPrimary, - background: controlItemBgActive, - borderColor: colorPrimaryBorder, - cursor: "pointer" - }, - [`${componentCls}-ok`]: { - marginInlineStart: "auto" - } - }, - [`${componentCls}-range-wrapper`]: { - display: "flex", - position: "relative" - }, - [`${componentCls}-range-arrow`]: _extends({ - position: "absolute", - zIndex: 1, - display: "none", - marginInlineStart: inputPaddingHorizontal * 1.5, - transition: `left ${motionDurationSlow} ease-out` - }, roundedArrow(sizePopupArrow, borderRadiusXS, borderRadiusOuter, colorBgElevated, boxShadowPopoverArrow)), - [`${componentCls}-panel-container`]: { - overflow: "hidden", - verticalAlign: "top", - background: colorBgElevated, - borderRadius: borderRadiusLG, - boxShadow: boxShadowSecondary, - transition: `margin ${motionDurationSlow}`, - // ======================== Layout ======================== - [`${componentCls}-panel-layout`]: { - display: "flex", - flexWrap: "nowrap", - alignItems: "stretch" - }, - // ======================== Preset ======================== - [`${componentCls}-presets`]: { - display: "flex", - flexDirection: "column", - minWidth: presetsWidth, - maxWidth: presetsMaxWidth, - ul: { - height: 0, - flex: "auto", - listStyle: "none", - overflow: "auto", - margin: 0, - padding: paddingXS, - borderInlineEnd: `${lineWidth}px ${lineType} ${colorSplit}`, - li: _extends(_extends({}, textEllipsis), { - borderRadius: borderRadiusSM, - paddingInline: paddingXS, - paddingBlock: (controlHeightSM - Math.round(fontSize * lineHeight)) / 2, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - "+ li": { - marginTop: marginXS - }, - "&:hover": { - background: controlItemBgHover - } - }) - } - }, - // ======================== Panels ======================== - [`${componentCls}-panels`]: { - display: "inline-flex", - flexWrap: "nowrap", - direction: "ltr", - [`${componentCls}-panel`]: { - borderWidth: `0 0 ${lineWidth}px` - }, - "&:last-child": { - [`${componentCls}-panel`]: { - borderWidth: 0 - } - } - }, - [`${componentCls}-panel`]: { - verticalAlign: "top", - background: "transparent", - borderRadius: 0, - borderWidth: 0, - [`${componentCls}-content, - table`]: { - textAlign: "center" - }, - "&-focused": { - borderColor: colorBorder - } - } - } - }), - "&-dropdown-range": { - padding: `${sizePopupArrow * 2 / 3}px 0`, - "&-hidden": { - display: "none" - } - }, - "&-rtl": { - direction: "rtl", - [`${componentCls}-separator`]: { - transform: "rotate(180deg)" - }, - [`${componentCls}-footer`]: { - "&-extra": { - direction: "rtl" - } - } - } - }) - }, - // Follow code may reuse in other components - initSlideMotion(token2, "slide-up"), - initSlideMotion(token2, "slide-down"), - initMoveMotion(token2, "move-up"), - initMoveMotion(token2, "move-down") - ]; -}; -var initPickerPanelToken = (token2) => { - const pickerTimePanelCellHeight = 28; - const { - componentCls, - controlHeightLG, - controlHeightSM, - colorPrimary, - paddingXXS - } = token2; - return { - pickerCellCls: `${componentCls}-cell`, - pickerCellInnerCls: `${componentCls}-cell-inner`, - pickerTextHeight: controlHeightLG, - pickerPanelCellWidth: controlHeightSM * 1.5, - pickerPanelCellHeight: controlHeightSM, - pickerDateHoverRangeBorderColor: new TinyColor(colorPrimary).lighten(20).toHexString(), - pickerBasicCellHoverWithRangeColor: new TinyColor(colorPrimary).lighten(35).toHexString(), - pickerPanelWithoutTimeCellHeight: controlHeightLG * 1.65, - pickerYearMonthCellWidth: controlHeightLG * 1.5, - pickerTimePanelColumnHeight: pickerTimePanelCellHeight * 8, - pickerTimePanelColumnWidth: controlHeightLG * 1.4, - pickerTimePanelCellHeight, - pickerQuarterPanelContentHeight: controlHeightLG * 1.4, - pickerCellPaddingVertical: paddingXXS, - pickerCellBorderGap: 2, - pickerControlIconSize: 7, - pickerControlIconBorderWidth: 1.5 - }; -}; -var style_default18 = genComponentStyleHook("DatePicker", (token2) => { - const pickerToken = merge(initInputToken(token2), initPickerPanelToken(token2)); - return [ - genPickerStyle(pickerToken), - genPickerStatusStyle(pickerToken), - // ===================================================== - // == Space Compact == - // ===================================================== - genCompactItemStyle(token2, { - focusElCls: `${token2.componentCls}-focused` - }) - ]; -}, (token2) => ({ - presetsWidth: 120, - presetsMaxWidth: 200, - zIndexPopup: token2.zIndexPopupBase + 50 -})); - -// node_modules/ant-design-vue/es/calendar/style/index.js -var genCalendarStyles = (token2) => { - const { - calendarCls, - componentCls, - calendarFullBg, - calendarFullPanelBg, - calendarItemActiveBg - } = token2; - return { - [calendarCls]: _extends(_extends(_extends({}, genPanelStyle(token2)), resetComponent(token2)), { - background: calendarFullBg, - "&-rtl": { - direction: "rtl" - }, - [`${calendarCls}-header`]: { - display: "flex", - justifyContent: "flex-end", - padding: `${token2.paddingSM}px 0`, - [`${calendarCls}-year-select`]: { - minWidth: token2.yearControlWidth - }, - [`${calendarCls}-month-select`]: { - minWidth: token2.monthControlWidth, - marginInlineStart: token2.marginXS - }, - [`${calendarCls}-mode-switch`]: { - marginInlineStart: token2.marginXS - } - } - }), - [`${calendarCls} ${componentCls}-panel`]: { - background: calendarFullPanelBg, - border: 0, - borderTop: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - borderRadius: 0, - [`${componentCls}-month-panel, ${componentCls}-date-panel`]: { - width: "auto" - }, - [`${componentCls}-body`]: { - padding: `${token2.paddingXS}px 0` - }, - [`${componentCls}-content`]: { - width: "100%" - } - }, - [`${calendarCls}-mini`]: { - borderRadius: token2.borderRadiusLG, - [`${calendarCls}-header`]: { - paddingInlineEnd: token2.paddingXS, - paddingInlineStart: token2.paddingXS - }, - [`${componentCls}-panel`]: { - borderRadius: `0 0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px` - }, - [`${componentCls}-content`]: { - height: token2.miniContentHeight, - th: { - height: "auto", - padding: 0, - lineHeight: `${token2.weekHeight}px` - } - }, - [`${componentCls}-cell::before`]: { - pointerEvents: "none" - } - }, - [`${calendarCls}${calendarCls}-full`]: { - [`${componentCls}-panel`]: { - display: "block", - width: "100%", - textAlign: "end", - background: calendarFullBg, - border: 0, - [`${componentCls}-body`]: { - "th, td": { - padding: 0 - }, - th: { - height: "auto", - paddingInlineEnd: token2.paddingSM, - paddingBottom: token2.paddingXXS, - lineHeight: `${token2.weekHeight}px` - } - } - }, - [`${componentCls}-cell`]: { - "&::before": { - display: "none" - }, - "&:hover": { - [`${calendarCls}-date`]: { - background: token2.controlItemBgHover - } - }, - [`${calendarCls}-date-today::before`]: { - display: "none" - }, - // >>> Selected - [`&-in-view${componentCls}-cell-selected`]: { - [`${calendarCls}-date, ${calendarCls}-date-today`]: { - background: calendarItemActiveBg - } - }, - "&-selected, &-selected:hover": { - [`${calendarCls}-date, ${calendarCls}-date-today`]: { - [`${calendarCls}-date-value`]: { - color: token2.colorPrimary - } - } - } - }, - [`${calendarCls}-date`]: { - display: "block", - width: "auto", - height: "auto", - margin: `0 ${token2.marginXS / 2}px`, - padding: `${token2.paddingXS / 2}px ${token2.paddingXS}px 0`, - border: 0, - borderTop: `${token2.lineWidthBold}px ${token2.lineType} ${token2.colorSplit}`, - borderRadius: 0, - transition: `background ${token2.motionDurationSlow}`, - "&-value": { - lineHeight: `${token2.dateValueHeight}px`, - transition: `color ${token2.motionDurationSlow}` - }, - "&-content": { - position: "static", - width: "auto", - height: token2.dateContentHeight, - overflowY: "auto", - color: token2.colorText, - lineHeight: token2.lineHeight, - textAlign: "start" - }, - "&-today": { - borderColor: token2.colorPrimary, - [`${calendarCls}-date-value`]: { - color: token2.colorText - } - } - } - }, - [`@media only screen and (max-width: ${token2.screenXS}px) `]: { - [`${calendarCls}`]: { - [`${calendarCls}-header`]: { - display: "block", - [`${calendarCls}-year-select`]: { - width: "50%" - }, - [`${calendarCls}-month-select`]: { - width: `calc(50% - ${token2.paddingXS}px)` - }, - [`${calendarCls}-mode-switch`]: { - width: "100%", - marginTop: token2.marginXS, - marginInlineStart: 0, - "> label": { - width: "50%", - textAlign: "center" - } - } - } - } - } - }; -}; -var style_default19 = genComponentStyleHook("Calendar", (token2) => { - const calendarCls = `${token2.componentCls}-calendar`; - const calendarToken = merge(initInputToken(token2), initPickerPanelToken(token2), { - calendarCls, - pickerCellInnerCls: `${token2.componentCls}-cell-inner`, - calendarFullBg: token2.colorBgContainer, - calendarFullPanelBg: token2.colorBgContainer, - calendarItemActiveBg: token2.controlItemBgActive, - dateValueHeight: token2.controlHeightSM, - weekHeight: token2.controlHeightSM * 0.75, - dateContentHeight: (token2.fontSizeSM * token2.lineHeightSM + token2.marginXS) * 3 + token2.lineWidth * 2 - }); - return [genCalendarStyles(calendarToken)]; -}, { - yearControlWidth: 80, - monthControlWidth: 70, - miniContentHeight: 256 -}); - -// node_modules/ant-design-vue/es/calendar/generateCalendar.js -function generateCalendar(generateConfig2) { - function isSameYear2(date1, date22) { - return date1 && date22 && generateConfig2.getYear(date1) === generateConfig2.getYear(date22); - } - function isSameMonth2(date1, date22) { - return isSameYear2(date1, date22) && generateConfig2.getMonth(date1) === generateConfig2.getMonth(date22); - } - function isSameDate2(date1, date22) { - return isSameMonth2(date1, date22) && generateConfig2.getDate(date1) === generateConfig2.getDate(date22); - } - const Calendar2 = defineComponent({ - name: "ACalendar", - inheritAttrs: false, - props: { - prefixCls: String, - locale: { - type: Object, - default: void 0 - }, - validRange: { - type: Array, - default: void 0 - }, - disabledDate: { - type: Function, - default: void 0 - }, - dateFullCellRender: { - type: Function, - default: void 0 - }, - dateCellRender: { - type: Function, - default: void 0 - }, - monthFullCellRender: { - type: Function, - default: void 0 - }, - monthCellRender: { - type: Function, - default: void 0 - }, - headerRender: { - type: Function, - default: void 0 - }, - value: { - type: [Object, String], - default: void 0 - }, - defaultValue: { - type: [Object, String], - default: void 0 - }, - mode: { - type: String, - default: void 0 - }, - fullscreen: { - type: Boolean, - default: void 0 - }, - onChange: { - type: Function, - default: void 0 - }, - "onUpdate:value": { - type: Function, - default: void 0 - }, - onPanelChange: { - type: Function, - default: void 0 - }, - onSelect: { - type: Function, - default: void 0 - }, - valueFormat: { - type: String, - default: void 0 - } - }, - slots: Object, - setup(p, _ref) { - let { - emit, - slots, - attrs - } = _ref; - const props4 = p; - const { - prefixCls, - direction - } = useConfigInject_default("picker", props4); - const [wrapSSR, hashId] = style_default19(prefixCls); - const calendarPrefixCls = computed(() => `${prefixCls.value}-calendar`); - const maybeToString = (date4) => { - return props4.valueFormat ? generateConfig2.toString(date4, props4.valueFormat) : date4; - }; - const value = computed(() => { - if (props4.value) { - return props4.valueFormat ? generateConfig2.toDate(props4.value, props4.valueFormat) : props4.value; - } - return props4.value === "" ? void 0 : props4.value; - }); - const defaultValue = computed(() => { - if (props4.defaultValue) { - return props4.valueFormat ? generateConfig2.toDate(props4.defaultValue, props4.valueFormat) : props4.defaultValue; - } - return props4.defaultValue === "" ? void 0 : props4.defaultValue; - }); - const [mergedValue, setMergedValue] = useMergedState(() => value.value || generateConfig2.getNow(), { - defaultValue: defaultValue.value, - value - }); - const [mergedMode, setMergedMode] = useMergedState("month", { - value: toRef(props4, "mode") - }); - const panelMode = computed(() => mergedMode.value === "year" ? "month" : "date"); - const mergedDisabledDate = computed(() => { - return (date4) => { - var _a2; - const notInRange = props4.validRange ? generateConfig2.isAfter(props4.validRange[0], date4) || generateConfig2.isAfter(date4, props4.validRange[1]) : false; - return notInRange || !!((_a2 = props4.disabledDate) === null || _a2 === void 0 ? void 0 : _a2.call(props4, date4)); - }; - }); - const triggerPanelChange = (date4, newMode) => { - emit("panelChange", maybeToString(date4), newMode); - }; - const triggerChange = (date4) => { - setMergedValue(date4); - if (!isSameDate2(date4, mergedValue.value)) { - if (panelMode.value === "date" && !isSameMonth2(date4, mergedValue.value) || panelMode.value === "month" && !isSameYear2(date4, mergedValue.value)) { - triggerPanelChange(date4, mergedMode.value); - } - const val = maybeToString(date4); - emit("update:value", val); - emit("change", val); - } - }; - const triggerModeChange = (newMode) => { - setMergedMode(newMode); - triggerPanelChange(mergedValue.value, newMode); - }; - const onInternalSelect = (date4, source) => { - triggerChange(date4); - emit("select", maybeToString(date4), { - source - }); - }; - const defaultLocale = computed(() => { - const { - locale: locale4 - } = props4; - const result2 = _extends(_extends({}, en_US_default5), locale4); - result2.lang = _extends(_extends({}, result2.lang), (locale4 || {}).lang); - return result2; - }); - const [mergedLocale] = useLocaleReceiver("Calendar", defaultLocale); - return () => { - const today = generateConfig2.getNow(); - const { - dateFullCellRender = slots === null || slots === void 0 ? void 0 : slots.dateFullCellRender, - dateCellRender = slots === null || slots === void 0 ? void 0 : slots.dateCellRender, - monthFullCellRender = slots === null || slots === void 0 ? void 0 : slots.monthFullCellRender, - monthCellRender = slots === null || slots === void 0 ? void 0 : slots.monthCellRender, - headerRender = slots === null || slots === void 0 ? void 0 : slots.headerRender, - fullscreen = true, - validRange - } = props4; - const dateRender = (_ref2) => { - let { - current: date4 - } = _ref2; - if (dateFullCellRender) { - return dateFullCellRender({ - current: date4 - }); - } - return createVNode("div", { - "class": classNames_default(`${prefixCls.value}-cell-inner`, `${calendarPrefixCls.value}-date`, { - [`${calendarPrefixCls.value}-date-today`]: isSameDate2(today, date4) - }) - }, [createVNode("div", { - "class": `${calendarPrefixCls.value}-date-value` - }, [String(generateConfig2.getDate(date4)).padStart(2, "0")]), createVNode("div", { - "class": `${calendarPrefixCls.value}-date-content` - }, [dateCellRender && dateCellRender({ - current: date4 - })])]); - }; - const monthRender = (_ref3, locale4) => { - let { - current: date4 - } = _ref3; - if (monthFullCellRender) { - return monthFullCellRender({ - current: date4 - }); - } - const months = locale4.shortMonths || generateConfig2.locale.getShortMonths(locale4.locale); - return createVNode("div", { - "class": classNames_default(`${prefixCls.value}-cell-inner`, `${calendarPrefixCls.value}-date`, { - [`${calendarPrefixCls.value}-date-today`]: isSameMonth2(today, date4) - }) - }, [createVNode("div", { - "class": `${calendarPrefixCls.value}-date-value` - }, [months[generateConfig2.getMonth(date4)]]), createVNode("div", { - "class": `${calendarPrefixCls.value}-date-content` - }, [monthCellRender && monthCellRender({ - current: date4 - })])]); - }; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(calendarPrefixCls.value, { - [`${calendarPrefixCls.value}-full`]: fullscreen, - [`${calendarPrefixCls.value}-mini`]: !fullscreen, - [`${calendarPrefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value) - }), [headerRender ? headerRender({ - value: mergedValue.value, - type: mergedMode.value, - onChange: (nextDate) => { - onInternalSelect(nextDate, "customize"); - }, - onTypeChange: triggerModeChange - }) : createVNode(Header_default2, { - "prefixCls": calendarPrefixCls.value, - "value": mergedValue.value, - "generateConfig": generateConfig2, - "mode": mergedMode.value, - "fullscreen": fullscreen, - "locale": mergedLocale.value.lang, - "validRange": validRange, - "onChange": onInternalSelect, - "onModeChange": triggerModeChange - }, null), createVNode(PickerPanel_default, { - "value": mergedValue.value, - "prefixCls": prefixCls.value, - "locale": mergedLocale.value.lang, - "generateConfig": generateConfig2, - "dateRender": dateRender, - "monthCellRender": (obj) => monthRender(obj, mergedLocale.value.lang), - "onSelect": (nextDate) => { - onInternalSelect(nextDate, panelMode.value); - }, - "mode": panelMode.value, - "picker": panelMode.value, - "disabledDate": mergedDisabledDate.value, - "hideHeader": true - }, null)])); - }; - } - }); - Calendar2.install = function(app) { - app.component(Calendar2.name, Calendar2); - return app; - }; - return Calendar2; -} -var generateCalendar_default = generateCalendar; - -// node_modules/ant-design-vue/es/calendar/dayjs.js -var Calendar = generateCalendar_default(dayjs_default); -var dayjs_default2 = withInstall(Calendar); - -// node_modules/ant-design-vue/es/calendar/index.js -var calendar_default = dayjs_default2; - -// node_modules/ant-design-vue/es/tabs/src/hooks/useRaf.js -function useRaf(callback) { - const rafRef = shallowRef(); - const removedRef = shallowRef(false); - function trigger2() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - if (!removedRef.value) { - wrapperRaf.cancel(rafRef.value); - rafRef.value = wrapperRaf(() => { - callback(...args); - }); - } - } - onBeforeUnmount(() => { - removedRef.value = true; - wrapperRaf.cancel(rafRef.value); - }); - return trigger2; -} -function useRafState(defaultState) { - const batchRef = shallowRef([]); - const state = shallowRef(typeof defaultState === "function" ? defaultState() : defaultState); - const flushUpdate = useRaf(() => { - let value = state.value; - batchRef.value.forEach((callback) => { - value = callback(value); - }); - batchRef.value = []; - state.value = value; - }); - function updater(callback) { - batchRef.value.push(callback); - flushUpdate(); - } - return [state, updater]; -} - -// node_modules/ant-design-vue/es/tabs/src/TabNavList/TabNode.js -var TabNode_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TabNode", - props: { - id: { - type: String - }, - prefixCls: { - type: String - }, - tab: { - type: Object - }, - active: { - type: Boolean - }, - closable: { - type: Boolean - }, - editable: { - type: Object - }, - onClick: { - type: Function - }, - onResize: { - type: Function - }, - renderWrapper: { - type: Function - }, - removeAriaLabel: { - type: String - }, - // onRemove: { type: Function as PropType<() => void> }, - onFocus: { - type: Function - } - }, - emits: ["click", "resize", "remove", "focus"], - setup(props4, _ref) { - let { - expose, - attrs - } = _ref; - const domRef = ref(); - function onInternalClick(e3) { - var _a2; - if ((_a2 = props4.tab) === null || _a2 === void 0 ? void 0 : _a2.disabled) { - return; - } - props4.onClick(e3); - } - expose({ - domRef - }); - function onRemoveTab(event) { - var _a2; - event.preventDefault(); - event.stopPropagation(); - props4.editable.onEdit("remove", { - key: (_a2 = props4.tab) === null || _a2 === void 0 ? void 0 : _a2.key, - event - }); - } - const removable = computed(() => { - var _a2; - return props4.editable && props4.closable !== false && !((_a2 = props4.tab) === null || _a2 === void 0 ? void 0 : _a2.disabled); - }); - return () => { - var _a2; - const { - prefixCls, - id, - active, - tab: { - key: key2, - tab, - disabled, - closeIcon - }, - renderWrapper, - removeAriaLabel, - editable, - onFocus - } = props4; - const tabPrefix = `${prefixCls}-tab`; - const node2 = createVNode("div", { - "key": key2, - "ref": domRef, - "class": classNames_default(tabPrefix, { - [`${tabPrefix}-with-remove`]: removable.value, - [`${tabPrefix}-active`]: active, - [`${tabPrefix}-disabled`]: disabled - }), - "style": attrs.style, - "onClick": onInternalClick - }, [createVNode("div", { - "role": "tab", - "aria-selected": active, - "id": id && `${id}-tab-${key2}`, - "class": `${tabPrefix}-btn`, - "aria-controls": id && `${id}-panel-${key2}`, - "aria-disabled": disabled, - "tabindex": disabled ? null : 0, - "onClick": (e3) => { - e3.stopPropagation(); - onInternalClick(e3); - }, - "onKeydown": (e3) => { - if ([KeyCode_default.SPACE, KeyCode_default.ENTER].includes(e3.which)) { - e3.preventDefault(); - onInternalClick(e3); - } - }, - "onFocus": onFocus - }, [typeof tab === "function" ? tab() : tab]), removable.value && createVNode("button", { - "type": "button", - "aria-label": removeAriaLabel || "remove", - "tabindex": 0, - "class": `${tabPrefix}-remove`, - "onClick": (e3) => { - e3.stopPropagation(); - onRemoveTab(e3); - } - }, [(closeIcon === null || closeIcon === void 0 ? void 0 : closeIcon()) || ((_a2 = editable.removeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(editable)) || "×"])]); - return renderWrapper ? renderWrapper(node2) : node2; - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/hooks/useOffsets.js -var DEFAULT_SIZE = { - width: 0, - height: 0, - left: 0, - top: 0 -}; -function useOffsets(tabs, tabSizes) { - const offsetMap = ref(/* @__PURE__ */ new Map()); - watchEffect(() => { - var _a2, _b; - const map2 = /* @__PURE__ */ new Map(); - const tabsValue = tabs.value; - const lastOffset = tabSizes.value.get((_a2 = tabsValue[0]) === null || _a2 === void 0 ? void 0 : _a2.key) || DEFAULT_SIZE; - const rightOffset = lastOffset.left + lastOffset.width; - for (let i3 = 0; i3 < tabsValue.length; i3 += 1) { - const { - key: key2 - } = tabsValue[i3]; - let data = tabSizes.value.get(key2); - if (!data) { - data = tabSizes.value.get((_b = tabsValue[i3 - 1]) === null || _b === void 0 ? void 0 : _b.key) || DEFAULT_SIZE; - } - const entity = map2.get(key2) || _extends({}, data); - entity.right = rightOffset - entity.left - entity.width; - map2.set(key2, entity); - } - offsetMap.value = new Map(map2); - }); - return offsetMap; -} - -// node_modules/ant-design-vue/es/tabs/src/TabNavList/AddButton.js -var AddButton_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AddButton", - inheritAttrs: false, - props: { - prefixCls: String, - editable: { - type: Object - }, - locale: { - type: Object, - default: void 0 - } - }, - setup(props4, _ref) { - let { - expose, - attrs - } = _ref; - const domRef = ref(); - expose({ - domRef - }); - return () => { - const { - prefixCls, - editable, - locale: locale4 - } = props4; - if (!editable || editable.showAdd === false) { - return null; - } - return createVNode("button", { - "ref": domRef, - "type": "button", - "class": `${prefixCls}-nav-add`, - "style": attrs.style, - "aria-label": (locale4 === null || locale4 === void 0 ? void 0 : locale4.addAriaLabel) || "Add tab", - "onClick": (event) => { - editable.onEdit("add", { - event - }); - } - }, [editable.addIcon ? editable.addIcon() : "+"]); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/TabNavList/OperationNode.js -var operationNodeProps = { - prefixCls: { - type: String - }, - id: { - type: String - }, - tabs: { - type: Object - }, - rtl: { - type: Boolean - }, - tabBarGutter: { - type: Number - }, - activeKey: { - type: [String, Number] - }, - mobile: { - type: Boolean - }, - moreIcon: vue_types_default.any, - moreTransitionName: { - type: String - }, - editable: { - type: Object - }, - locale: { - type: Object, - default: void 0 - }, - removeAriaLabel: String, - onTabClick: { - type: Function - }, - popupClassName: String, - getPopupContainer: functionType() -}; -var OperationNode_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "OperationNode", - inheritAttrs: false, - props: operationNodeProps, - emits: ["tabClick"], - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const [open2, setOpen] = useState(false); - const [selectedKey, setSelectedKey] = useState(null); - const selectOffset = (offset4) => { - const enabledTabs = props4.tabs.filter((tab) => !tab.disabled); - let selectedIndex = enabledTabs.findIndex((tab) => tab.key === selectedKey.value) || 0; - const len = enabledTabs.length; - for (let i3 = 0; i3 < len; i3 += 1) { - selectedIndex = (selectedIndex + offset4 + len) % len; - const tab = enabledTabs[selectedIndex]; - if (!tab.disabled) { - setSelectedKey(tab.key); - return; - } - } - }; - const onKeyDown2 = (e3) => { - const { - which - } = e3; - if (!open2.value) { - if ([KeyCode_default.DOWN, KeyCode_default.SPACE, KeyCode_default.ENTER].includes(which)) { - setOpen(true); - e3.preventDefault(); - } - return; - } - switch (which) { - case KeyCode_default.UP: - selectOffset(-1); - e3.preventDefault(); - break; - case KeyCode_default.DOWN: - selectOffset(1); - e3.preventDefault(); - break; - case KeyCode_default.ESC: - setOpen(false); - break; - case KeyCode_default.SPACE: - case KeyCode_default.ENTER: - if (selectedKey.value !== null) props4.onTabClick(selectedKey.value, e3); - break; - } - }; - const popupId = computed(() => `${props4.id}-more-popup`); - const selectedItemId = computed(() => selectedKey.value !== null ? `${popupId.value}-${selectedKey.value}` : null); - const onRemoveTab = (event, key2) => { - event.preventDefault(); - event.stopPropagation(); - props4.editable.onEdit("remove", { - key: key2, - event - }); - }; - onMounted(() => { - watch(selectedKey, () => { - const ele = document.getElementById(selectedItemId.value); - if (ele && ele.scrollIntoView) { - ele.scrollIntoView(false); - } - }, { - flush: "post", - immediate: true - }); - }); - watch(open2, () => { - if (!open2.value) { - setSelectedKey(null); - } - }); - useProvideOverride({}); - return () => { - var _a2; - const { - prefixCls, - id, - tabs, - locale: locale4, - mobile, - moreIcon = ((_a2 = slots.moreIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || createVNode(EllipsisOutlined_default, null, null), - moreTransitionName, - editable, - tabBarGutter, - rtl: rtl3, - onTabClick, - popupClassName - } = props4; - if (!tabs.length) return null; - const dropdownPrefix = `${prefixCls}-dropdown`; - const dropdownAriaLabel = locale4 === null || locale4 === void 0 ? void 0 : locale4.dropdownAriaLabel; - const moreStyle = { - [rtl3 ? "marginRight" : "marginLeft"]: tabBarGutter - }; - if (!tabs.length) { - moreStyle.visibility = "hidden"; - moreStyle.order = 1; - } - const overlayClassName = classNames_default({ - [`${dropdownPrefix}-rtl`]: rtl3, - [`${popupClassName}`]: true - }); - const moreNode = mobile ? null : createVNode(vc_dropdown_default, { - "prefixCls": dropdownPrefix, - "trigger": ["hover"], - "visible": open2.value, - "transitionName": moreTransitionName, - "onVisibleChange": setOpen, - "overlayClassName": overlayClassName, - "mouseEnterDelay": 0.1, - "mouseLeaveDelay": 0.1, - "getPopupContainer": props4.getPopupContainer - }, { - overlay: () => createVNode(menu_default, { - "onClick": (_ref2) => { - let { - key: key2, - domEvent - } = _ref2; - onTabClick(key2, domEvent); - setOpen(false); - }, - "id": popupId.value, - "tabindex": -1, - "role": "listbox", - "aria-activedescendant": selectedItemId.value, - "selectedKeys": [selectedKey.value], - "aria-label": dropdownAriaLabel !== void 0 ? dropdownAriaLabel : "expanded dropdown" - }, { - default: () => [tabs.map((tab) => { - var _a3, _b; - const removable = editable && tab.closable !== false && !tab.disabled; - return createVNode(MenuItem_default, { - "key": tab.key, - "id": `${popupId.value}-${tab.key}`, - "role": "option", - "aria-controls": id && `${id}-panel-${tab.key}`, - "disabled": tab.disabled - }, { - default: () => [createVNode("span", null, [typeof tab.tab === "function" ? tab.tab() : tab.tab]), removable && createVNode("button", { - "type": "button", - "aria-label": props4.removeAriaLabel || "remove", - "tabindex": 0, - "class": `${dropdownPrefix}-menu-item-remove`, - "onClick": (e3) => { - e3.stopPropagation(); - onRemoveTab(e3, tab.key); - } - }, [((_a3 = tab.closeIcon) === null || _a3 === void 0 ? void 0 : _a3.call(tab)) || ((_b = editable.removeIcon) === null || _b === void 0 ? void 0 : _b.call(editable)) || "×"])] - }); - })] - }), - default: () => createVNode("button", { - "type": "button", - "class": `${prefixCls}-nav-more`, - "style": moreStyle, - "tabindex": -1, - "aria-hidden": "true", - "aria-haspopup": "listbox", - "aria-controls": popupId.value, - "id": `${id}-more`, - "aria-expanded": open2.value, - "onKeydown": onKeyDown2 - }, [moreIcon]) - }); - return createVNode("div", { - "class": classNames_default(`${prefixCls}-nav-operations`, attrs.class), - "style": attrs.style - }, [moreNode, createVNode(AddButton_default, { - "prefixCls": prefixCls, - "locale": locale4, - "editable": editable - }, null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/TabContext.js -var TabsContextKey = Symbol("tabsContextKey"); -var useProvideTabs = (props4) => { - provide(TabsContextKey, props4); -}; -var useInjectTabs = () => { - return inject(TabsContextKey, { - tabs: ref([]), - prefixCls: ref() - }); -}; -var TabsContextProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TabsContextProvider", - inheritAttrs: false, - props: { - tabs: { - type: Object, - default: void 0 - }, - prefixCls: { - type: String, - default: void 0 - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - useProvideTabs(toRefs(props4)); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/hooks/useTouchMove.js -var MIN_SWIPE_DISTANCE = 0.1; -var STOP_SWIPE_DISTANCE = 0.01; -var REFRESH_INTERVAL = 20; -var SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL); -function useTouchMove(domRef, onOffset) { - const [touchPosition, setTouchPosition] = useState(); - const [lastTimestamp, setLastTimestamp] = useState(0); - const [lastTimeDiff, setLastTimeDiff] = useState(0); - const [lastOffset, setLastOffset] = useState(); - const motionInterval = ref(); - function onTouchStart(e3) { - const { - screenX, - screenY - } = e3.touches[0]; - setTouchPosition({ - x: screenX, - y: screenY - }); - clearInterval(motionInterval.value); - } - function onTouchMove(e3) { - if (!touchPosition.value) return; - e3.preventDefault(); - const { - screenX, - screenY - } = e3.touches[0]; - const offsetX = screenX - touchPosition.value.x; - const offsetY = screenY - touchPosition.value.y; - onOffset(offsetX, offsetY); - setTouchPosition({ - x: screenX, - y: screenY - }); - const now5 = Date.now(); - setLastTimeDiff(now5 - lastTimestamp.value); - setLastTimestamp(now5); - setLastOffset({ - x: offsetX, - y: offsetY - }); - } - function onTouchEnd() { - if (!touchPosition.value) return; - const lastOffsetValue = lastOffset.value; - setTouchPosition(null); - setLastOffset(null); - if (lastOffsetValue) { - const distanceX = lastOffsetValue.x / lastTimeDiff.value; - const distanceY = lastOffsetValue.y / lastTimeDiff.value; - const absX = Math.abs(distanceX); - const absY = Math.abs(distanceY); - if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return; - let currentX = distanceX; - let currentY = distanceY; - motionInterval.value = setInterval(() => { - if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) { - clearInterval(motionInterval.value); - return; - } - currentX *= SPEED_OFF_MULTIPLE; - currentY *= SPEED_OFF_MULTIPLE; - onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL); - }, REFRESH_INTERVAL); - } - } - const lastWheelDirectionRef = ref(); - function onWheel(e3) { - const { - deltaX, - deltaY - } = e3; - let mixed = 0; - const absX = Math.abs(deltaX); - const absY = Math.abs(deltaY); - if (absX === absY) { - mixed = lastWheelDirectionRef.value === "x" ? deltaX : deltaY; - } else if (absX > absY) { - mixed = deltaX; - lastWheelDirectionRef.value = "x"; - } else { - mixed = deltaY; - lastWheelDirectionRef.value = "y"; - } - if (onOffset(-mixed, -mixed)) { - e3.preventDefault(); - } - } - const touchEventsRef = ref({ - onTouchStart, - onTouchMove, - onTouchEnd, - onWheel - }); - function onProxyTouchStart(e3) { - touchEventsRef.value.onTouchStart(e3); - } - function onProxyTouchMove(e3) { - touchEventsRef.value.onTouchMove(e3); - } - function onProxyTouchEnd(e3) { - touchEventsRef.value.onTouchEnd(e3); - } - function onProxyWheel(e3) { - touchEventsRef.value.onWheel(e3); - } - onMounted(() => { - var _a2, _b; - document.addEventListener("touchmove", onProxyTouchMove, { - passive: false - }); - document.addEventListener("touchend", onProxyTouchEnd, { - passive: false - }); - (_a2 = domRef.value) === null || _a2 === void 0 ? void 0 : _a2.addEventListener("touchstart", onProxyTouchStart, { - passive: false - }); - (_b = domRef.value) === null || _b === void 0 ? void 0 : _b.addEventListener("wheel", onProxyWheel, { - passive: false - }); - }); - onBeforeUnmount(() => { - document.removeEventListener("touchmove", onProxyTouchMove); - document.removeEventListener("touchend", onProxyTouchEnd); - }); -} - -// node_modules/ant-design-vue/es/tabs/src/hooks/useSyncState.js -function useSyncState(defaultState, onChange) { - const stateRef = ref(defaultState); - function setState(updater) { - const newValue = typeof updater === "function" ? updater(stateRef.value) : updater; - if (newValue !== stateRef.value) { - onChange(newValue, stateRef.value); - } - stateRef.value = newValue; - } - return [stateRef, setState]; -} - -// node_modules/ant-design-vue/es/_util/hooks/useRefs.js -var useRefs = () => { - const refs = ref(/* @__PURE__ */ new Map()); - const setRef = (key2) => (el) => { - refs.value.set(key2, el); - }; - onBeforeUpdate(() => { - refs.value = /* @__PURE__ */ new Map(); - }); - return [setRef, refs]; -}; -var useRefs_default = useRefs; - -// node_modules/ant-design-vue/es/tabs/src/TabNavList/index.js -var DEFAULT_SIZE2 = { - width: 0, - height: 0, - left: 0, - top: 0, - right: 0 -}; -var tabNavListProps = () => { - return { - id: { - type: String - }, - tabPosition: { - type: String - }, - activeKey: { - type: [String, Number] - }, - rtl: { - type: Boolean - }, - animated: objectType(), - editable: objectType(), - moreIcon: vue_types_default.any, - moreTransitionName: { - type: String - }, - mobile: { - type: Boolean - }, - tabBarGutter: { - type: Number - }, - renderTabBar: { - type: Function - }, - locale: objectType(), - popupClassName: String, - getPopupContainer: functionType(), - onTabClick: { - type: Function - }, - onTabScroll: { - type: Function - } - }; -}; -var TabNavList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TabNavList", - inheritAttrs: false, - props: tabNavListProps(), - slots: Object, - emits: ["tabClick", "tabScroll"], - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - tabs, - prefixCls - } = useInjectTabs(); - const tabsWrapperRef = shallowRef(); - const tabListRef = shallowRef(); - const operationsRef = shallowRef(); - const innerAddButtonRef = shallowRef(); - const [setRef, btnRefs] = useRefs_default(); - const tabPositionTopOrBottom = computed(() => props4.tabPosition === "top" || props4.tabPosition === "bottom"); - const [transformLeft, setTransformLeft] = useSyncState(0, (next2, prev2) => { - if (tabPositionTopOrBottom.value && props4.onTabScroll) { - props4.onTabScroll({ - direction: next2 > prev2 ? "left" : "right" - }); - } - }); - const [transformTop, setTransformTop] = useSyncState(0, (next2, prev2) => { - if (!tabPositionTopOrBottom.value && props4.onTabScroll) { - props4.onTabScroll({ - direction: next2 > prev2 ? "top" : "bottom" - }); - } - }); - const [wrapperScrollWidth, setWrapperScrollWidth] = useState(0); - const [wrapperScrollHeight, setWrapperScrollHeight] = useState(0); - const [wrapperWidth, setWrapperWidth] = useState(null); - const [wrapperHeight, setWrapperHeight] = useState(null); - const [addWidth, setAddWidth] = useState(0); - const [addHeight, setAddHeight] = useState(0); - const [tabSizes, setTabSizes] = useRafState(/* @__PURE__ */ new Map()); - const tabOffsets = useOffsets(tabs, tabSizes); - const operationsHiddenClassName = computed(() => `${prefixCls.value}-nav-operations-hidden`); - const transformMin = shallowRef(0); - const transformMax = shallowRef(0); - watchEffect(() => { - if (!tabPositionTopOrBottom.value) { - transformMin.value = Math.min(0, wrapperHeight.value - wrapperScrollHeight.value); - transformMax.value = 0; - } else if (props4.rtl) { - transformMin.value = 0; - transformMax.value = Math.max(0, wrapperScrollWidth.value - wrapperWidth.value); - } else { - transformMin.value = Math.min(0, wrapperWidth.value - wrapperScrollWidth.value); - transformMax.value = 0; - } - }); - const alignInRange = (value) => { - if (value < transformMin.value) { - return transformMin.value; - } - if (value > transformMax.value) { - return transformMax.value; - } - return value; - }; - const touchMovingRef = shallowRef(); - const [lockAnimation, setLockAnimation] = useState(); - const doLockAnimation = () => { - setLockAnimation(Date.now()); - }; - const clearTouchMoving = () => { - clearTimeout(touchMovingRef.value); - }; - const doMove = (setState, offset4) => { - setState((value) => { - const newValue = alignInRange(value + offset4); - return newValue; - }); - }; - useTouchMove(tabsWrapperRef, (offsetX, offsetY) => { - if (tabPositionTopOrBottom.value) { - if (wrapperWidth.value >= wrapperScrollWidth.value) { - return false; - } - doMove(setTransformLeft, offsetX); - } else { - if (wrapperHeight.value >= wrapperScrollHeight.value) { - return false; - } - doMove(setTransformTop, offsetY); - } - clearTouchMoving(); - doLockAnimation(); - return true; - }); - watch(lockAnimation, () => { - clearTouchMoving(); - if (lockAnimation.value) { - touchMovingRef.value = setTimeout(() => { - setLockAnimation(0); - }, 100); - } - }); - const scrollToTab = function() { - let key2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : props4.activeKey; - const tabOffset = tabOffsets.value.get(key2) || { - width: 0, - height: 0, - left: 0, - right: 0, - top: 0 - }; - if (tabPositionTopOrBottom.value) { - let newTransform = transformLeft.value; - if (props4.rtl) { - if (tabOffset.right < transformLeft.value) { - newTransform = tabOffset.right; - } else if (tabOffset.right + tabOffset.width > transformLeft.value + wrapperWidth.value) { - newTransform = tabOffset.right + tabOffset.width - wrapperWidth.value; - } - } else if (tabOffset.left < -transformLeft.value) { - newTransform = -tabOffset.left; - } else if (tabOffset.left + tabOffset.width > -transformLeft.value + wrapperWidth.value) { - newTransform = -(tabOffset.left + tabOffset.width - wrapperWidth.value); - } - setTransformTop(0); - setTransformLeft(alignInRange(newTransform)); - } else { - let newTransform = transformTop.value; - if (tabOffset.top < -transformTop.value) { - newTransform = -tabOffset.top; - } else if (tabOffset.top + tabOffset.height > -transformTop.value + wrapperHeight.value) { - newTransform = -(tabOffset.top + tabOffset.height - wrapperHeight.value); - } - setTransformLeft(0); - setTransformTop(alignInRange(newTransform)); - } - }; - const visibleStart = shallowRef(0); - const visibleEnd = shallowRef(0); - watchEffect(() => { - let unit; - let position2; - let transformSize; - let basicSize; - let tabContentSize; - let addSize; - const tabOffsetsValue = tabOffsets.value; - if (["top", "bottom"].includes(props4.tabPosition)) { - unit = "width"; - basicSize = wrapperWidth.value; - tabContentSize = wrapperScrollWidth.value; - addSize = addWidth.value; - position2 = props4.rtl ? "right" : "left"; - transformSize = Math.abs(transformLeft.value); - } else { - unit = "height"; - basicSize = wrapperHeight.value; - tabContentSize = wrapperScrollWidth.value; - addSize = addHeight.value; - position2 = "top"; - transformSize = -transformTop.value; - } - let mergedBasicSize = basicSize; - if (tabContentSize + addSize > basicSize && tabContentSize < basicSize) { - mergedBasicSize = basicSize - addSize; - } - const tabsVal = tabs.value; - if (!tabsVal.length) { - return [visibleStart.value, visibleEnd.value] = [0, 0]; - } - const len = tabsVal.length; - let endIndex = len; - for (let i3 = 0; i3 < len; i3 += 1) { - const offset4 = tabOffsetsValue.get(tabsVal[i3].key) || DEFAULT_SIZE2; - if (offset4[position2] + offset4[unit] > transformSize + mergedBasicSize) { - endIndex = i3 - 1; - break; - } - } - let startIndex = 0; - for (let i3 = len - 1; i3 >= 0; i3 -= 1) { - const offset4 = tabOffsetsValue.get(tabsVal[i3].key) || DEFAULT_SIZE2; - if (offset4[position2] < transformSize) { - startIndex = i3 + 1; - break; - } - } - return [visibleStart.value, visibleEnd.value] = [startIndex, endIndex]; - }); - const onListHolderResize = () => { - var _a2, _b, _c, _d, _e; - const offsetWidth = ((_a2 = tabsWrapperRef.value) === null || _a2 === void 0 ? void 0 : _a2.offsetWidth) || 0; - const offsetHeight = ((_b = tabsWrapperRef.value) === null || _b === void 0 ? void 0 : _b.offsetHeight) || 0; - const addDom = ((_c = innerAddButtonRef.value) === null || _c === void 0 ? void 0 : _c.$el) || {}; - const newAddWidth = addDom.offsetWidth || 0; - const newAddHeight = addDom.offsetHeight || 0; - setWrapperWidth(offsetWidth); - setWrapperHeight(offsetHeight); - setAddWidth(newAddWidth); - setAddHeight(newAddHeight); - const newWrapperScrollWidth = (((_d = tabListRef.value) === null || _d === void 0 ? void 0 : _d.offsetWidth) || 0) - newAddWidth; - const newWrapperScrollHeight = (((_e = tabListRef.value) === null || _e === void 0 ? void 0 : _e.offsetHeight) || 0) - newAddHeight; - setWrapperScrollWidth(newWrapperScrollWidth); - setWrapperScrollHeight(newWrapperScrollHeight); - setTabSizes(() => { - const newSizes = /* @__PURE__ */ new Map(); - tabs.value.forEach((_ref2) => { - let { - key: key2 - } = _ref2; - const btnRef = btnRefs.value.get(key2); - const btnNode = (btnRef === null || btnRef === void 0 ? void 0 : btnRef.$el) || btnRef; - if (btnNode) { - newSizes.set(key2, { - width: btnNode.offsetWidth, - height: btnNode.offsetHeight, - left: btnNode.offsetLeft, - top: btnNode.offsetTop - }); - } - }); - return newSizes; - }); - }; - const hiddenTabs = computed(() => [...tabs.value.slice(0, visibleStart.value), ...tabs.value.slice(visibleEnd.value + 1)]); - const [inkStyle, setInkStyle] = useState(); - const activeTabOffset = computed(() => tabOffsets.value.get(props4.activeKey)); - const inkBarRafRef = shallowRef(); - const cleanInkBarRaf = () => { - wrapperRaf.cancel(inkBarRafRef.value); - }; - watch([activeTabOffset, tabPositionTopOrBottom, () => props4.rtl], () => { - const newInkStyle = {}; - if (activeTabOffset.value) { - if (tabPositionTopOrBottom.value) { - if (props4.rtl) { - newInkStyle.right = toPx(activeTabOffset.value.right); - } else { - newInkStyle.left = toPx(activeTabOffset.value.left); - } - newInkStyle.width = toPx(activeTabOffset.value.width); - } else { - newInkStyle.top = toPx(activeTabOffset.value.top); - newInkStyle.height = toPx(activeTabOffset.value.height); - } - } - cleanInkBarRaf(); - inkBarRafRef.value = wrapperRaf(() => { - setInkStyle(newInkStyle); - }); - }); - watch([() => props4.activeKey, activeTabOffset, tabOffsets, tabPositionTopOrBottom], () => { - scrollToTab(); - }, { - flush: "post" - }); - watch([() => props4.rtl, () => props4.tabBarGutter, () => props4.activeKey, () => tabs.value], () => { - onListHolderResize(); - }, { - flush: "post" - }); - const ExtraContent = (_ref3) => { - let { - position: position2, - prefixCls: prefixCls2, - extra - } = _ref3; - if (!extra) return null; - const content = extra === null || extra === void 0 ? void 0 : extra({ - position: position2 - }); - return content ? createVNode("div", { - "class": `${prefixCls2}-extra-content` - }, [content]) : null; - }; - onBeforeUnmount(() => { - clearTouchMoving(); - cleanInkBarRaf(); - }); - return () => { - const { - id, - animated, - activeKey, - rtl: rtl3, - editable, - locale: locale4, - tabPosition, - tabBarGutter, - onTabClick - } = props4; - const { - class: className, - style - } = attrs; - const pre = prefixCls.value; - const hasDropdown = !!hiddenTabs.value.length; - const wrapPrefix = `${pre}-nav-wrap`; - let pingLeft; - let pingRight; - let pingTop; - let pingBottom; - if (tabPositionTopOrBottom.value) { - if (rtl3) { - pingRight = transformLeft.value > 0; - pingLeft = transformLeft.value + wrapperWidth.value < wrapperScrollWidth.value; - } else { - pingLeft = transformLeft.value < 0; - pingRight = -transformLeft.value + wrapperWidth.value < wrapperScrollWidth.value; - } - } else { - pingTop = transformTop.value < 0; - pingBottom = -transformTop.value + wrapperHeight.value < wrapperScrollHeight.value; - } - const tabNodeStyle = {}; - if (tabPosition === "top" || tabPosition === "bottom") { - tabNodeStyle[rtl3 ? "marginRight" : "marginLeft"] = typeof tabBarGutter === "number" ? `${tabBarGutter}px` : tabBarGutter; - } else { - tabNodeStyle.marginTop = typeof tabBarGutter === "number" ? `${tabBarGutter}px` : tabBarGutter; - } - const tabNodes = tabs.value.map((tab, i3) => { - const { - key: key2 - } = tab; - return createVNode(TabNode_default, { - "id": id, - "prefixCls": pre, - "key": key2, - "tab": tab, - "style": i3 === 0 ? void 0 : tabNodeStyle, - "closable": tab.closable, - "editable": editable, - "active": key2 === activeKey, - "removeAriaLabel": locale4 === null || locale4 === void 0 ? void 0 : locale4.removeAriaLabel, - "ref": setRef(key2), - "onClick": (e3) => { - onTabClick(key2, e3); - }, - "onFocus": () => { - scrollToTab(key2); - doLockAnimation(); - if (!tabsWrapperRef.value) { - return; - } - if (!rtl3) { - tabsWrapperRef.value.scrollLeft = 0; - } - tabsWrapperRef.value.scrollTop = 0; - } - }, slots); - }); - return createVNode("div", { - "role": "tablist", - "class": classNames_default(`${pre}-nav`, className), - "style": style, - "onKeydown": () => { - doLockAnimation(); - } - }, [createVNode(ExtraContent, { - "position": "left", - "prefixCls": pre, - "extra": slots.leftExtra - }, null), createVNode(vc_resize_observer_default, { - "onResize": onListHolderResize - }, { - default: () => [createVNode("div", { - "class": classNames_default(wrapPrefix, { - [`${wrapPrefix}-ping-left`]: pingLeft, - [`${wrapPrefix}-ping-right`]: pingRight, - [`${wrapPrefix}-ping-top`]: pingTop, - [`${wrapPrefix}-ping-bottom`]: pingBottom - }), - "ref": tabsWrapperRef - }, [createVNode(vc_resize_observer_default, { - "onResize": onListHolderResize - }, { - default: () => [createVNode("div", { - "ref": tabListRef, - "class": `${pre}-nav-list`, - "style": { - transform: `translate(${transformLeft.value}px, ${transformTop.value}px)`, - transition: lockAnimation.value ? "none" : void 0 - } - }, [tabNodes, createVNode(AddButton_default, { - "ref": innerAddButtonRef, - "prefixCls": pre, - "locale": locale4, - "editable": editable, - "style": _extends(_extends({}, tabNodes.length === 0 ? void 0 : tabNodeStyle), { - visibility: hasDropdown ? "hidden" : null - }) - }, null), createVNode("div", { - "class": classNames_default(`${pre}-ink-bar`, { - [`${pre}-ink-bar-animated`]: animated.inkBar - }), - "style": inkStyle.value - }, null)])] - })])] - }), createVNode(OperationNode_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "removeAriaLabel": locale4 === null || locale4 === void 0 ? void 0 : locale4.removeAriaLabel, - "ref": operationsRef, - "prefixCls": pre, - "tabs": hiddenTabs.value, - "class": !hasDropdown && operationsHiddenClassName.value - }), pick_default(slots, ["moreIcon"])), createVNode(ExtraContent, { - "position": "right", - "prefixCls": pre, - "extra": slots.rightExtra - }, null), createVNode(ExtraContent, { - "position": "right", - "prefixCls": pre, - "extra": slots.tabBarExtraContent - }, null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/TabPanelList/index.js -var TabPanelList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TabPanelList", - inheritAttrs: false, - props: { - activeKey: { - type: [String, Number] - }, - id: { - type: String - }, - rtl: { - type: Boolean - }, - animated: { - type: Object, - default: void 0 - }, - tabPosition: { - type: String - }, - destroyInactiveTabPane: { - type: Boolean - } - }, - setup(props4) { - const { - tabs, - prefixCls - } = useInjectTabs(); - return () => { - const { - id, - activeKey, - animated, - tabPosition, - rtl: rtl3, - destroyInactiveTabPane - } = props4; - const tabPaneAnimated = animated.tabPane; - const pre = prefixCls.value; - const activeIndex = tabs.value.findIndex((tab) => tab.key === activeKey); - return createVNode("div", { - "class": `${pre}-content-holder` - }, [createVNode("div", { - "class": [`${pre}-content`, `${pre}-content-${tabPosition}`, { - [`${pre}-content-animated`]: tabPaneAnimated - }], - "style": activeIndex && tabPaneAnimated ? { - [rtl3 ? "marginRight" : "marginLeft"]: `-${activeIndex}00%` - } : null - }, [tabs.value.map((tab) => { - return cloneElement(tab.node, { - key: tab.key, - prefixCls: pre, - tabKey: tab.key, - id, - animated: tabPaneAnimated, - active: tab.key === activeKey, - destroyInactiveTabPane - }); - })])]); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/style/motion.js -var genMotionStyle = (token2) => { - const { - componentCls, - motionDurationSlow - } = token2; - return [ - { - [componentCls]: { - [`${componentCls}-switch`]: { - "&-appear, &-enter": { - transition: "none", - "&-start": { - opacity: 0 - }, - "&-active": { - opacity: 1, - transition: `opacity ${motionDurationSlow}` - } - }, - "&-leave": { - position: "absolute", - transition: "none", - inset: 0, - "&-start": { - opacity: 1 - }, - "&-active": { - opacity: 0, - transition: `opacity ${motionDurationSlow}` - } - } - } - } - }, - // Follow code may reuse in other components - [initSlideMotion(token2, "slide-up"), initSlideMotion(token2, "slide-down")] - ]; -}; -var motion_default = genMotionStyle; - -// node_modules/ant-design-vue/es/tabs/style/index.js -var genCardStyle = (token2) => { - const { - componentCls, - tabsCardHorizontalPadding, - tabsCardHeadBackground, - tabsCardGutter, - colorSplit - } = token2; - return { - [`${componentCls}-card`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - margin: 0, - padding: tabsCardHorizontalPadding, - background: tabsCardHeadBackground, - border: `${token2.lineWidth}px ${token2.lineType} ${colorSplit}`, - transition: `all ${token2.motionDurationSlow} ${token2.motionEaseInOut}` - }, - [`${componentCls}-tab-active`]: { - color: token2.colorPrimary, - background: token2.colorBgContainer - }, - [`${componentCls}-ink-bar`]: { - visibility: "hidden" - } - }, - // ========================== Top & Bottom ========================== - [`&${componentCls}-top, &${componentCls}-bottom`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab + ${componentCls}-tab`]: { - marginLeft: { - _skip_check_: true, - value: `${tabsCardGutter}px` - } - } - } - }, - [`&${componentCls}-top`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0` - }, - [`${componentCls}-tab-active`]: { - borderBottomColor: token2.colorBgContainer - } - } - }, - [`&${componentCls}-bottom`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - borderRadius: `0 0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px` - }, - [`${componentCls}-tab-active`]: { - borderTopColor: token2.colorBgContainer - } - } - }, - // ========================== Left & Right ========================== - [`&${componentCls}-left, &${componentCls}-right`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab + ${componentCls}-tab`]: { - marginTop: `${tabsCardGutter}px` - } - } - }, - [`&${componentCls}-left`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - borderRadius: { - _skip_check_: true, - value: `${token2.borderRadiusLG}px 0 0 ${token2.borderRadiusLG}px` - } - }, - [`${componentCls}-tab-active`]: { - borderRightColor: { - _skip_check_: true, - value: token2.colorBgContainer - } - } - } - }, - [`&${componentCls}-right`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - borderRadius: { - _skip_check_: true, - value: `0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0` - } - }, - [`${componentCls}-tab-active`]: { - borderLeftColor: { - _skip_check_: true, - value: token2.colorBgContainer - } - } - } - } - } - }; -}; -var genDropdownStyle = (token2) => { - const { - componentCls, - tabsHoverColor, - dropdownEdgeChildVerticalPadding - } = token2; - return { - [`${componentCls}-dropdown`]: _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: -9999, - left: { - _skip_check_: true, - value: -9999 - }, - zIndex: token2.zIndexPopup, - display: "block", - "&-hidden": { - display: "none" - }, - [`${componentCls}-dropdown-menu`]: { - maxHeight: token2.tabsDropdownHeight, - margin: 0, - padding: `${dropdownEdgeChildVerticalPadding}px 0`, - overflowX: "hidden", - overflowY: "auto", - textAlign: { - _skip_check_: true, - value: "left" - }, - listStyleType: "none", - backgroundColor: token2.colorBgContainer, - backgroundClip: "padding-box", - borderRadius: token2.borderRadiusLG, - outline: "none", - boxShadow: token2.boxShadowSecondary, - "&-item": _extends(_extends({}, textEllipsis), { - display: "flex", - alignItems: "center", - minWidth: token2.tabsDropdownWidth, - margin: 0, - padding: `${token2.paddingXXS}px ${token2.paddingSM}px`, - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - cursor: "pointer", - transition: `all ${token2.motionDurationSlow}`, - "> span": { - flex: 1, - whiteSpace: "nowrap" - }, - "&-remove": { - flex: "none", - marginLeft: { - _skip_check_: true, - value: token2.marginSM - }, - color: token2.colorTextDescription, - fontSize: token2.fontSizeSM, - background: "transparent", - border: 0, - cursor: "pointer", - "&:hover": { - color: tabsHoverColor - } - }, - "&:hover": { - background: token2.controlItemBgHover - }, - "&-disabled": { - "&, &:hover": { - color: token2.colorTextDisabled, - background: "transparent", - cursor: "not-allowed" - } - } - }) - } - }) - }; -}; -var genPositionStyle = (token2) => { - const { - componentCls, - margin, - colorSplit - } = token2; - return { - // ========================== Top & Bottom ========================== - [`${componentCls}-top, ${componentCls}-bottom`]: { - flexDirection: "column", - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - margin: `0 0 ${margin}px 0`, - "&::before": { - position: "absolute", - right: { - _skip_check_: true, - value: 0 - }, - left: { - _skip_check_: true, - value: 0 - }, - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${colorSplit}`, - content: "''" - }, - [`${componentCls}-ink-bar`]: { - height: token2.lineWidthBold, - "&-animated": { - transition: `width ${token2.motionDurationSlow}, left ${token2.motionDurationSlow}, - right ${token2.motionDurationSlow}` - } - }, - [`${componentCls}-nav-wrap`]: { - "&::before, &::after": { - top: 0, - bottom: 0, - width: token2.controlHeight - }, - "&::before": { - left: { - _skip_check_: true, - value: 0 - }, - boxShadow: token2.boxShadowTabsOverflowLeft - }, - "&::after": { - right: { - _skip_check_: true, - value: 0 - }, - boxShadow: token2.boxShadowTabsOverflowRight - }, - [`&${componentCls}-nav-wrap-ping-left::before`]: { - opacity: 1 - }, - [`&${componentCls}-nav-wrap-ping-right::after`]: { - opacity: 1 - } - } - } - }, - [`${componentCls}-top`]: { - [`> ${componentCls}-nav, - > div > ${componentCls}-nav`]: { - "&::before": { - bottom: 0 - }, - [`${componentCls}-ink-bar`]: { - bottom: 0 - } - } - }, - [`${componentCls}-bottom`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - order: 1, - marginTop: `${margin}px`, - marginBottom: 0, - "&::before": { - top: 0 - }, - [`${componentCls}-ink-bar`]: { - top: 0 - } - }, - [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: { - order: 0 - } - }, - // ========================== Left & Right ========================== - [`${componentCls}-left, ${componentCls}-right`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - flexDirection: "column", - minWidth: token2.controlHeight * 1.25, - // >>>>>>>>>>> Tab - [`${componentCls}-tab`]: { - padding: `${token2.paddingXS}px ${token2.paddingLG}px`, - textAlign: "center" - }, - [`${componentCls}-tab + ${componentCls}-tab`]: { - margin: `${token2.margin}px 0 0 0` - }, - // >>>>>>>>>>> Nav - [`${componentCls}-nav-wrap`]: { - flexDirection: "column", - "&::before, &::after": { - right: { - _skip_check_: true, - value: 0 - }, - left: { - _skip_check_: true, - value: 0 - }, - height: token2.controlHeight - }, - "&::before": { - top: 0, - boxShadow: token2.boxShadowTabsOverflowTop - }, - "&::after": { - bottom: 0, - boxShadow: token2.boxShadowTabsOverflowBottom - }, - [`&${componentCls}-nav-wrap-ping-top::before`]: { - opacity: 1 - }, - [`&${componentCls}-nav-wrap-ping-bottom::after`]: { - opacity: 1 - } - }, - // >>>>>>>>>>> Ink Bar - [`${componentCls}-ink-bar`]: { - width: token2.lineWidthBold, - "&-animated": { - transition: `height ${token2.motionDurationSlow}, top ${token2.motionDurationSlow}` - } - }, - [`${componentCls}-nav-list, ${componentCls}-nav-operations`]: { - flex: "1 0 auto", - flexDirection: "column" - } - } - }, - [`${componentCls}-left`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-ink-bar`]: { - right: { - _skip_check_: true, - value: 0 - } - } - }, - [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: { - marginLeft: { - _skip_check_: true, - value: `-${token2.lineWidth}px` - }, - borderLeft: { - _skip_check_: true, - value: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}` - }, - [`> ${componentCls}-content > ${componentCls}-tabpane`]: { - paddingLeft: { - _skip_check_: true, - value: token2.paddingLG - } - } - } - }, - [`${componentCls}-right`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - order: 1, - [`${componentCls}-ink-bar`]: { - left: { - _skip_check_: true, - value: 0 - } - } - }, - [`> ${componentCls}-content-holder, > div > ${componentCls}-content-holder`]: { - order: 0, - marginRight: { - _skip_check_: true, - value: -token2.lineWidth - }, - borderRight: { - _skip_check_: true, - value: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}` - }, - [`> ${componentCls}-content > ${componentCls}-tabpane`]: { - paddingRight: { - _skip_check_: true, - value: token2.paddingLG - } - } - } - } - }; -}; -var genSizeStyle3 = (token2) => { - const { - componentCls, - padding - } = token2; - return { - [componentCls]: { - "&-small": { - [`> ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - padding: `${token2.paddingXS}px 0`, - fontSize: token2.fontSize - } - } - }, - "&-large": { - [`> ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - padding: `${padding}px 0`, - fontSize: token2.fontSizeLG - } - } - } - }, - [`${componentCls}-card`]: { - [`&${componentCls}-small`]: { - [`> ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - padding: `${token2.paddingXXS * 1.5}px ${padding}px` - } - }, - [`&${componentCls}-bottom`]: { - [`> ${componentCls}-nav ${componentCls}-tab`]: { - borderRadius: `0 0 ${token2.borderRadius}px ${token2.borderRadius}px` - } - }, - [`&${componentCls}-top`]: { - [`> ${componentCls}-nav ${componentCls}-tab`]: { - borderRadius: `${token2.borderRadius}px ${token2.borderRadius}px 0 0` - } - }, - [`&${componentCls}-right`]: { - [`> ${componentCls}-nav ${componentCls}-tab`]: { - borderRadius: { - _skip_check_: true, - value: `0 ${token2.borderRadius}px ${token2.borderRadius}px 0` - } - } - }, - [`&${componentCls}-left`]: { - [`> ${componentCls}-nav ${componentCls}-tab`]: { - borderRadius: { - _skip_check_: true, - value: `${token2.borderRadius}px 0 0 ${token2.borderRadius}px` - } - } - } - }, - [`&${componentCls}-large`]: { - [`> ${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - padding: `${token2.paddingXS}px ${padding}px ${token2.paddingXXS * 1.5}px` - } - } - } - } - }; -}; -var genTabStyle = (token2) => { - const { - componentCls, - tabsActiveColor, - tabsHoverColor, - iconCls, - tabsHorizontalGutter - } = token2; - const tabCls = `${componentCls}-tab`; - return { - [tabCls]: { - position: "relative", - display: "inline-flex", - alignItems: "center", - padding: `${token2.paddingSM}px 0`, - fontSize: `${token2.fontSize}px`, - background: "transparent", - border: 0, - outline: "none", - cursor: "pointer", - "&-btn, &-remove": _extends({ - "&:focus:not(:focus-visible), &:active": { - color: tabsActiveColor - } - }, genFocusStyle(token2)), - "&-btn": { - outline: "none", - transition: "all 0.3s" - }, - "&-remove": { - flex: "none", - marginRight: { - _skip_check_: true, - value: -token2.marginXXS - }, - marginLeft: { - _skip_check_: true, - value: token2.marginXS - }, - color: token2.colorTextDescription, - fontSize: token2.fontSizeSM, - background: "transparent", - border: "none", - outline: "none", - cursor: "pointer", - transition: `all ${token2.motionDurationSlow}`, - "&:hover": { - color: token2.colorTextHeading - } - }, - "&:hover": { - color: tabsHoverColor - }, - [`&${tabCls}-active ${tabCls}-btn`]: { - color: token2.colorPrimary, - textShadow: token2.tabsActiveTextShadow - }, - [`&${tabCls}-disabled`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed" - }, - [`&${tabCls}-disabled ${tabCls}-btn, &${tabCls}-disabled ${componentCls}-remove`]: { - "&:focus, &:active": { - color: token2.colorTextDisabled - } - }, - [`& ${tabCls}-remove ${iconCls}`]: { - margin: 0 - }, - [iconCls]: { - marginRight: { - _skip_check_: true, - value: token2.marginSM - } - } - }, - [`${tabCls} + ${tabCls}`]: { - margin: { - _skip_check_: true, - value: `0 0 0 ${tabsHorizontalGutter}px` - } - } - }; -}; -var genRtlStyle = (token2) => { - const { - componentCls, - tabsHorizontalGutter, - iconCls, - tabsCardGutter - } = token2; - const rtlCls = `${componentCls}-rtl`; - return { - [rtlCls]: { - direction: "rtl", - [`${componentCls}-nav`]: { - [`${componentCls}-tab`]: { - margin: { - _skip_check_: true, - value: `0 0 0 ${tabsHorizontalGutter}px` - }, - [`${componentCls}-tab:last-of-type`]: { - marginLeft: { - _skip_check_: true, - value: 0 - } - }, - [iconCls]: { - marginRight: { - _skip_check_: true, - value: 0 - }, - marginLeft: { - _skip_check_: true, - value: `${token2.marginSM}px` - } - }, - [`${componentCls}-tab-remove`]: { - marginRight: { - _skip_check_: true, - value: `${token2.marginXS}px` - }, - marginLeft: { - _skip_check_: true, - value: `-${token2.marginXXS}px` - }, - [iconCls]: { - margin: 0 - } - } - } - }, - [`&${componentCls}-left`]: { - [`> ${componentCls}-nav`]: { - order: 1 - }, - [`> ${componentCls}-content-holder`]: { - order: 0 - } - }, - [`&${componentCls}-right`]: { - [`> ${componentCls}-nav`]: { - order: 0 - }, - [`> ${componentCls}-content-holder`]: { - order: 1 - } - }, - // ====================== Card ====================== - [`&${componentCls}-card${componentCls}-top, &${componentCls}-card${componentCls}-bottom`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-tab + ${componentCls}-tab`]: { - marginRight: { - _skip_check_: true, - value: `${tabsCardGutter}px` - }, - marginLeft: { - _skip_check_: true, - value: 0 - } - } - } - } - }, - [`${componentCls}-dropdown-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-menu-item`]: { - [`${componentCls}-dropdown-rtl`]: { - textAlign: { - _skip_check_: true, - value: "right" - } - } - } - }; -}; -var genTabsStyle = (token2) => { - const { - componentCls, - tabsCardHorizontalPadding, - tabsCardHeight, - tabsCardGutter, - tabsHoverColor, - tabsActiveColor, - colorSplit - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - display: "flex", - // ========================== Navigation ========================== - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - position: "relative", - display: "flex", - flex: "none", - alignItems: "center", - [`${componentCls}-nav-wrap`]: { - position: "relative", - display: "flex", - flex: "auto", - alignSelf: "stretch", - overflow: "hidden", - whiteSpace: "nowrap", - transform: "translate(0)", - // >>>>> Ping shadow - "&::before, &::after": { - position: "absolute", - zIndex: 1, - opacity: 0, - transition: `opacity ${token2.motionDurationSlow}`, - content: "''", - pointerEvents: "none" - } - }, - [`${componentCls}-nav-list`]: { - position: "relative", - display: "flex", - transition: `opacity ${token2.motionDurationSlow}` - }, - // >>>>>>>> Operations - [`${componentCls}-nav-operations`]: { - display: "flex", - alignSelf: "stretch" - }, - [`${componentCls}-nav-operations-hidden`]: { - position: "absolute", - visibility: "hidden", - pointerEvents: "none" - }, - [`${componentCls}-nav-more`]: { - position: "relative", - padding: tabsCardHorizontalPadding, - background: "transparent", - border: 0, - "&::after": { - position: "absolute", - right: { - _skip_check_: true, - value: 0 - }, - bottom: 0, - left: { - _skip_check_: true, - value: 0 - }, - height: token2.controlHeightLG / 8, - transform: "translateY(100%)", - content: "''" - } - }, - [`${componentCls}-nav-add`]: _extends({ - minWidth: `${tabsCardHeight}px`, - marginLeft: { - _skip_check_: true, - value: `${tabsCardGutter}px` - }, - padding: `0 ${token2.paddingXS}px`, - background: "transparent", - border: `${token2.lineWidth}px ${token2.lineType} ${colorSplit}`, - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0`, - outline: "none", - cursor: "pointer", - color: token2.colorText, - transition: `all ${token2.motionDurationSlow} ${token2.motionEaseInOut}`, - "&:hover": { - color: tabsHoverColor - }, - "&:active, &:focus:not(:focus-visible)": { - color: tabsActiveColor - } - }, genFocusStyle(token2)) - }, - [`${componentCls}-extra-content`]: { - flex: "none" - }, - // ============================ InkBar ============================ - [`${componentCls}-ink-bar`]: { - position: "absolute", - background: token2.colorPrimary, - pointerEvents: "none" - } - }), genTabStyle(token2)), { - // =========================== TabPanes =========================== - [`${componentCls}-content`]: { - position: "relative", - display: "flex", - width: "100%", - ["&-animated"]: { - transition: "margin 0.3s" - } - }, - [`${componentCls}-content-holder`]: { - flex: "auto", - minWidth: 0, - minHeight: 0 - }, - [`${componentCls}-tabpane`]: { - outline: "none", - flex: "none", - width: "100%" - } - }), - [`${componentCls}-centered`]: { - [`> ${componentCls}-nav, > div > ${componentCls}-nav`]: { - [`${componentCls}-nav-wrap`]: { - [`&:not([class*='${componentCls}-nav-wrap-ping'])`]: { - justifyContent: "center" - } - } - } - } - }; -}; -var style_default20 = genComponentStyleHook("Tabs", (token2) => { - const tabsCardHeight = token2.controlHeightLG; - const tabsToken = merge(token2, { - tabsHoverColor: token2.colorPrimaryHover, - tabsActiveColor: token2.colorPrimaryActive, - tabsCardHorizontalPadding: `${(tabsCardHeight - Math.round(token2.fontSize * token2.lineHeight)) / 2 - token2.lineWidth}px ${token2.padding}px`, - tabsCardHeight, - tabsCardGutter: token2.marginXXS / 2, - tabsHorizontalGutter: 32, - tabsCardHeadBackground: token2.colorFillAlter, - dropdownEdgeChildVerticalPadding: token2.paddingXXS, - tabsActiveTextShadow: "0 0 0.25px currentcolor", - tabsDropdownHeight: 200, - tabsDropdownWidth: 120 - }); - return [genSizeStyle3(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), motion_default(tabsToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase + 50 -})); - -// node_modules/ant-design-vue/es/tabs/src/Tabs.js -var uuid4 = 0; -var tabsProps = () => { - return { - prefixCls: { - type: String - }, - id: { - type: String - }, - popupClassName: String, - getPopupContainer: functionType(), - activeKey: { - type: [String, Number] - }, - defaultActiveKey: { - type: [String, Number] - }, - direction: stringType(), - animated: someType([Boolean, Object]), - renderTabBar: functionType(), - tabBarGutter: { - type: Number - }, - tabBarStyle: objectType(), - tabPosition: stringType(), - destroyInactiveTabPane: booleanType(), - hideAdd: Boolean, - type: stringType(), - size: stringType(), - centered: Boolean, - onEdit: functionType(), - onChange: functionType(), - onTabClick: functionType(), - onTabScroll: functionType(), - "onUpdate:activeKey": functionType(), - // Accessibility - locale: objectType(), - onPrevClick: functionType(), - onNextClick: functionType(), - tabBarExtraContent: vue_types_default.any - }; -}; -function parseTabList(children) { - return children.map((node2) => { - if (isValidElement(node2)) { - const props4 = _extends({}, node2.props || {}); - for (const [k2, v2] of Object.entries(props4)) { - delete props4[k2]; - props4[camelize(k2)] = v2; - } - const slots = node2.children || {}; - const key2 = node2.key !== void 0 ? node2.key : void 0; - const { - tab = slots.tab, - disabled, - forceRender, - closable, - animated, - active, - destroyInactiveTabPane - } = props4; - return _extends(_extends({ - key: key2 - }, props4), { - node: node2, - closeIcon: slots.closeIcon, - tab, - disabled: disabled === "" || disabled, - forceRender: forceRender === "" || forceRender, - closable: closable === "" || closable, - animated: animated === "" || animated, - active: active === "" || active, - destroyInactiveTabPane: destroyInactiveTabPane === "" || destroyInactiveTabPane - }); - } - return null; - }).filter((tab) => tab); -} -var InternalTabs = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "InternalTabs", - inheritAttrs: false, - props: _extends(_extends({}, initDefaultProps_default(tabsProps(), { - tabPosition: "top", - animated: { - inkBar: true, - tabPane: false - } - })), { - tabs: arrayType() - }), - slots: Object, - // emits: ['tabClick', 'tabScroll', 'change', 'update:activeKey'], - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - devWarning_default(!(props4.onPrevClick !== void 0) && !(props4.onNextClick !== void 0), "Tabs", "`onPrevClick / @prevClick` and `onNextClick / @nextClick` has been removed. Please use `onTabScroll / @tabScroll` instead."); - devWarning_default(!(props4.tabBarExtraContent !== void 0), "Tabs", "`tabBarExtraContent` prop has been removed. Please use `rightExtra` slot instead."); - devWarning_default(!(slots.tabBarExtraContent !== void 0), "Tabs", "`tabBarExtraContent` slot is deprecated. Please use `rightExtra` slot instead."); - const { - prefixCls, - direction, - size: size2, - rootPrefixCls, - getPopupContainer - } = useConfigInject_default("tabs", props4); - const [wrapSSR, hashId] = style_default20(prefixCls); - const rtl3 = computed(() => direction.value === "rtl"); - const mergedAnimated = computed(() => { - const { - animated, - tabPosition - } = props4; - if (animated === false || ["left", "right"].includes(tabPosition)) { - return { - inkBar: false, - tabPane: false - }; - } else if (animated === true) { - return { - inkBar: true, - tabPane: true - }; - } else { - return _extends({ - inkBar: true, - tabPane: false - }, typeof animated === "object" ? animated : {}); - } - }); - const [mobile, setMobile] = useState(false); - onMounted(() => { - setMobile(isMobile_default()); - }); - const [mergedActiveKey, setMergedActiveKey] = useMergedState(() => { - var _a2; - return (_a2 = props4.tabs[0]) === null || _a2 === void 0 ? void 0 : _a2.key; - }, { - value: computed(() => props4.activeKey), - defaultValue: props4.defaultActiveKey - }); - const [activeIndex, setActiveIndex] = useState(() => props4.tabs.findIndex((tab) => tab.key === mergedActiveKey.value)); - watchEffect(() => { - var _a2; - let newActiveIndex = props4.tabs.findIndex((tab) => tab.key === mergedActiveKey.value); - if (newActiveIndex === -1) { - newActiveIndex = Math.max(0, Math.min(activeIndex.value, props4.tabs.length - 1)); - setMergedActiveKey((_a2 = props4.tabs[newActiveIndex]) === null || _a2 === void 0 ? void 0 : _a2.key); - } - setActiveIndex(newActiveIndex); - }); - const [mergedId, setMergedId] = useMergedState(null, { - value: computed(() => props4.id) - }); - const mergedTabPosition = computed(() => { - if (mobile.value && !["left", "right"].includes(props4.tabPosition)) { - return "top"; - } else { - return props4.tabPosition; - } - }); - onMounted(() => { - if (!props4.id) { - setMergedId(`rc-tabs-${false ? "test" : uuid4}`); - uuid4 += 1; - } - }); - const onInternalTabClick = (key2, e3) => { - var _a2, _b; - (_a2 = props4.onTabClick) === null || _a2 === void 0 ? void 0 : _a2.call(props4, key2, e3); - const isActiveChanged = key2 !== mergedActiveKey.value; - setMergedActiveKey(key2); - if (isActiveChanged) { - (_b = props4.onChange) === null || _b === void 0 ? void 0 : _b.call(props4, key2); - } - }; - useProvideTabs({ - tabs: computed(() => props4.tabs), - prefixCls - }); - return () => { - const { - id, - type: type4, - tabBarGutter, - tabBarStyle, - locale: locale4, - destroyInactiveTabPane, - renderTabBar = slots.renderTabBar, - onTabScroll, - hideAdd, - centered - } = props4; - const sharedProps = { - id: mergedId.value, - activeKey: mergedActiveKey.value, - animated: mergedAnimated.value, - tabPosition: mergedTabPosition.value, - rtl: rtl3.value, - mobile: mobile.value - }; - let editable; - if (type4 === "editable-card") { - editable = { - onEdit: (editType, _ref2) => { - let { - key: key2, - event - } = _ref2; - var _a2; - (_a2 = props4.onEdit) === null || _a2 === void 0 ? void 0 : _a2.call(props4, editType === "add" ? event : key2, editType); - }, - removeIcon: () => createVNode(CloseOutlined_default, null, null), - addIcon: slots.addIcon ? slots.addIcon : () => createVNode(PlusOutlined_default, null, null), - showAdd: hideAdd !== true - }; - } - let tabNavBar; - const tabNavBarProps = _extends(_extends({}, sharedProps), { - moreTransitionName: `${rootPrefixCls.value}-slide-up`, - editable, - locale: locale4, - tabBarGutter, - onTabClick: onInternalTabClick, - onTabScroll, - style: tabBarStyle, - getPopupContainer: getPopupContainer.value, - popupClassName: classNames_default(props4.popupClassName, hashId.value) - }); - if (renderTabBar) { - tabNavBar = renderTabBar(_extends(_extends({}, tabNavBarProps), { - DefaultTabBar: TabNavList_default - })); - } else { - tabNavBar = createVNode(TabNavList_default, tabNavBarProps, pick_default(slots, ["moreIcon", "leftExtra", "rightExtra", "tabBarExtraContent"])); - } - const pre = prefixCls.value; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "id": id, - "class": classNames_default(pre, `${pre}-${mergedTabPosition.value}`, { - [hashId.value]: true, - [`${pre}-${size2.value}`]: size2.value, - [`${pre}-card`]: ["card", "editable-card"].includes(type4), - [`${pre}-editable-card`]: type4 === "editable-card", - [`${pre}-centered`]: centered, - [`${pre}-mobile`]: mobile.value, - [`${pre}-editable`]: type4 === "editable-card", - [`${pre}-rtl`]: rtl3.value - }, attrs.class) - }), [tabNavBar, createVNode(TabPanelList_default, _objectSpread2(_objectSpread2({ - "destroyInactiveTabPane": destroyInactiveTabPane - }, sharedProps), {}, { - "animated": mergedAnimated.value - }), null)])); - }; - } -}); -var Tabs_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATabs", - inheritAttrs: false, - props: initDefaultProps_default(tabsProps(), { - tabPosition: "top", - animated: { - inkBar: true, - tabPane: false - } - }), - slots: Object, - // emits: ['tabClick', 'tabScroll', 'change', 'update:activeKey'], - setup(props4, _ref3) { - let { - attrs, - slots, - emit - } = _ref3; - const handleChange = (key2) => { - emit("update:activeKey", key2); - emit("change", key2); - }; - return () => { - var _a2; - const tabs = parseTabList(flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))); - return createVNode(InternalTabs, _objectSpread2(_objectSpread2(_objectSpread2({}, omit_default(props4, ["onUpdate:activeKey"])), attrs), {}, { - "onChange": handleChange, - "tabs": tabs - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/TabPanelList/TabPane.js -var tabPaneProps = () => ({ - tab: vue_types_default.any, - disabled: { - type: Boolean - }, - forceRender: { - type: Boolean - }, - closable: { - type: Boolean - }, - animated: { - type: Boolean - }, - active: { - type: Boolean - }, - destroyInactiveTabPane: { - type: Boolean - }, - // Pass by TabPaneList - prefixCls: { - type: String - }, - tabKey: { - type: [String, Number] - }, - id: { - type: String - } - // closeIcon: PropTypes.any, -}); -var TabPane_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATabPane", - inheritAttrs: false, - __ANT_TAB_PANE: true, - props: tabPaneProps(), - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const visited = ref(props4.forceRender); - watch([() => props4.active, () => props4.destroyInactiveTabPane], () => { - if (props4.active) { - visited.value = true; - } else if (props4.destroyInactiveTabPane) { - visited.value = false; - } - }, { - immediate: true - }); - const mergedStyle = computed(() => { - if (!props4.active) { - if (props4.animated) { - return { - visibility: "hidden", - height: 0, - overflowY: "hidden" - }; - } else { - return { - display: "none" - }; - } - } - return {}; - }); - return () => { - var _a2; - const { - prefixCls, - forceRender, - id, - active, - tabKey - } = props4; - return createVNode("div", { - "id": id && `${id}-panel-${tabKey}`, - "role": "tabpanel", - "tabindex": active ? 0 : -1, - "aria-labelledby": id && `${id}-tab-${tabKey}`, - "aria-hidden": !active, - "style": [mergedStyle.value, attrs.style], - "class": [`${prefixCls}-tabpane`, active && `${prefixCls}-tabpane-active`, attrs.class] - }, [(active || visited.value || forceRender) && ((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))]); - }; - } -}); - -// node_modules/ant-design-vue/es/tabs/src/index.js -var src_default = Tabs_default; - -// node_modules/ant-design-vue/es/tabs/index.js -src_default.TabPane = TabPane_default; -src_default.install = function(app) { - app.component(src_default.name, src_default); - app.component(TabPane_default.name, TabPane_default); - return app; -}; -var tabs_default = src_default; - -// node_modules/ant-design-vue/es/card/style/index.js -var genCardHeadStyle = (token2) => { - const { - antCls, - componentCls, - cardHeadHeight, - cardPaddingBase, - cardHeadTabsMarginBottom - } = token2; - return _extends(_extends({ - display: "flex", - justifyContent: "center", - flexDirection: "column", - minHeight: cardHeadHeight, - marginBottom: -1, - padding: `0 ${cardPaddingBase}px`, - color: token2.colorTextHeading, - fontWeight: token2.fontWeightStrong, - fontSize: token2.fontSizeLG, - background: "transparent", - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorderSecondary}`, - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0` - }, clearFix()), { - "&-wrapper": { - width: "100%", - display: "flex", - alignItems: "center" - }, - "&-title": _extends(_extends({ - display: "inline-block", - flex: 1 - }, textEllipsis), { - [` - > ${componentCls}-typography, - > ${componentCls}-typography-edit-content - `]: { - insetInlineStart: 0, - marginTop: 0, - marginBottom: 0 - } - }), - [`${antCls}-tabs-top`]: { - clear: "both", - marginBottom: cardHeadTabsMarginBottom, - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize, - "&-bar": { - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorderSecondary}` - } - } - }); -}; -var genCardGridStyle = (token2) => { - const { - cardPaddingBase, - colorBorderSecondary, - cardShadow, - lineWidth - } = token2; - return { - width: "33.33%", - padding: cardPaddingBase, - border: 0, - borderRadius: 0, - boxShadow: ` - ${lineWidth}px 0 0 0 ${colorBorderSecondary}, - 0 ${lineWidth}px 0 0 ${colorBorderSecondary}, - ${lineWidth}px ${lineWidth}px 0 0 ${colorBorderSecondary}, - ${lineWidth}px 0 0 0 ${colorBorderSecondary} inset, - 0 ${lineWidth}px 0 0 ${colorBorderSecondary} inset; - `, - transition: `all ${token2.motionDurationMid}`, - "&-hoverable:hover": { - position: "relative", - zIndex: 1, - boxShadow: cardShadow - } - }; -}; -var genCardActionsStyle = (token2) => { - const { - componentCls, - iconCls, - cardActionsLiMargin, - cardActionsIconSize, - colorBorderSecondary - } = token2; - return _extends(_extends({ - margin: 0, - padding: 0, - listStyle: "none", - background: token2.colorBgContainer, - borderTop: `${token2.lineWidth}px ${token2.lineType} ${colorBorderSecondary}`, - display: "flex", - borderRadius: `0 0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px ` - }, clearFix()), { - "& > li": { - margin: cardActionsLiMargin, - color: token2.colorTextDescription, - textAlign: "center", - "> span": { - position: "relative", - display: "block", - minWidth: token2.cardActionsIconSize * 2, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - cursor: "pointer", - "&:hover": { - color: token2.colorPrimary, - transition: `color ${token2.motionDurationMid}` - }, - [`a:not(${componentCls}-btn), > ${iconCls}`]: { - display: "inline-block", - width: "100%", - color: token2.colorTextDescription, - lineHeight: `${token2.fontSize * token2.lineHeight}px`, - transition: `color ${token2.motionDurationMid}`, - "&:hover": { - color: token2.colorPrimary - } - }, - [`> ${iconCls}`]: { - fontSize: cardActionsIconSize, - lineHeight: `${cardActionsIconSize * token2.lineHeight}px` - } - }, - "&:not(:last-child)": { - borderInlineEnd: `${token2.lineWidth}px ${token2.lineType} ${colorBorderSecondary}` - } - } - }); -}; -var genCardMetaStyle = (token2) => _extends(_extends({ - margin: `-${token2.marginXXS}px 0`, - display: "flex" -}, clearFix()), { - "&-avatar": { - paddingInlineEnd: token2.padding - }, - "&-detail": { - overflow: "hidden", - flex: 1, - "> div:not(:last-child)": { - marginBottom: token2.marginXS - } - }, - "&-title": _extends({ - color: token2.colorTextHeading, - fontWeight: token2.fontWeightStrong, - fontSize: token2.fontSizeLG - }, textEllipsis), - "&-description": { - color: token2.colorTextDescription - } -}); -var genCardTypeInnerStyle = (token2) => { - const { - componentCls, - cardPaddingBase, - colorFillAlter - } = token2; - return { - [`${componentCls}-head`]: { - padding: `0 ${cardPaddingBase}px`, - background: colorFillAlter, - "&-title": { - fontSize: token2.fontSize - } - }, - [`${componentCls}-body`]: { - padding: `${token2.padding}px ${cardPaddingBase}px` - } - }; -}; -var genCardLoadingStyle = (token2) => { - const { - componentCls - } = token2; - return { - overflow: "hidden", - [`${componentCls}-body`]: { - userSelect: "none" - } - }; -}; -var genCardStyle2 = (token2) => { - const { - componentCls, - cardShadow, - cardHeadPadding, - colorBorderSecondary, - boxShadow, - cardPaddingBase - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - background: token2.colorBgContainer, - borderRadius: token2.borderRadiusLG, - [`&:not(${componentCls}-bordered)`]: { - boxShadow - }, - [`${componentCls}-head`]: genCardHeadStyle(token2), - [`${componentCls}-extra`]: { - // https://stackoverflow.com/a/22429853/3040605 - marginInlineStart: "auto", - color: "", - fontWeight: "normal", - fontSize: token2.fontSize - }, - [`${componentCls}-body`]: _extends({ - padding: cardPaddingBase, - borderRadius: ` 0 0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px` - }, clearFix()), - [`${componentCls}-grid`]: genCardGridStyle(token2), - [`${componentCls}-cover`]: { - "> *": { - display: "block", - width: "100%" - }, - img: { - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0` - } - }, - [`${componentCls}-actions`]: genCardActionsStyle(token2), - [`${componentCls}-meta`]: genCardMetaStyle(token2) - }), - [`${componentCls}-bordered`]: { - border: `${token2.lineWidth}px ${token2.lineType} ${colorBorderSecondary}`, - [`${componentCls}-cover`]: { - marginTop: -1, - marginInlineStart: -1, - marginInlineEnd: -1 - } - }, - [`${componentCls}-hoverable`]: { - cursor: "pointer", - transition: `box-shadow ${token2.motionDurationMid}, border-color ${token2.motionDurationMid}`, - "&:hover": { - borderColor: "transparent", - boxShadow: cardShadow - } - }, - [`${componentCls}-contain-grid`]: { - [`${componentCls}-body`]: { - display: "flex", - flexWrap: "wrap" - }, - [`&:not(${componentCls}-loading) ${componentCls}-body`]: { - marginBlockStart: -token2.lineWidth, - marginInlineStart: -token2.lineWidth, - padding: 0 - } - }, - [`${componentCls}-contain-tabs`]: { - [`> ${componentCls}-head`]: { - [`${componentCls}-head-title, ${componentCls}-extra`]: { - paddingTop: cardHeadPadding - } - } - }, - [`${componentCls}-type-inner`]: genCardTypeInnerStyle(token2), - [`${componentCls}-loading`]: genCardLoadingStyle(token2), - [`${componentCls}-rtl`]: { - direction: "rtl" - } - }; -}; -var genCardSizeStyle = (token2) => { - const { - componentCls, - cardPaddingSM, - cardHeadHeightSM - } = token2; - return { - [`${componentCls}-small`]: { - [`> ${componentCls}-head`]: { - minHeight: cardHeadHeightSM, - padding: `0 ${cardPaddingSM}px`, - fontSize: token2.fontSize, - [`> ${componentCls}-head-wrapper`]: { - [`> ${componentCls}-extra`]: { - fontSize: token2.fontSize - } - } - }, - [`> ${componentCls}-body`]: { - padding: cardPaddingSM - } - }, - [`${componentCls}-small${componentCls}-contain-tabs`]: { - [`> ${componentCls}-head`]: { - [`${componentCls}-head-title, ${componentCls}-extra`]: { - minHeight: cardHeadHeightSM, - paddingTop: 0, - display: "flex", - alignItems: "center" - } - } - } - }; -}; -var style_default21 = genComponentStyleHook("Card", (token2) => { - const cardToken = merge(token2, { - cardShadow: token2.boxShadowCard, - cardHeadHeight: token2.fontSizeLG * token2.lineHeightLG + token2.padding * 2, - cardHeadHeightSM: token2.fontSize * token2.lineHeight + token2.paddingXS * 2, - cardHeadPadding: token2.padding, - cardPaddingBase: token2.paddingLG, - cardHeadTabsMarginBottom: -token2.padding - token2.lineWidth, - cardActionsLiMargin: `${token2.paddingSM}px 0`, - cardActionsIconSize: token2.fontSize, - cardPaddingSM: 12 - // Fixed padding. - }); - return [ - // Style - genCardStyle2(cardToken), - // Size - genCardSizeStyle(cardToken) - ]; -}); - -// node_modules/ant-design-vue/es/skeleton/Title.js -var skeletonTitleProps = () => ({ - prefixCls: String, - width: { - type: [Number, String] - } -}); -var SkeletonTitle = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "SkeletonTitle", - props: skeletonTitleProps(), - setup(props4) { - return () => { - const { - prefixCls, - width - } = props4; - const zWidth = typeof width === "number" ? `${width}px` : width; - return createVNode("h3", { - "class": prefixCls, - "style": { - width: zWidth - } - }, null); - }; - } -}); -var Title_default = SkeletonTitle; - -// node_modules/ant-design-vue/es/skeleton/Paragraph.js -var skeletonParagraphProps = () => ({ - prefixCls: String, - width: { - type: [Number, String, Array] - }, - rows: Number -}); -var SkeletonParagraph = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "SkeletonParagraph", - props: skeletonParagraphProps(), - setup(props4) { - const getWidth2 = (index3) => { - const { - width, - rows = 2 - } = props4; - if (Array.isArray(width)) { - return width[index3]; - } - if (rows - 1 === index3) { - return width; - } - return void 0; - }; - return () => { - const { - prefixCls, - rows - } = props4; - const rowList = [...Array(rows)].map((_2, index3) => { - const width = getWidth2(index3); - return createVNode("li", { - "key": index3, - "style": { - width: typeof width === "number" ? `${width}px` : width - } - }, null); - }); - return createVNode("ul", { - "class": prefixCls - }, [rowList]); - }; - } -}); -var Paragraph_default = SkeletonParagraph; - -// node_modules/ant-design-vue/es/skeleton/Element.js -var skeletonElementProps = () => ({ - prefixCls: String, - size: [String, Number], - shape: String, - active: { - type: Boolean, - default: void 0 - } -}); -var Element2 = (props4) => { - const { - prefixCls, - size: size2, - shape - } = props4; - const sizeCls = classNames_default({ - [`${prefixCls}-lg`]: size2 === "large", - [`${prefixCls}-sm`]: size2 === "small" - }); - const shapeCls = classNames_default({ - [`${prefixCls}-circle`]: shape === "circle", - [`${prefixCls}-square`]: shape === "square", - [`${prefixCls}-round`]: shape === "round" - }); - const sizeStyle = typeof size2 === "number" ? { - width: `${size2}px`, - height: `${size2}px`, - lineHeight: `${size2}px` - } : {}; - return createVNode("span", { - "class": classNames_default(prefixCls, sizeCls, shapeCls), - "style": sizeStyle - }, null); -}; -Element2.displayName = "SkeletonElement"; -var Element_default = Element2; - -// node_modules/ant-design-vue/es/skeleton/style/index.js -var skeletonClsLoading = new Keyframes_default(`ant-skeleton-loading`, { - "0%": { - transform: "translateX(-37.5%)" - }, - "100%": { - transform: "translateX(37.5%)" - } -}); -var genSkeletonElementCommonSize = (size2) => ({ - height: size2, - lineHeight: `${size2}px` -}); -var genSkeletonElementAvatarSize = (size2) => _extends({ - width: size2 -}, genSkeletonElementCommonSize(size2)); -var genSkeletonColor = (token2) => ({ - position: "relative", - // fix https://github.com/ant-design/ant-design/issues/36444 - // https://monshin.github.io/202109/css/safari-border-radius-overflow-hidden/ - /* stylelint-disable-next-line property-no-vendor-prefix,value-no-vendor-prefix */ - zIndex: 0, - overflow: "hidden", - background: "transparent", - "&::after": { - position: "absolute", - top: 0, - insetInlineEnd: "-150%", - bottom: 0, - insetInlineStart: "-150%", - background: token2.skeletonLoadingBackground, - animationName: skeletonClsLoading, - animationDuration: token2.skeletonLoadingMotionDuration, - animationTimingFunction: "ease", - animationIterationCount: "infinite", - content: '""' - } -}); -var genSkeletonElementInputSize = (size2) => _extends({ - width: size2 * 5, - minWidth: size2 * 5 -}, genSkeletonElementCommonSize(size2)); -var genSkeletonElementAvatar = (token2) => { - const { - skeletonAvatarCls, - color, - controlHeight, - controlHeightLG, - controlHeightSM - } = token2; - return { - [`${skeletonAvatarCls}`]: _extends({ - display: "inline-block", - verticalAlign: "top", - background: color - }, genSkeletonElementAvatarSize(controlHeight)), - [`${skeletonAvatarCls}${skeletonAvatarCls}-circle`]: { - borderRadius: "50%" - }, - [`${skeletonAvatarCls}${skeletonAvatarCls}-lg`]: _extends({}, genSkeletonElementAvatarSize(controlHeightLG)), - [`${skeletonAvatarCls}${skeletonAvatarCls}-sm`]: _extends({}, genSkeletonElementAvatarSize(controlHeightSM)) - }; -}; -var genSkeletonElementInput = (token2) => { - const { - controlHeight, - borderRadiusSM, - skeletonInputCls, - controlHeightLG, - controlHeightSM, - color - } = token2; - return { - [`${skeletonInputCls}`]: _extends({ - display: "inline-block", - verticalAlign: "top", - background: color, - borderRadius: borderRadiusSM - }, genSkeletonElementInputSize(controlHeight)), - [`${skeletonInputCls}-lg`]: _extends({}, genSkeletonElementInputSize(controlHeightLG)), - [`${skeletonInputCls}-sm`]: _extends({}, genSkeletonElementInputSize(controlHeightSM)) - }; -}; -var genSkeletonElementImageSize = (size2) => _extends({ - width: size2 -}, genSkeletonElementCommonSize(size2)); -var genSkeletonElementImage = (token2) => { - const { - skeletonImageCls, - imageSizeBase, - color, - borderRadiusSM - } = token2; - return { - [`${skeletonImageCls}`]: _extends(_extends({ - display: "flex", - alignItems: "center", - justifyContent: "center", - verticalAlign: "top", - background: color, - borderRadius: borderRadiusSM - }, genSkeletonElementImageSize(imageSizeBase * 2)), { - [`${skeletonImageCls}-path`]: { - fill: "#bfbfbf" - }, - [`${skeletonImageCls}-svg`]: _extends(_extends({}, genSkeletonElementImageSize(imageSizeBase)), { - maxWidth: imageSizeBase * 4, - maxHeight: imageSizeBase * 4 - }), - [`${skeletonImageCls}-svg${skeletonImageCls}-svg-circle`]: { - borderRadius: "50%" - } - }), - [`${skeletonImageCls}${skeletonImageCls}-circle`]: { - borderRadius: "50%" - } - }; -}; -var genSkeletonElementButtonShape = (token2, size2, buttonCls) => { - const { - skeletonButtonCls - } = token2; - return { - [`${buttonCls}${skeletonButtonCls}-circle`]: { - width: size2, - minWidth: size2, - borderRadius: "50%" - }, - [`${buttonCls}${skeletonButtonCls}-round`]: { - borderRadius: size2 - } - }; -}; -var genSkeletonElementButtonSize = (size2) => _extends({ - width: size2 * 2, - minWidth: size2 * 2 -}, genSkeletonElementCommonSize(size2)); -var genSkeletonElementButton = (token2) => { - const { - borderRadiusSM, - skeletonButtonCls, - controlHeight, - controlHeightLG, - controlHeightSM, - color - } = token2; - return _extends(_extends(_extends(_extends(_extends({ - [`${skeletonButtonCls}`]: _extends({ - display: "inline-block", - verticalAlign: "top", - background: color, - borderRadius: borderRadiusSM, - width: controlHeight * 2, - minWidth: controlHeight * 2 - }, genSkeletonElementButtonSize(controlHeight)) - }, genSkeletonElementButtonShape(token2, controlHeight, skeletonButtonCls)), { - [`${skeletonButtonCls}-lg`]: _extends({}, genSkeletonElementButtonSize(controlHeightLG)) - }), genSkeletonElementButtonShape(token2, controlHeightLG, `${skeletonButtonCls}-lg`)), { - [`${skeletonButtonCls}-sm`]: _extends({}, genSkeletonElementButtonSize(controlHeightSM)) - }), genSkeletonElementButtonShape(token2, controlHeightSM, `${skeletonButtonCls}-sm`)); -}; -var genBaseStyle6 = (token2) => { - const { - componentCls, - skeletonAvatarCls, - skeletonTitleCls, - skeletonParagraphCls, - skeletonButtonCls, - skeletonInputCls, - skeletonImageCls, - controlHeight, - controlHeightLG, - controlHeightSM, - color, - padding, - marginSM, - borderRadius, - skeletonTitleHeight, - skeletonBlockRadius, - skeletonParagraphLineHeight, - controlHeightXS, - skeletonParagraphMarginTop - } = token2; - return { - [`${componentCls}`]: { - display: "table", - width: "100%", - [`${componentCls}-header`]: { - display: "table-cell", - paddingInlineEnd: padding, - verticalAlign: "top", - // Avatar - [`${skeletonAvatarCls}`]: _extends({ - display: "inline-block", - verticalAlign: "top", - background: color - }, genSkeletonElementAvatarSize(controlHeight)), - [`${skeletonAvatarCls}-circle`]: { - borderRadius: "50%" - }, - [`${skeletonAvatarCls}-lg`]: _extends({}, genSkeletonElementAvatarSize(controlHeightLG)), - [`${skeletonAvatarCls}-sm`]: _extends({}, genSkeletonElementAvatarSize(controlHeightSM)) - }, - [`${componentCls}-content`]: { - display: "table-cell", - width: "100%", - verticalAlign: "top", - // Title - [`${skeletonTitleCls}`]: { - width: "100%", - height: skeletonTitleHeight, - background: color, - borderRadius: skeletonBlockRadius, - [`+ ${skeletonParagraphCls}`]: { - marginBlockStart: controlHeightSM - } - }, - // paragraph - [`${skeletonParagraphCls}`]: { - padding: 0, - "> li": { - width: "100%", - height: skeletonParagraphLineHeight, - listStyle: "none", - background: color, - borderRadius: skeletonBlockRadius, - "+ li": { - marginBlockStart: controlHeightXS - } - } - }, - [`${skeletonParagraphCls}> li:last-child:not(:first-child):not(:nth-child(2))`]: { - width: "61%" - } - }, - [`&-round ${componentCls}-content`]: { - [`${skeletonTitleCls}, ${skeletonParagraphCls} > li`]: { - borderRadius - } - } - }, - [`${componentCls}-with-avatar ${componentCls}-content`]: { - // Title - [`${skeletonTitleCls}`]: { - marginBlockStart: marginSM, - [`+ ${skeletonParagraphCls}`]: { - marginBlockStart: skeletonParagraphMarginTop - } - } - }, - // Skeleton element - [`${componentCls}${componentCls}-element`]: _extends(_extends(_extends(_extends({ - display: "inline-block", - width: "auto" - }, genSkeletonElementButton(token2)), genSkeletonElementAvatar(token2)), genSkeletonElementInput(token2)), genSkeletonElementImage(token2)), - // Skeleton Block Button, Input - [`${componentCls}${componentCls}-block`]: { - width: "100%", - [`${skeletonButtonCls}`]: { - width: "100%" - }, - [`${skeletonInputCls}`]: { - width: "100%" - } - }, - // With active animation - [`${componentCls}${componentCls}-active`]: { - [` - ${skeletonTitleCls}, - ${skeletonParagraphCls} > li, - ${skeletonAvatarCls}, - ${skeletonButtonCls}, - ${skeletonInputCls}, - ${skeletonImageCls} - `]: _extends({}, genSkeletonColor(token2)) - } - }; -}; -var style_default22 = genComponentStyleHook("Skeleton", (token2) => { - const { - componentCls - } = token2; - const skeletonToken = merge(token2, { - skeletonAvatarCls: `${componentCls}-avatar`, - skeletonTitleCls: `${componentCls}-title`, - skeletonParagraphCls: `${componentCls}-paragraph`, - skeletonButtonCls: `${componentCls}-button`, - skeletonInputCls: `${componentCls}-input`, - skeletonImageCls: `${componentCls}-image`, - imageSizeBase: token2.controlHeight * 1.5, - skeletonTitleHeight: token2.controlHeight / 2, - skeletonBlockRadius: token2.borderRadiusSM, - skeletonParagraphLineHeight: token2.controlHeight / 2, - skeletonParagraphMarginTop: token2.marginLG + token2.marginXXS, - borderRadius: 100, - skeletonLoadingBackground: `linear-gradient(90deg, ${token2.color} 25%, ${token2.colorGradientEnd} 37%, ${token2.color} 63%)`, - skeletonLoadingMotionDuration: "1.4s" - }); - return [genBaseStyle6(skeletonToken)]; -}, (token2) => { - const { - colorFillContent, - colorFill - } = token2; - return { - color: colorFillContent, - colorGradientEnd: colorFill - }; -}); - -// node_modules/ant-design-vue/es/skeleton/Skeleton.js -var skeletonProps = () => ({ - active: { - type: Boolean, - default: void 0 - }, - loading: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - avatar: { - type: [Boolean, Object], - default: void 0 - }, - title: { - type: [Boolean, Object], - default: void 0 - }, - paragraph: { - type: [Boolean, Object], - default: void 0 - }, - round: { - type: Boolean, - default: void 0 - } -}); -function getComponentProps(prop) { - if (prop && typeof prop === "object") { - return prop; - } - return {}; -} -function getAvatarBasicProps(hasTitle, hasParagraph) { - if (hasTitle && !hasParagraph) { - return { - size: "large", - shape: "square" - }; - } - return { - size: "large", - shape: "circle" - }; -} -function getTitleBasicProps(hasAvatar, hasParagraph) { - if (!hasAvatar && hasParagraph) { - return { - width: "38%" - }; - } - if (hasAvatar && hasParagraph) { - return { - width: "50%" - }; - } - return {}; -} -function getParagraphBasicProps(hasAvatar, hasTitle) { - const basicProps2 = {}; - if (!hasAvatar || !hasTitle) { - basicProps2.width = "61%"; - } - if (!hasAvatar && hasTitle) { - basicProps2.rows = 3; - } else { - basicProps2.rows = 2; - } - return basicProps2; -} -var Skeleton = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASkeleton", - props: initDefaultProps_default(skeletonProps(), { - avatar: false, - title: true, - paragraph: true - }), - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("skeleton", props4); - const [wrapSSR, hashId] = style_default22(prefixCls); - return () => { - var _a2; - const { - loading, - avatar, - title, - paragraph, - active, - round: round2 - } = props4; - const pre = prefixCls.value; - if (loading || props4.loading === void 0) { - const hasAvatar = !!avatar || avatar === ""; - const hasTitle = !!title || title === ""; - const hasParagraph = !!paragraph || paragraph === ""; - let avatarNode; - if (hasAvatar) { - const avatarProps3 = _extends(_extends({ - prefixCls: `${pre}-avatar` - }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar)); - avatarNode = createVNode("div", { - "class": `${pre}-header` - }, [createVNode(Element_default, avatarProps3, null)]); - } - let contentNode; - if (hasTitle || hasParagraph) { - let $title; - if (hasTitle) { - const titleProps2 = _extends(_extends({ - prefixCls: `${pre}-title` - }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title)); - $title = createVNode(Title_default, titleProps2, null); - } - let paragraphNode; - if (hasParagraph) { - const paragraphProps2 = _extends(_extends({ - prefixCls: `${pre}-paragraph` - }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph)); - paragraphNode = createVNode(Paragraph_default, paragraphProps2, null); - } - contentNode = createVNode("div", { - "class": `${pre}-content` - }, [$title, paragraphNode]); - } - const cls = classNames_default(pre, { - [`${pre}-with-avatar`]: hasAvatar, - [`${pre}-active`]: active, - [`${pre}-rtl`]: direction.value === "rtl", - [`${pre}-round`]: round2, - [hashId.value]: true - }); - return wrapSSR(createVNode("div", { - "class": cls - }, [avatarNode, contentNode])); - } - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var Skeleton_default = Skeleton; - -// node_modules/ant-design-vue/es/skeleton/Button.js -var skeletonButtonProps = () => { - return _extends(_extends({}, skeletonElementProps()), { - size: String, - block: Boolean - }); -}; -var SkeletonButton = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASkeletonButton", - props: initDefaultProps_default(skeletonButtonProps(), { - size: "default" - }), - setup(props4) { - const { - prefixCls - } = useConfigInject_default("skeleton", props4); - const [wrapSSR, hashId] = style_default22(prefixCls); - const cls = computed(() => classNames_default(prefixCls.value, `${prefixCls.value}-element`, { - [`${prefixCls.value}-active`]: props4.active, - [`${prefixCls.value}-block`]: props4.block - }, hashId.value)); - return () => { - return wrapSSR(createVNode("div", { - "class": cls.value - }, [createVNode(Element_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": `${prefixCls.value}-button` - }), null)])); - }; - } -}); -var Button_default = SkeletonButton; - -// node_modules/ant-design-vue/es/skeleton/Input.js -var SkeletonInput = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASkeletonInput", - props: _extends(_extends({}, omit_default(skeletonElementProps(), ["shape"])), { - size: String, - block: Boolean - }), - setup(props4) { - const { - prefixCls - } = useConfigInject_default("skeleton", props4); - const [wrapSSR, hashId] = style_default22(prefixCls); - const cls = computed(() => classNames_default(prefixCls.value, `${prefixCls.value}-element`, { - [`${prefixCls.value}-active`]: props4.active, - [`${prefixCls.value}-block`]: props4.block - }, hashId.value)); - return () => { - return wrapSSR(createVNode("div", { - "class": cls.value - }, [createVNode(Element_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": `${prefixCls.value}-input` - }), null)])); - }; - } -}); -var Input_default2 = SkeletonInput; - -// node_modules/ant-design-vue/es/skeleton/Image.js -var path = "M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z"; -var SkeletonImage = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASkeletonImage", - props: omit_default(skeletonElementProps(), ["size", "shape", "active"]), - setup(props4) { - const { - prefixCls - } = useConfigInject_default("skeleton", props4); - const [wrapSSR, hashId] = style_default22(prefixCls); - const cls = computed(() => classNames_default(prefixCls.value, `${prefixCls.value}-element`, hashId.value)); - return () => { - return wrapSSR(createVNode("div", { - "class": cls.value - }, [createVNode("div", { - "class": `${prefixCls.value}-image` - }, [createVNode("svg", { - "viewBox": "0 0 1098 1024", - "xmlns": "http://www.w3.org/2000/svg", - "class": `${prefixCls.value}-image-svg` - }, [createVNode("path", { - "d": path, - "class": `${prefixCls.value}-image-path` - }, null)])])])); - }; - } -}); -var Image_default = SkeletonImage; - -// node_modules/ant-design-vue/es/skeleton/Avatar.js -var avatarProps2 = () => { - return _extends(_extends({}, skeletonElementProps()), { - shape: String - }); -}; -var SkeletonAvatar = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASkeletonAvatar", - props: initDefaultProps_default(avatarProps2(), { - size: "default", - shape: "circle" - }), - setup(props4) { - const { - prefixCls - } = useConfigInject_default("skeleton", props4); - const [wrapSSR, hashId] = style_default22(prefixCls); - const cls = computed(() => classNames_default(prefixCls.value, `${prefixCls.value}-element`, { - [`${prefixCls.value}-active`]: props4.active - }, hashId.value)); - return () => { - return wrapSSR(createVNode("div", { - "class": cls.value - }, [createVNode(Element_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": `${prefixCls.value}-avatar` - }), null)])); - }; - } -}); -var Avatar_default2 = SkeletonAvatar; - -// node_modules/ant-design-vue/es/skeleton/index.js -Skeleton_default.Button = Button_default; -Skeleton_default.Avatar = Avatar_default2; -Skeleton_default.Input = Input_default2; -Skeleton_default.Image = Image_default; -Skeleton_default.Title = Title_default; -Skeleton_default.install = function(app) { - app.component(Skeleton_default.name, Skeleton_default); - app.component(Skeleton_default.Button.name, Button_default); - app.component(Skeleton_default.Avatar.name, Avatar_default2); - app.component(Skeleton_default.Input.name, Input_default2); - app.component(Skeleton_default.Image.name, Image_default); - app.component(Skeleton_default.Title.name, Title_default); - return app; -}; -var skeleton_default = Skeleton_default; - -// node_modules/ant-design-vue/es/card/Card.js -var { - TabPane -} = tabs_default; -var cardProps = () => ({ - prefixCls: String, - title: vue_types_default.any, - extra: vue_types_default.any, - bordered: { - type: Boolean, - default: true - }, - bodyStyle: { - type: Object, - default: void 0 - }, - headStyle: { - type: Object, - default: void 0 - }, - loading: { - type: Boolean, - default: false - }, - hoverable: { - type: Boolean, - default: false - }, - type: { - type: String - }, - size: { - type: String - }, - actions: vue_types_default.any, - tabList: { - type: Array - }, - tabBarExtraContent: vue_types_default.any, - activeTabKey: String, - defaultActiveTabKey: String, - cover: vue_types_default.any, - onTabChange: { - type: Function - } -}); -var Card = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACard", - inheritAttrs: false, - props: cardProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction, - size: size2 - } = useConfigInject_default("card", props4); - const [wrapSSR, hashId] = style_default21(prefixCls); - const getAction = (actions) => { - const actionList = actions.map((action, index3) => isVNode(action) && !isEmptyElement(action) || !isVNode(action) ? createVNode("li", { - "style": { - width: `${100 / actions.length}%` - }, - "key": `action-${index3}` - }, [createVNode("span", null, [action])]) : null); - return actionList; - }; - const triggerTabChange = (key2) => { - var _a2; - (_a2 = props4.onTabChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, key2); - }; - const isContainGrid = function() { - let obj = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - let containGrid; - obj.forEach((element) => { - if (element && isPlainObject_default(element.type) && element.type.__ANT_CARD_GRID) { - containGrid = true; - } - }); - return containGrid; - }; - return () => { - var _a2, _b, _c, _d, _e, _f; - const { - headStyle = {}, - bodyStyle = {}, - loading, - bordered = true, - type: type4, - tabList, - hoverable, - activeTabKey, - defaultActiveTabKey, - tabBarExtraContent = filterEmptyWithUndefined((_a2 = slots.tabBarExtraContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots)), - title = filterEmptyWithUndefined((_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots)), - extra = filterEmptyWithUndefined((_c = slots.extra) === null || _c === void 0 ? void 0 : _c.call(slots)), - actions = filterEmptyWithUndefined((_d = slots.actions) === null || _d === void 0 ? void 0 : _d.call(slots)), - cover = filterEmptyWithUndefined((_e = slots.cover) === null || _e === void 0 ? void 0 : _e.call(slots)) - } = props4; - const children = flattenChildren((_f = slots.default) === null || _f === void 0 ? void 0 : _f.call(slots)); - const pre = prefixCls.value; - const classString = { - [`${pre}`]: true, - [hashId.value]: true, - [`${pre}-loading`]: loading, - [`${pre}-bordered`]: bordered, - [`${pre}-hoverable`]: !!hoverable, - [`${pre}-contain-grid`]: isContainGrid(children), - [`${pre}-contain-tabs`]: tabList && tabList.length, - [`${pre}-${size2.value}`]: size2.value, - [`${pre}-type-${type4}`]: !!type4, - [`${pre}-rtl`]: direction.value === "rtl" - }; - const loadingBlock = createVNode(skeleton_default, { - "loading": true, - "active": true, - "paragraph": { - rows: 4 - }, - "title": false - }, { - default: () => [children] - }); - const hasActiveTabKey = activeTabKey !== void 0; - const tabsProps2 = { - size: "large", - [hasActiveTabKey ? "activeKey" : "defaultActiveKey"]: hasActiveTabKey ? activeTabKey : defaultActiveTabKey, - onChange: triggerTabChange, - class: `${pre}-head-tabs` - }; - let head2; - const tabs = tabList && tabList.length ? createVNode(tabs_default, tabsProps2, { - default: () => [tabList.map((item) => { - const { - tab: temp, - slots: itemSlots - } = item; - const name = itemSlots === null || itemSlots === void 0 ? void 0 : itemSlots.tab; - devWarning_default(!itemSlots, "Card", `tabList slots is deprecated, Please use \`customTab\` instead.`); - let tab = temp !== void 0 ? temp : slots[name] ? slots[name](item) : null; - tab = customRenderSlot(slots, "customTab", item, () => [tab]); - return createVNode(TabPane, { - "tab": tab, - "key": item.key, - "disabled": item.disabled - }, null); - })], - rightExtra: tabBarExtraContent ? () => tabBarExtraContent : null - }) : null; - if (title || extra || tabs) { - head2 = createVNode("div", { - "class": `${pre}-head`, - "style": headStyle - }, [createVNode("div", { - "class": `${pre}-head-wrapper` - }, [title && createVNode("div", { - "class": `${pre}-head-title` - }, [title]), extra && createVNode("div", { - "class": `${pre}-extra` - }, [extra])]), tabs]); - } - const coverDom = cover ? createVNode("div", { - "class": `${pre}-cover` - }, [cover]) : null; - const body = createVNode("div", { - "class": `${pre}-body`, - "style": bodyStyle - }, [loading ? loadingBlock : children]); - const actionDom = actions && actions.length ? createVNode("ul", { - "class": `${pre}-actions` - }, [getAction(actions)]) : null; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({ - "ref": "cardContainerRef" - }, attrs), {}, { - "class": [classString, attrs.class] - }), [head2, coverDom, children && children.length ? body : null, actionDom])); - }; - } -}); -var Card_default = Card; - -// node_modules/ant-design-vue/es/card/Meta.js -var cardMetaProps = () => ({ - prefixCls: String, - title: vNodeType(), - description: vNodeType(), - avatar: vNodeType() -}); -var Meta_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACardMeta", - props: cardMetaProps(), - slots: Object, - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("card", props4); - return () => { - const classString = { - [`${prefixCls.value}-meta`]: true - }; - const avatar = getPropsSlot(slots, props4, "avatar"); - const title = getPropsSlot(slots, props4, "title"); - const description = getPropsSlot(slots, props4, "description"); - const avatarDom = avatar ? createVNode("div", { - "class": `${prefixCls.value}-meta-avatar` - }, [avatar]) : null; - const titleDom = title ? createVNode("div", { - "class": `${prefixCls.value}-meta-title` - }, [title]) : null; - const descriptionDom = description ? createVNode("div", { - "class": `${prefixCls.value}-meta-description` - }, [description]) : null; - const MetaDetail = titleDom || descriptionDom ? createVNode("div", { - "class": `${prefixCls.value}-meta-detail` - }, [titleDom, descriptionDom]) : null; - return createVNode("div", { - "class": classString - }, [avatarDom, MetaDetail]); - }; - } -}); - -// node_modules/ant-design-vue/es/card/Grid.js -var cardGridProps = () => ({ - prefixCls: String, - hoverable: { - type: Boolean, - default: true - } -}); -var Grid_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACardGrid", - __ANT_CARD_GRID: true, - props: cardGridProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("card", props4); - const classNames2 = computed(() => { - return { - [`${prefixCls.value}-grid`]: true, - [`${prefixCls.value}-grid-hoverable`]: props4.hoverable - }; - }); - return () => { - var _a2; - return createVNode("div", { - "class": classNames2.value - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/ant-design-vue/es/card/index.js -Card_default.Meta = Meta_default; -Card_default.Grid = Grid_default; -Card_default.install = function(app) { - app.component(Card_default.name, Card_default); - app.component(Meta_default.name, Meta_default); - app.component(Grid_default.name, Grid_default); - return app; -}; -var card_default = Card_default; - -// node_modules/ant-design-vue/es/collapse/commonProps.js -var collapseProps = () => ({ - prefixCls: String, - activeKey: someType([Array, Number, String]), - defaultActiveKey: someType([Array, Number, String]), - accordion: booleanType(), - destroyInactivePanel: booleanType(), - bordered: booleanType(), - expandIcon: functionType(), - openAnimation: vue_types_default.object, - expandIconPosition: stringType(), - collapsible: stringType(), - ghost: booleanType(), - onChange: functionType(), - "onUpdate:activeKey": functionType() -}); -var collapsePanelProps = () => ({ - openAnimation: vue_types_default.object, - prefixCls: String, - header: vue_types_default.any, - headerClass: String, - showArrow: booleanType(), - isActive: booleanType(), - destroyInactivePanel: booleanType(), - /** @deprecated Use `collapsible="disabled"` instead */ - disabled: booleanType(), - accordion: booleanType(), - forceRender: booleanType(), - expandIcon: functionType(), - extra: vue_types_default.any, - panelKey: someType(), - collapsible: stringType(), - role: String, - onItemClick: functionType() -}); - -// node_modules/ant-design-vue/es/collapse/style/index.js -var genBaseStyle7 = (token2) => { - const { - componentCls, - collapseContentBg, - padding, - collapseContentPaddingHorizontal, - collapseHeaderBg, - collapseHeaderPadding, - collapsePanelBorderRadius, - lineWidth, - lineType, - colorBorder, - colorText, - colorTextHeading, - colorTextDisabled, - fontSize, - lineHeight, - marginSM, - paddingSM, - motionDurationSlow, - fontSizeIcon - } = token2; - const borderBase = `${lineWidth}px ${lineType} ${colorBorder}`; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - backgroundColor: collapseHeaderBg, - border: borderBase, - borderBottom: 0, - borderRadius: `${collapsePanelBorderRadius}px`, - [`&-rtl`]: { - direction: "rtl" - }, - [`& > ${componentCls}-item`]: { - borderBottom: borderBase, - [`&:last-child`]: { - [` - &, - & > ${componentCls}-header`]: { - borderRadius: `0 0 ${collapsePanelBorderRadius}px ${collapsePanelBorderRadius}px` - } - }, - [`> ${componentCls}-header`]: { - position: "relative", - display: "flex", - flexWrap: "nowrap", - alignItems: "flex-start", - padding: collapseHeaderPadding, - color: colorTextHeading, - lineHeight, - cursor: "pointer", - transition: `all ${motionDurationSlow}, visibility 0s`, - [`> ${componentCls}-header-text`]: { - flex: "auto" - }, - "&:focus": { - outline: "none" - }, - // >>>>> Arrow - [`${componentCls}-expand-icon`]: { - height: fontSize * lineHeight, - display: "flex", - alignItems: "center", - paddingInlineEnd: marginSM - }, - [`${componentCls}-arrow`]: _extends(_extends({}, resetIcon()), { - fontSize: fontSizeIcon, - svg: { - transition: `transform ${motionDurationSlow}` - } - }), - // >>>>> Text - [`${componentCls}-header-text`]: { - marginInlineEnd: "auto" - } - }, - [`${componentCls}-header-collapsible-only`]: { - cursor: "default", - [`${componentCls}-header-text`]: { - flex: "none", - cursor: "pointer" - }, - [`${componentCls}-expand-icon`]: { - cursor: "pointer" - } - }, - [`${componentCls}-icon-collapsible-only`]: { - cursor: "default", - [`${componentCls}-expand-icon`]: { - cursor: "pointer" - } - }, - [`&${componentCls}-no-arrow`]: { - [`> ${componentCls}-header`]: { - paddingInlineStart: paddingSM - } - } - }, - [`${componentCls}-content`]: { - color: colorText, - backgroundColor: collapseContentBg, - borderTop: borderBase, - [`& > ${componentCls}-content-box`]: { - padding: `${padding}px ${collapseContentPaddingHorizontal}px` - }, - [`&-hidden`]: { - display: "none" - } - }, - [`${componentCls}-item:last-child`]: { - [`> ${componentCls}-content`]: { - borderRadius: `0 0 ${collapsePanelBorderRadius}px ${collapsePanelBorderRadius}px` - } - }, - [`& ${componentCls}-item-disabled > ${componentCls}-header`]: { - [` - &, - & > .arrow - `]: { - color: colorTextDisabled, - cursor: "not-allowed" - } - }, - // ========================== Icon Position ========================== - [`&${componentCls}-icon-position-end`]: { - [`& > ${componentCls}-item`]: { - [`> ${componentCls}-header`]: { - [`${componentCls}-expand-icon`]: { - order: 1, - paddingInlineEnd: 0, - paddingInlineStart: marginSM - } - } - } - } - }) - }; -}; -var genArrowStyle = (token2) => { - const { - componentCls - } = token2; - const fixedSelector = `> ${componentCls}-item > ${componentCls}-header ${componentCls}-arrow svg`; - return { - [`${componentCls}-rtl`]: { - [fixedSelector]: { - transform: `rotate(180deg)` - } - } - }; -}; -var genBorderlessStyle = (token2) => { - const { - componentCls, - collapseHeaderBg, - paddingXXS, - colorBorder - } = token2; - return { - [`${componentCls}-borderless`]: { - backgroundColor: collapseHeaderBg, - border: 0, - [`> ${componentCls}-item`]: { - borderBottom: `1px solid ${colorBorder}` - }, - [` - > ${componentCls}-item:last-child, - > ${componentCls}-item:last-child ${componentCls}-header - `]: { - borderRadius: 0 - }, - [`> ${componentCls}-item:last-child`]: { - borderBottom: 0 - }, - [`> ${componentCls}-item > ${componentCls}-content`]: { - backgroundColor: "transparent", - borderTop: 0 - }, - [`> ${componentCls}-item > ${componentCls}-content > ${componentCls}-content-box`]: { - paddingTop: paddingXXS - } - } - }; -}; -var genGhostStyle = (token2) => { - const { - componentCls, - paddingSM - } = token2; - return { - [`${componentCls}-ghost`]: { - backgroundColor: "transparent", - border: 0, - [`> ${componentCls}-item`]: { - borderBottom: 0, - [`> ${componentCls}-content`]: { - backgroundColor: "transparent", - border: 0, - [`> ${componentCls}-content-box`]: { - paddingBlock: paddingSM - } - } - } - } - }; -}; -var style_default23 = genComponentStyleHook("Collapse", (token2) => { - const collapseToken = merge(token2, { - collapseContentBg: token2.colorBgContainer, - collapseHeaderBg: token2.colorFillAlter, - collapseHeaderPadding: `${token2.paddingSM}px ${token2.padding}px`, - collapsePanelBorderRadius: token2.borderRadiusLG, - collapseContentPaddingHorizontal: 16 - // Fixed value - }); - return [genBaseStyle7(collapseToken), genBorderlessStyle(collapseToken), genGhostStyle(collapseToken), genArrowStyle(collapseToken), collapse_default(collapseToken)]; -}); - -// node_modules/ant-design-vue/es/collapse/Collapse.js -function getActiveKeysArray(activeKey) { - let currentActiveKey = activeKey; - if (!Array.isArray(currentActiveKey)) { - const activeKeyType = typeof currentActiveKey; - currentActiveKey = activeKeyType === "number" || activeKeyType === "string" ? [currentActiveKey] : []; - } - return currentActiveKey.map((key2) => String(key2)); -} -var Collapse_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACollapse", - inheritAttrs: false, - props: initDefaultProps_default(collapseProps(), { - accordion: false, - destroyInactivePanel: false, - bordered: true, - expandIconPosition: "start" - }), - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const stateActiveKey = ref(getActiveKeysArray(firstNotUndefined_default([props4.activeKey, props4.defaultActiveKey]))); - watch(() => props4.activeKey, () => { - stateActiveKey.value = getActiveKeysArray(props4.activeKey); - }, { - deep: true - }); - const { - prefixCls, - direction, - rootPrefixCls - } = useConfigInject_default("collapse", props4); - const [wrapSSR, hashId] = style_default23(prefixCls); - const iconPosition = computed(() => { - const { - expandIconPosition - } = props4; - if (expandIconPosition !== void 0) { - return expandIconPosition; - } - return direction.value === "rtl" ? "end" : "start"; - }); - const renderExpandIcon3 = (panelProps) => { - const { - expandIcon = slots.expandIcon - } = props4; - const icon = expandIcon ? expandIcon(panelProps) : createVNode(RightOutlined_default, { - "rotate": panelProps.isActive ? 90 : void 0 - }, null); - return createVNode("div", { - "class": [`${prefixCls.value}-expand-icon`, hashId.value], - "onClick": () => ["header", "icon"].includes(props4.collapsible) && onClickItem(panelProps.panelKey) - }, [isValidElement(Array.isArray(expandIcon) ? icon[0] : icon) ? cloneElement(icon, { - class: `${prefixCls.value}-arrow` - }, false) : icon]); - }; - const setActiveKey = (activeKey) => { - if (props4.activeKey === void 0) { - stateActiveKey.value = activeKey; - } - const newKey = props4.accordion ? activeKey[0] : activeKey; - emit("update:activeKey", newKey); - emit("change", newKey); - }; - const onClickItem = (key2) => { - let activeKey = stateActiveKey.value; - if (props4.accordion) { - activeKey = activeKey[0] === key2 ? [] : [key2]; - } else { - activeKey = [...activeKey]; - const index3 = activeKey.indexOf(key2); - const isActive = index3 > -1; - if (isActive) { - activeKey.splice(index3, 1); - } else { - activeKey.push(key2); - } - } - setActiveKey(activeKey); - }; - const getNewChild = (child, index3) => { - var _a2, _b, _c; - if (isEmptyElement(child)) return; - const activeKey = stateActiveKey.value; - const { - accordion, - destroyInactivePanel, - collapsible, - openAnimation - } = props4; - const animation = openAnimation || collapseMotion_default(`${rootPrefixCls.value}-motion-collapse`); - const key2 = String((_a2 = child.key) !== null && _a2 !== void 0 ? _a2 : index3); - const { - header = (_c = (_b = child.children) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.call(_b), - headerClass, - collapsible: childCollapsible, - disabled - } = child.props || {}; - let isActive = false; - if (accordion) { - isActive = activeKey[0] === key2; - } else { - isActive = activeKey.indexOf(key2) > -1; - } - let mergeCollapsible = childCollapsible !== null && childCollapsible !== void 0 ? childCollapsible : collapsible; - if (disabled || disabled === "") { - mergeCollapsible = "disabled"; - } - const newProps = { - key: key2, - panelKey: key2, - header, - headerClass, - isActive, - prefixCls: prefixCls.value, - destroyInactivePanel, - openAnimation: animation, - accordion, - onItemClick: mergeCollapsible === "disabled" ? null : onClickItem, - expandIcon: renderExpandIcon3, - collapsible: mergeCollapsible - }; - return cloneElement(child, newProps); - }; - const getItems = () => { - var _a2; - return flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)).map(getNewChild); - }; - return () => { - const { - accordion, - bordered, - ghost - } = props4; - const collapseClassName = classNames_default(prefixCls.value, { - [`${prefixCls.value}-borderless`]: !bordered, - [`${prefixCls.value}-icon-position-${iconPosition.value}`]: true, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-ghost`]: !!ghost, - [attrs.class]: !!attrs.class - }, hashId.value); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({ - "class": collapseClassName - }, getDataAndAriaProps(attrs)), {}, { - "style": attrs.style, - "role": accordion ? "tablist" : null - }), [getItems()])); - }; - } -}); - -// node_modules/ant-design-vue/es/collapse/PanelContent.js -var PanelContent_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PanelContent", - props: collapsePanelProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const rendered = shallowRef(false); - watchEffect(() => { - if (props4.isActive || props4.forceRender) { - rendered.value = true; - } - }); - return () => { - var _a2; - if (!rendered.value) return null; - const { - prefixCls, - isActive, - role - } = props4; - return createVNode("div", { - "class": classNames_default(`${prefixCls}-content`, { - [`${prefixCls}-content-active`]: isActive, - [`${prefixCls}-content-inactive`]: !isActive - }), - "role": role - }, [createVNode("div", { - "class": `${prefixCls}-content-box` - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/collapse/CollapsePanel.js -var CollapsePanel_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACollapsePanel", - inheritAttrs: false, - props: initDefaultProps_default(collapsePanelProps(), { - showArrow: true, - isActive: false, - onItemClick() { - }, - headerClass: "", - forceRender: false - }), - slots: Object, - // emits: ['itemClick'], - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - devWarning_default(props4.disabled === void 0, "Collapse.Panel", '`disabled` is deprecated. Please use `collapsible="disabled"` instead.'); - const { - prefixCls - } = useConfigInject_default("collapse", props4); - const handleItemClick = () => { - emit("itemClick", props4.panelKey); - }; - const handleKeyPress = (e3) => { - if (e3.key === "Enter" || e3.keyCode === 13 || e3.which === 13) { - handleItemClick(); - } - }; - return () => { - var _a2, _b; - const { - header = (_a2 = slots.header) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - headerClass, - isActive, - showArrow, - destroyInactivePanel, - accordion, - forceRender, - openAnimation, - expandIcon = slots.expandIcon, - extra = (_b = slots.extra) === null || _b === void 0 ? void 0 : _b.call(slots), - collapsible - } = props4; - const disabled = collapsible === "disabled"; - const prefixClsValue = prefixCls.value; - const headerCls = classNames_default(`${prefixClsValue}-header`, { - [headerClass]: headerClass, - [`${prefixClsValue}-header-collapsible-only`]: collapsible === "header", - [`${prefixClsValue}-icon-collapsible-only`]: collapsible === "icon" - }); - const itemCls = classNames_default({ - [`${prefixClsValue}-item`]: true, - [`${prefixClsValue}-item-active`]: isActive, - [`${prefixClsValue}-item-disabled`]: disabled, - [`${prefixClsValue}-no-arrow`]: !showArrow, - [`${attrs.class}`]: !!attrs.class - }); - let icon = createVNode("i", { - "class": "arrow" - }, null); - if (showArrow && typeof expandIcon === "function") { - icon = expandIcon(props4); - } - const panelContent = withDirectives(createVNode(PanelContent_default, { - "prefixCls": prefixClsValue, - "isActive": isActive, - "forceRender": forceRender, - "role": accordion ? "tabpanel" : null - }, { - default: slots.default - }), [[vShow, isActive]]); - const transitionProps = _extends({ - appear: false, - css: false - }, openAnimation); - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": itemCls - }), [createVNode("div", { - "class": headerCls, - "onClick": () => !["header", "icon"].includes(collapsible) && handleItemClick(), - "role": accordion ? "tab" : "button", - "tabindex": disabled ? -1 : 0, - "aria-expanded": isActive, - "onKeypress": handleKeyPress - }, [showArrow && icon, createVNode("span", { - "onClick": () => collapsible === "header" && handleItemClick(), - "class": `${prefixClsValue}-header-text` - }, [header]), extra && createVNode("div", { - "class": `${prefixClsValue}-extra` - }, [extra])]), createVNode(transition_default, transitionProps, { - default: () => [!destroyInactivePanel || isActive ? panelContent : null] - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/collapse/index.js -Collapse_default.Panel = CollapsePanel_default; -Collapse_default.install = function(app) { - app.component(Collapse_default.name, Collapse_default); - app.component(CollapsePanel_default.name, CollapsePanel_default); - return app; -}; -var collapse_default2 = Collapse_default; - -// node_modules/ant-design-vue/es/_util/json2mq.js -var camel2hyphen = function(str) { - return str.replace(/[A-Z]/g, function(match3) { - return "-" + match3.toLowerCase(); - }).toLowerCase(); -}; -var isDimension = function(feature) { - const re = /[height|width]$/; - return re.test(feature); -}; -var obj2mq = function(obj) { - let mq = ""; - const features = Object.keys(obj); - features.forEach(function(feature, index3) { - let value = obj[feature]; - feature = camel2hyphen(feature); - if (isDimension(feature) && typeof value === "number") { - value = value + "px"; - } - if (value === true) { - mq += feature; - } else if (value === false) { - mq += "not " + feature; - } else { - mq += "(" + feature + ": " + value + ")"; - } - if (index3 < features.length - 1) { - mq += " and "; - } - }); - return mq; -}; -function json2mq_default(query) { - let mq = ""; - if (typeof query === "string") { - return query; - } - if (query instanceof Array) { - query.forEach(function(q2, index3) { - mq += obj2mq(q2); - if (index3 < query.length - 1) { - mq += ", "; - } - }); - return mq; - } - return obj2mq(query); -} - -// node_modules/ant-design-vue/es/vc-slick/default-props.js -var defaultProps = { - accessibility: { - type: Boolean, - default: true - }, - // 自定义高度 - adaptiveHeight: { - type: Boolean, - default: false - }, - afterChange: vue_types_default.any.def(null), - arrows: { - type: Boolean, - default: true - }, - autoplay: { - type: Boolean, - default: false - }, - autoplaySpeed: vue_types_default.number.def(3e3), - beforeChange: vue_types_default.any.def(null), - centerMode: { - type: Boolean, - default: false - }, - centerPadding: vue_types_default.string.def("50px"), - cssEase: vue_types_default.string.def("ease"), - dots: { - type: Boolean, - default: false - }, - dotsClass: vue_types_default.string.def("slick-dots"), - draggable: { - type: Boolean, - default: true - }, - unslick: { - type: Boolean, - default: false - }, - easing: vue_types_default.string.def("linear"), - edgeFriction: vue_types_default.number.def(0.35), - fade: { - type: Boolean, - default: false - }, - focusOnSelect: { - type: Boolean, - default: false - }, - infinite: { - type: Boolean, - default: true - }, - initialSlide: vue_types_default.number.def(0), - lazyLoad: vue_types_default.any.def(null), - verticalSwiping: { - type: Boolean, - default: false - }, - asNavFor: vue_types_default.any.def(null), - // 圆点hover是否暂停 - pauseOnDotsHover: { - type: Boolean, - default: false - }, - // focus是否暂停 - pauseOnFocus: { - type: Boolean, - default: false - }, - // hover是否暂停 - pauseOnHover: { - type: Boolean, - default: true - }, - responsive: vue_types_default.array, - rows: vue_types_default.number.def(1), - rtl: { - type: Boolean, - default: false - }, - slide: vue_types_default.string.def("div"), - slidesPerRow: vue_types_default.number.def(1), - slidesToScroll: vue_types_default.number.def(1), - slidesToShow: vue_types_default.number.def(1), - speed: vue_types_default.number.def(500), - swipe: { - type: Boolean, - default: true - }, - swipeEvent: vue_types_default.any.def(null), - swipeToSlide: { - type: Boolean, - default: false - }, - touchMove: { - type: Boolean, - default: true - }, - touchThreshold: vue_types_default.number.def(5), - useCSS: { - type: Boolean, - default: true - }, - useTransform: { - type: Boolean, - default: true - }, - variableWidth: { - type: Boolean, - default: false - }, - vertical: { - type: Boolean, - default: false - }, - waitForAnimate: { - type: Boolean, - default: true - }, - children: vue_types_default.array, - __propsSymbol__: vue_types_default.any -}; -var default_props_default = defaultProps; - -// node_modules/ant-design-vue/es/vc-slick/initial-state.js -var initialState = { - animating: false, - autoplaying: null, - currentDirection: 0, - currentLeft: null, - currentSlide: 0, - direction: 1, - dragging: false, - edgeDragged: false, - initialized: false, - lazyLoadedList: [], - listHeight: null, - listWidth: null, - scrolling: false, - slideCount: null, - slideHeight: null, - slideWidth: null, - swipeLeft: null, - swiped: false, - swiping: false, - touchObject: { - startX: 0, - startY: 0, - curX: 0, - curY: 0 - }, - trackStyle: {}, - trackWidth: 0, - targetSlide: 0 -}; -var initial_state_default = initialState; - -// node_modules/ant-design-vue/es/vc-slick/utils/innerSliderUtils.js -function clamp2(number4, lowerBound, upperBound) { - return Math.max(lowerBound, Math.min(number4, upperBound)); -} -var safePreventDefault = (event) => { - const passiveEvents = ["touchstart", "touchmove", "wheel"]; - if (!passiveEvents.includes(event.type)) { - event.preventDefault(); - } -}; -var getOnDemandLazySlides = (spec) => { - const onDemandSlides = []; - const startIndex = lazyStartIndex(spec); - const endIndex = lazyEndIndex(spec); - for (let slideIndex = startIndex; slideIndex < endIndex; slideIndex++) { - if (spec.lazyLoadedList.indexOf(slideIndex) < 0) { - onDemandSlides.push(slideIndex); - } - } - return onDemandSlides; -}; -var lazyStartIndex = (spec) => spec.currentSlide - lazySlidesOnLeft(spec); -var lazyEndIndex = (spec) => spec.currentSlide + lazySlidesOnRight(spec); -var lazySlidesOnLeft = (spec) => spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0; -var lazySlidesOnRight = (spec) => spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow; -var getWidth = (elem) => elem && elem.offsetWidth || 0; -var getHeight = (elem) => elem && elem.offsetHeight || 0; -var getSwipeDirection = function(touchObject) { - let verticalSwiping = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - let swipeAngle; - const xDist = touchObject.startX - touchObject.curX; - const yDist = touchObject.startY - touchObject.curY; - const r3 = Math.atan2(yDist, xDist); - swipeAngle = Math.round(r3 * 180 / Math.PI); - if (swipeAngle < 0) { - swipeAngle = 360 - Math.abs(swipeAngle); - } - if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) { - return "left"; - } - if (swipeAngle >= 135 && swipeAngle <= 225) { - return "right"; - } - if (verticalSwiping === true) { - if (swipeAngle >= 35 && swipeAngle <= 135) { - return "up"; - } else { - return "down"; - } - } - return "vertical"; -}; -var canGoNext = (spec) => { - let canGo = true; - if (!spec.infinite) { - if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) { - canGo = false; - } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) { - canGo = false; - } - } - return canGo; -}; -var extractObject = (spec, keys2) => { - const newObject = {}; - keys2.forEach((key2) => newObject[key2] = spec[key2]); - return newObject; -}; -var initializedState = (spec) => { - const slideCount = spec.children.length; - const listNode = spec.listRef; - const listWidth = Math.ceil(getWidth(listNode)); - const trackNode = spec.trackRef; - const trackWidth = Math.ceil(getWidth(trackNode)); - let slideWidth; - if (!spec.vertical) { - let centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2; - if (typeof spec.centerPadding === "string" && spec.centerPadding.slice(-1) === "%") { - centerPaddingAdj *= listWidth / 100; - } - slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow); - } else { - slideWidth = listWidth; - } - const slideHeight = listNode && getHeight(listNode.querySelector('[data-index="0"]')); - const listHeight = slideHeight * spec.slidesToShow; - let currentSlide = spec.currentSlide === void 0 ? spec.initialSlide : spec.currentSlide; - if (spec.rtl && spec.currentSlide === void 0) { - currentSlide = slideCount - 1 - spec.initialSlide; - } - let lazyLoadedList = spec.lazyLoadedList || []; - const slidesToLoad = getOnDemandLazySlides(_extends(_extends({}, spec), { - currentSlide, - lazyLoadedList - }), spec); - lazyLoadedList = lazyLoadedList.concat(slidesToLoad); - const state = { - slideCount, - slideWidth, - listWidth, - trackWidth, - currentSlide, - slideHeight, - listHeight, - lazyLoadedList - }; - if (spec.autoplaying === null && spec.autoplay) { - state["autoplaying"] = "playing"; - } - return state; -}; -var slideHandler = (spec) => { - const { - waitForAnimate, - animating, - fade, - infinite, - index: index3, - slideCount, - lazyLoad, - currentSlide, - centerMode, - slidesToScroll, - slidesToShow, - useCSS - } = spec; - let { - lazyLoadedList - } = spec; - if (waitForAnimate && animating) return {}; - let animationSlide = index3; - let finalSlide; - let animationLeft; - let finalLeft; - let state = {}; - let nextState = {}; - const targetSlide = infinite ? index3 : clamp2(index3, 0, slideCount - 1); - if (fade) { - if (!infinite && (index3 < 0 || index3 >= slideCount)) return {}; - if (index3 < 0) { - animationSlide = index3 + slideCount; - } else if (index3 >= slideCount) { - animationSlide = index3 - slideCount; - } - if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) { - lazyLoadedList = lazyLoadedList.concat(animationSlide); - } - state = { - animating: true, - currentSlide: animationSlide, - lazyLoadedList, - targetSlide: animationSlide - }; - nextState = { - animating: false, - targetSlide: animationSlide - }; - } else { - finalSlide = animationSlide; - if (animationSlide < 0) { - finalSlide = animationSlide + slideCount; - if (!infinite) finalSlide = 0; - else if (slideCount % slidesToScroll !== 0) { - finalSlide = slideCount - slideCount % slidesToScroll; - } - } else if (!canGoNext(spec) && animationSlide > currentSlide) { - animationSlide = finalSlide = currentSlide; - } else if (centerMode && animationSlide >= slideCount) { - animationSlide = infinite ? slideCount : slideCount - 1; - finalSlide = infinite ? 0 : slideCount - 1; - } else if (animationSlide >= slideCount) { - finalSlide = animationSlide - slideCount; - if (!infinite) finalSlide = slideCount - slidesToShow; - else if (slideCount % slidesToScroll !== 0) finalSlide = 0; - } - if (!infinite && animationSlide + slidesToShow >= slideCount) { - finalSlide = slideCount - slidesToShow; - } - animationLeft = getTrackLeft(_extends(_extends({}, spec), { - slideIndex: animationSlide - })); - finalLeft = getTrackLeft(_extends(_extends({}, spec), { - slideIndex: finalSlide - })); - if (!infinite) { - if (animationLeft === finalLeft) animationSlide = finalSlide; - animationLeft = finalLeft; - } - if (lazyLoad) { - lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_extends(_extends({}, spec), { - currentSlide: animationSlide - }))); - } - if (!useCSS) { - state = { - currentSlide: finalSlide, - trackStyle: getTrackCSS(_extends(_extends({}, spec), { - left: finalLeft - })), - lazyLoadedList, - targetSlide - }; - } else { - state = { - animating: true, - currentSlide: finalSlide, - trackStyle: getTrackAnimateCSS(_extends(_extends({}, spec), { - left: animationLeft - })), - lazyLoadedList, - targetSlide - }; - nextState = { - animating: false, - currentSlide: finalSlide, - trackStyle: getTrackCSS(_extends(_extends({}, spec), { - left: finalLeft - })), - swipeLeft: null, - targetSlide - }; - } - } - return { - state, - nextState - }; -}; -var changeSlide = (spec, options) => { - let previousInt, slideOffset, targetSlide; - const { - slidesToScroll, - slidesToShow, - slideCount, - currentSlide, - targetSlide: previousTargetSlide, - lazyLoad, - infinite - } = spec; - const unevenOffset = slideCount % slidesToScroll !== 0; - const indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll; - if (options.message === "previous") { - slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset; - targetSlide = currentSlide - slideOffset; - if (lazyLoad && !infinite) { - previousInt = currentSlide - slideOffset; - targetSlide = previousInt === -1 ? slideCount - 1 : previousInt; - } - if (!infinite) { - targetSlide = previousTargetSlide - slidesToScroll; - } - } else if (options.message === "next") { - slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset; - targetSlide = currentSlide + slideOffset; - if (lazyLoad && !infinite) { - targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset; - } - if (!infinite) { - targetSlide = previousTargetSlide + slidesToScroll; - } - } else if (options.message === "dots") { - targetSlide = options.index * options.slidesToScroll; - } else if (options.message === "children") { - targetSlide = options.index; - if (infinite) { - const direction = siblingDirection(_extends(_extends({}, spec), { - targetSlide - })); - if (targetSlide > options.currentSlide && direction === "left") { - targetSlide = targetSlide - slideCount; - } else if (targetSlide < options.currentSlide && direction === "right") { - targetSlide = targetSlide + slideCount; - } - } - } else if (options.message === "index") { - targetSlide = Number(options.index); - } - return targetSlide; -}; -var keyHandler = (e3, accessibility, rtl3) => { - if (e3.target.tagName.match("TEXTAREA|INPUT|SELECT") || !accessibility) { - return ""; - } - if (e3.keyCode === 37) return rtl3 ? "next" : "previous"; - if (e3.keyCode === 39) return rtl3 ? "previous" : "next"; - return ""; -}; -var swipeStart = (e3, swipe, draggable) => { - e3.target.tagName === "IMG" && safePreventDefault(e3); - if (!swipe || !draggable && e3.type.indexOf("mouse") !== -1) return ""; - return { - dragging: true, - touchObject: { - startX: e3.touches ? e3.touches[0].pageX : e3.clientX, - startY: e3.touches ? e3.touches[0].pageY : e3.clientY, - curX: e3.touches ? e3.touches[0].pageX : e3.clientX, - curY: e3.touches ? e3.touches[0].pageY : e3.clientY - } - }; -}; -var swipeMove = (e3, spec) => { - const { - scrolling, - animating, - vertical, - swipeToSlide, - verticalSwiping, - rtl: rtl3, - currentSlide, - edgeFriction, - edgeDragged, - onEdge, - swiped, - swiping, - slideCount, - slidesToScroll, - infinite, - touchObject, - swipeEvent, - listHeight, - listWidth - } = spec; - if (scrolling) return; - if (animating) return safePreventDefault(e3); - if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e3); - let swipeLeft; - let state = {}; - const curLeft = getTrackLeft(spec); - touchObject.curX = e3.touches ? e3.touches[0].pageX : e3.clientX; - touchObject.curY = e3.touches ? e3.touches[0].pageY : e3.clientY; - touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2))); - const verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2))); - if (!verticalSwiping && !swiping && verticalSwipeLength > 10) { - return { - scrolling: true - }; - } - if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength; - let positionOffset = (!rtl3 ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1); - if (verticalSwiping) { - positionOffset = touchObject.curY > touchObject.startY ? 1 : -1; - } - const dotCount = Math.ceil(slideCount / slidesToScroll); - const swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping); - let touchSwipeLength = touchObject.swipeLength; - if (!infinite) { - if (currentSlide === 0 && (swipeDirection === "right" || swipeDirection === "down") || currentSlide + 1 >= dotCount && (swipeDirection === "left" || swipeDirection === "up") || !canGoNext(spec) && (swipeDirection === "left" || swipeDirection === "up")) { - touchSwipeLength = touchObject.swipeLength * edgeFriction; - if (edgeDragged === false && onEdge) { - onEdge(swipeDirection); - state["edgeDragged"] = true; - } - } - } - if (!swiped && swipeEvent) { - swipeEvent(swipeDirection); - state["swiped"] = true; - } - if (!vertical) { - if (!rtl3) { - swipeLeft = curLeft + touchSwipeLength * positionOffset; - } else { - swipeLeft = curLeft - touchSwipeLength * positionOffset; - } - } else { - swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset; - } - if (verticalSwiping) { - swipeLeft = curLeft + touchSwipeLength * positionOffset; - } - state = _extends(_extends({}, state), { - touchObject, - swipeLeft, - trackStyle: getTrackCSS(_extends(_extends({}, spec), { - left: swipeLeft - })) - }); - if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) { - return state; - } - if (touchObject.swipeLength > 10) { - state["swiping"] = true; - safePreventDefault(e3); - } - return state; -}; -var swipeEnd = (e3, spec) => { - const { - dragging, - swipe, - touchObject, - listWidth, - touchThreshold, - verticalSwiping, - listHeight, - swipeToSlide, - scrolling, - onSwipe, - targetSlide, - currentSlide, - infinite - } = spec; - if (!dragging) { - if (swipe) safePreventDefault(e3); - return {}; - } - const minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold; - const swipeDirection = getSwipeDirection(touchObject, verticalSwiping); - const state = { - dragging: false, - edgeDragged: false, - scrolling: false, - swiping: false, - swiped: false, - swipeLeft: null, - touchObject: {} - }; - if (scrolling) { - return state; - } - if (!touchObject.swipeLength) { - return state; - } - if (touchObject.swipeLength > minSwipe) { - safePreventDefault(e3); - if (onSwipe) { - onSwipe(swipeDirection); - } - let slideCount, newSlide; - const activeSlide = infinite ? currentSlide : targetSlide; - switch (swipeDirection) { - case "left": - case "up": - newSlide = activeSlide + getSlideCount(spec); - slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide; - state["currentDirection"] = 0; - break; - case "right": - case "down": - newSlide = activeSlide - getSlideCount(spec); - slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide; - state["currentDirection"] = 1; - break; - default: - slideCount = activeSlide; - } - state["triggerSlideHandler"] = slideCount; - } else { - const currentLeft = getTrackLeft(spec); - state["trackStyle"] = getTrackAnimateCSS(_extends(_extends({}, spec), { - left: currentLeft - })); - } - return state; -}; -var getNavigableIndexes = (spec) => { - const max2 = spec.infinite ? spec.slideCount * 2 : spec.slideCount; - let breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0; - let counter = spec.infinite ? spec.slidesToShow * -1 : 0; - const indexes = []; - while (breakpoint < max2) { - indexes.push(breakpoint); - breakpoint = counter + spec.slidesToScroll; - counter += Math.min(spec.slidesToScroll, spec.slidesToShow); - } - return indexes; -}; -var checkNavigable = (spec, index3) => { - const navigables = getNavigableIndexes(spec); - let prevNavigable = 0; - if (index3 > navigables[navigables.length - 1]) { - index3 = navigables[navigables.length - 1]; - } else { - for (const n3 in navigables) { - if (index3 < navigables[n3]) { - index3 = prevNavigable; - break; - } - prevNavigable = navigables[n3]; - } - } - return index3; -}; -var getSlideCount = (spec) => { - const centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0; - if (spec.swipeToSlide) { - let swipedSlide; - const slickList = spec.listRef; - const slides = slickList.querySelectorAll && slickList.querySelectorAll(".slick-slide") || []; - Array.from(slides).every((slide) => { - if (!spec.vertical) { - if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) { - swipedSlide = slide; - return false; - } - } else { - if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) { - swipedSlide = slide; - return false; - } - } - return true; - }); - if (!swipedSlide) { - return 0; - } - const currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide; - const slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1; - return slidesTraversed; - } else { - return spec.slidesToScroll; - } -}; -var checkSpecKeys = (spec, keysArray) => keysArray.reduce((value, key2) => value && spec.hasOwnProperty(key2), true) ? null : console.error("Keys Missing:", spec); -var getTrackCSS = (spec) => { - checkSpecKeys(spec, ["left", "variableWidth", "slideCount", "slidesToShow", "slideWidth"]); - let trackWidth, trackHeight; - const trackChildren = spec.slideCount + 2 * spec.slidesToShow; - if (!spec.vertical) { - trackWidth = getTotalSlides(spec) * spec.slideWidth; - } else { - trackHeight = trackChildren * spec.slideHeight; - } - let style = { - opacity: 1, - transition: "", - WebkitTransition: "" - }; - if (spec.useTransform) { - const WebkitTransform = !spec.vertical ? "translate3d(" + spec.left + "px, 0px, 0px)" : "translate3d(0px, " + spec.left + "px, 0px)"; - const transform4 = !spec.vertical ? "translate3d(" + spec.left + "px, 0px, 0px)" : "translate3d(0px, " + spec.left + "px, 0px)"; - const msTransform = !spec.vertical ? "translateX(" + spec.left + "px)" : "translateY(" + spec.left + "px)"; - style = _extends(_extends({}, style), { - WebkitTransform, - transform: transform4, - msTransform - }); - } else { - if (spec.vertical) { - style["top"] = spec.left; - } else { - style["left"] = spec.left; - } - } - if (spec.fade) style = { - opacity: 1 - }; - if (trackWidth) style.width = trackWidth + "px"; - if (trackHeight) style.height = trackHeight + "px"; - if (window && !window.addEventListener && window.attachEvent) { - if (!spec.vertical) { - style.marginLeft = spec.left + "px"; - } else { - style.marginTop = spec.left + "px"; - } - } - return style; -}; -var getTrackAnimateCSS = (spec) => { - checkSpecKeys(spec, ["left", "variableWidth", "slideCount", "slidesToShow", "slideWidth", "speed", "cssEase"]); - const style = getTrackCSS(spec); - if (spec.useTransform) { - style.WebkitTransition = "-webkit-transform " + spec.speed + "ms " + spec.cssEase; - style.transition = "transform " + spec.speed + "ms " + spec.cssEase; - } else { - if (spec.vertical) { - style.transition = "top " + spec.speed + "ms " + spec.cssEase; - } else { - style.transition = "left " + spec.speed + "ms " + spec.cssEase; - } - } - return style; -}; -var getTrackLeft = (spec) => { - if (spec.unslick) { - return 0; - } - checkSpecKeys(spec, ["slideIndex", "trackRef", "infinite", "centerMode", "slideCount", "slidesToShow", "slidesToScroll", "slideWidth", "listWidth", "variableWidth", "slideHeight"]); - const { - slideIndex, - trackRef, - infinite, - centerMode, - slideCount, - slidesToShow, - slidesToScroll, - slideWidth, - listWidth, - variableWidth, - slideHeight, - fade, - vertical - } = spec; - let slideOffset = 0; - let targetLeft; - let targetSlide; - let verticalOffset = 0; - if (fade || spec.slideCount === 1) { - return 0; - } - let slidesToOffset = 0; - if (infinite) { - slidesToOffset = -getPreClones(spec); - if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) { - slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll); - } - if (centerMode) { - slidesToOffset += parseInt(slidesToShow / 2); - } - } else { - if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) { - slidesToOffset = slidesToShow - slideCount % slidesToScroll; - } - if (centerMode) { - slidesToOffset = parseInt(slidesToShow / 2); - } - } - slideOffset = slidesToOffset * slideWidth; - verticalOffset = slidesToOffset * slideHeight; - if (!vertical) { - targetLeft = slideIndex * slideWidth * -1 + slideOffset; - } else { - targetLeft = slideIndex * slideHeight * -1 + verticalOffset; - } - if (variableWidth === true) { - let targetSlideIndex; - const trackElem = trackRef; - targetSlideIndex = slideIndex + getPreClones(spec); - targetSlide = trackElem && trackElem.childNodes[targetSlideIndex]; - targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0; - if (centerMode === true) { - targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex; - targetSlide = trackElem && trackElem.children[targetSlideIndex]; - targetLeft = 0; - for (let slide = 0; slide < targetSlideIndex; slide++) { - targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth; - } - targetLeft -= parseInt(spec.centerPadding); - targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2; - } - } - return targetLeft; -}; -var getPreClones = (spec) => { - if (spec.unslick || !spec.infinite) { - return 0; - } - if (spec.variableWidth) { - return spec.slideCount; - } - return spec.slidesToShow + (spec.centerMode ? 1 : 0); -}; -var getPostClones = (spec) => { - if (spec.unslick || !spec.infinite) { - return 0; - } - return spec.slideCount; -}; -var getTotalSlides = (spec) => spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec); -var siblingDirection = (spec) => { - if (spec.targetSlide > spec.currentSlide) { - if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) { - return "left"; - } - return "right"; - } else { - if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) { - return "right"; - } - return "left"; - } -}; -var slidesOnRight = (_ref) => { - let { - slidesToShow, - centerMode, - rtl: rtl3, - centerPadding - } = _ref; - if (centerMode) { - let right = (slidesToShow - 1) / 2 + 1; - if (parseInt(centerPadding) > 0) right += 1; - if (rtl3 && slidesToShow % 2 === 0) right += 1; - return right; - } - if (rtl3) { - return 0; - } - return slidesToShow - 1; -}; -var slidesOnLeft = (_ref2) => { - let { - slidesToShow, - centerMode, - rtl: rtl3, - centerPadding - } = _ref2; - if (centerMode) { - let left = (slidesToShow - 1) / 2 + 1; - if (parseInt(centerPadding) > 0) left += 1; - if (!rtl3 && slidesToShow % 2 === 0) left += 1; - return left; - } - if (rtl3) { - return slidesToShow - 1; - } - return 0; -}; -var canUseDOM = () => !!(typeof window !== "undefined" && window.document && window.document.createElement); - -// node_modules/ant-design-vue/es/vc-slick/track.js -var getSlideClasses = (spec) => { - let slickActive, slickCenter; - let centerOffset, index3; - if (spec.rtl) { - index3 = spec.slideCount - 1 - spec.index; - } else { - index3 = spec.index; - } - const slickCloned = index3 < 0 || index3 >= spec.slideCount; - if (spec.centerMode) { - centerOffset = Math.floor(spec.slidesToShow / 2); - slickCenter = (index3 - spec.currentSlide) % spec.slideCount === 0; - if (index3 > spec.currentSlide - centerOffset - 1 && index3 <= spec.currentSlide + centerOffset) { - slickActive = true; - } - } else { - slickActive = spec.currentSlide <= index3 && index3 < spec.currentSlide + spec.slidesToShow; - } - let focusedSlide; - if (spec.targetSlide < 0) { - focusedSlide = spec.targetSlide + spec.slideCount; - } else if (spec.targetSlide >= spec.slideCount) { - focusedSlide = spec.targetSlide - spec.slideCount; - } else { - focusedSlide = spec.targetSlide; - } - const slickCurrent = index3 === focusedSlide; - return { - "slick-slide": true, - "slick-active": slickActive, - "slick-center": slickCenter, - "slick-cloned": slickCloned, - "slick-current": slickCurrent - // dubious in case of RTL - }; -}; -var getSlideStyle = function(spec) { - const style = {}; - if (spec.variableWidth === void 0 || spec.variableWidth === false) { - style.width = spec.slideWidth + (typeof spec.slideWidth === "number" ? "px" : ""); - } - if (spec.fade) { - style.position = "relative"; - if (spec.vertical) { - style.top = -spec.index * parseInt(spec.slideHeight) + "px"; - } else { - style.left = -spec.index * parseInt(spec.slideWidth) + "px"; - } - style.opacity = spec.currentSlide === spec.index ? 1 : 0; - if (spec.useCSS) { - style.transition = "opacity " + spec.speed + "ms " + spec.cssEase + ", visibility " + spec.speed + "ms " + spec.cssEase; - } - } - return style; -}; -var getKey2 = (child, fallbackKey) => child.key + "-" + fallbackKey; -var renderSlides = function(spec, children) { - let key2; - const slides = []; - const preCloneSlides = []; - const postCloneSlides = []; - const childrenCount = children.length; - const startIndex = lazyStartIndex(spec); - const endIndex = lazyEndIndex(spec); - children.forEach((elem, index3) => { - let child; - const childOnClickOptions = { - message: "children", - index: index3, - slidesToScroll: spec.slidesToScroll, - currentSlide: spec.currentSlide - }; - if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index3) >= 0) { - child = elem; - } else { - child = createVNode("div"); - } - const childStyle = getSlideStyle(_extends(_extends({}, spec), { - index: index3 - })); - const slideClass = child.props.class || ""; - let slideClasses = getSlideClasses(_extends(_extends({}, spec), { - index: index3 - })); - slides.push(deepCloneElement(child, { - key: "original" + getKey2(child, index3), - tabindex: "-1", - "data-index": index3, - "aria-hidden": !slideClasses["slick-active"], - class: classNames_default(slideClasses, slideClass), - style: _extends(_extends({ - outline: "none" - }, child.props.style || {}), childStyle), - onClick: () => { - if (spec.focusOnSelect) { - spec.focusOnSelect(childOnClickOptions); - } - } - })); - if (spec.infinite && spec.fade === false) { - const preCloneNo = childrenCount - index3; - if (preCloneNo <= getPreClones(spec) && childrenCount !== spec.slidesToShow) { - key2 = -preCloneNo; - if (key2 >= startIndex) { - child = elem; - } - slideClasses = getSlideClasses(_extends(_extends({}, spec), { - index: key2 - })); - preCloneSlides.push(deepCloneElement(child, { - key: "precloned" + getKey2(child, key2), - class: classNames_default(slideClasses, slideClass), - tabindex: "-1", - "data-index": key2, - "aria-hidden": !slideClasses["slick-active"], - style: _extends(_extends({}, child.props.style || {}), childStyle), - onClick: () => { - if (spec.focusOnSelect) { - spec.focusOnSelect(childOnClickOptions); - } - } - })); - } - if (childrenCount !== spec.slidesToShow) { - key2 = childrenCount + index3; - if (key2 < endIndex) { - child = elem; - } - slideClasses = getSlideClasses(_extends(_extends({}, spec), { - index: key2 - })); - postCloneSlides.push(deepCloneElement(child, { - key: "postcloned" + getKey2(child, key2), - tabindex: "-1", - "data-index": key2, - "aria-hidden": !slideClasses["slick-active"], - class: classNames_default(slideClasses, slideClass), - style: _extends(_extends({}, child.props.style || {}), childStyle), - onClick: () => { - if (spec.focusOnSelect) { - spec.focusOnSelect(childOnClickOptions); - } - } - })); - } - } - }); - if (spec.rtl) { - return preCloneSlides.concat(slides, postCloneSlides).reverse(); - } else { - return preCloneSlides.concat(slides, postCloneSlides); - } -}; -var Track = (_2, _ref) => { - let { - attrs, - slots - } = _ref; - const slides = renderSlides(attrs, flattenChildren(slots === null || slots === void 0 ? void 0 : slots.default())); - const { - onMouseenter, - onMouseover, - onMouseleave - } = attrs; - const mouseEvents = { - onMouseenter, - onMouseover, - onMouseleave - }; - const trackProps = _extends({ - class: "slick-track", - style: attrs.trackStyle - }, mouseEvents); - return createVNode("div", trackProps, [slides]); -}; -Track.inheritAttrs = false; -var track_default = Track; - -// node_modules/ant-design-vue/es/vc-slick/dots.js -var getDotCount = function(spec) { - let dots; - if (spec.infinite) { - dots = Math.ceil(spec.slideCount / spec.slidesToScroll); - } else { - dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1; - } - return dots; -}; -var Dots = (_2, _ref) => { - let { - attrs - } = _ref; - const { - slideCount, - slidesToScroll, - slidesToShow, - infinite, - currentSlide, - appendDots, - customPaging, - clickHandler, - dotsClass, - onMouseenter, - onMouseover, - onMouseleave - } = attrs; - const dotCount = getDotCount({ - slideCount, - slidesToScroll, - slidesToShow, - infinite - }); - const mouseEvents = { - onMouseenter, - onMouseover, - onMouseleave - }; - let dots = []; - for (let i3 = 0; i3 < dotCount; i3++) { - let onClick = function(e3) { - if (e3) { - e3.preventDefault(); - } - clickHandler(dotOptions); - }; - const _rightBound = (i3 + 1) * slidesToScroll - 1; - const rightBound = infinite ? _rightBound : clamp2(_rightBound, 0, slideCount - 1); - const _leftBound = rightBound - (slidesToScroll - 1); - const leftBound = infinite ? _leftBound : clamp2(_leftBound, 0, slideCount - 1); - const className = classNames_default({ - "slick-active": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound - }); - const dotOptions = { - message: "dots", - index: i3, - slidesToScroll, - currentSlide - }; - dots = dots.concat(createVNode("li", { - "key": i3, - "class": className - }, [cloneElement(customPaging({ - i: i3 - }), { - onClick - })])); - } - return cloneElement(appendDots({ - dots - }), _extends({ - class: dotsClass - }, mouseEvents)); -}; -Dots.inheritAttrs = false; -var dots_default = Dots; - -// node_modules/ant-design-vue/es/vc-slick/arrows.js -function noop7() { -} -function handler(options, handle, e3) { - if (e3) { - e3.preventDefault(); - } - handle(options, e3); -} -var PrevArrow = (_2, _ref) => { - let { - attrs - } = _ref; - const { - clickHandler, - infinite, - currentSlide, - slideCount, - slidesToShow - } = attrs; - const prevClasses = { - "slick-arrow": true, - "slick-prev": true - }; - let prevHandler = function(e3) { - handler({ - message: "previous" - }, clickHandler, e3); - }; - if (!infinite && (currentSlide === 0 || slideCount <= slidesToShow)) { - prevClasses["slick-disabled"] = true; - prevHandler = noop7; - } - const prevArrowProps = { - key: "0", - "data-role": "none", - class: prevClasses, - style: { - display: "block" - }, - onClick: prevHandler - }; - const customProps = { - currentSlide, - slideCount - }; - let prevArrow; - if (attrs.prevArrow) { - prevArrow = cloneElement(attrs.prevArrow(_extends(_extends({}, prevArrowProps), customProps)), { - key: "0", - class: prevClasses, - style: { - display: "block" - }, - onClick: prevHandler - }, false); - } else { - prevArrow = createVNode("button", _objectSpread2({ - "key": "0", - "type": "button" - }, prevArrowProps), [" ", createTextVNode("Previous")]); - } - return prevArrow; -}; -PrevArrow.inheritAttrs = false; -var NextArrow = (_2, _ref2) => { - let { - attrs - } = _ref2; - const { - clickHandler, - currentSlide, - slideCount - } = attrs; - const nextClasses = { - "slick-arrow": true, - "slick-next": true - }; - let nextHandler = function(e3) { - handler({ - message: "next" - }, clickHandler, e3); - }; - if (!canGoNext(attrs)) { - nextClasses["slick-disabled"] = true; - nextHandler = noop7; - } - const nextArrowProps = { - key: "1", - "data-role": "none", - class: classNames_default(nextClasses), - style: { - display: "block" - }, - onClick: nextHandler - }; - const customProps = { - currentSlide, - slideCount - }; - let nextArrow; - if (attrs.nextArrow) { - nextArrow = cloneElement(attrs.nextArrow(_extends(_extends({}, nextArrowProps), customProps)), { - key: "1", - class: classNames_default(nextClasses), - style: { - display: "block" - }, - onClick: nextHandler - }, false); - } else { - nextArrow = createVNode("button", _objectSpread2({ - "key": "1", - "type": "button" - }, nextArrowProps), [" ", createTextVNode("Next")]); - } - return nextArrow; -}; -NextArrow.inheritAttrs = false; - -// node_modules/ant-design-vue/es/vc-slick/inner-slider.js -var __rest22 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function noop8() { -} -var inner_slider_default = { - name: "InnerSlider", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: _extends({}, default_props_default), - data() { - this.preProps = _extends({}, this.$props); - this.list = null; - this.track = null; - this.callbackTimers = []; - this.clickable = true; - this.debouncedResize = null; - const ssrState = this.ssrInit(); - return _extends(_extends(_extends({}, initial_state_default), { - currentSlide: this.initialSlide, - slideCount: this.children.length - }), ssrState); - }, - watch: { - autoplay(newValue, oldValue) { - if (!oldValue && newValue) { - this.handleAutoPlay("playing"); - } else if (newValue) { - this.handleAutoPlay("update"); - } else { - this.pause("paused"); - } - }, - __propsSymbol__() { - const nextProps = this.$props; - const spec = _extends(_extends({ - listRef: this.list, - trackRef: this.track - }, nextProps), this.$data); - let setTrackStyle = false; - for (const key2 of Object.keys(this.preProps)) { - if (!nextProps.hasOwnProperty(key2)) { - setTrackStyle = true; - break; - } - if (typeof nextProps[key2] === "object" || typeof nextProps[key2] === "function" || typeof nextProps[key2] === "symbol") { - continue; - } - if (nextProps[key2] !== this.preProps[key2]) { - setTrackStyle = true; - break; - } - } - this.updateState(spec, setTrackStyle, () => { - if (this.currentSlide >= nextProps.children.length) { - this.changeSlide({ - message: "index", - index: nextProps.children.length - nextProps.slidesToShow, - currentSlide: this.currentSlide - }); - } - if (!this.preProps.autoplay && nextProps.autoplay) { - this.handleAutoPlay("playing"); - } else if (nextProps.autoplay) { - this.handleAutoPlay("update"); - } else { - this.pause("paused"); - } - }); - this.preProps = _extends({}, nextProps); - } - }, - mounted() { - this.__emit("init"); - if (this.lazyLoad) { - const slidesToLoad = getOnDemandLazySlides(_extends(_extends({}, this.$props), this.$data)); - if (slidesToLoad.length > 0) { - this.setState((prevState) => ({ - lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad) - })); - this.__emit("lazyLoad", slidesToLoad); - } - } - this.$nextTick(() => { - const spec = _extends({ - listRef: this.list, - trackRef: this.track, - children: this.children - }, this.$props); - this.updateState(spec, true, () => { - this.adaptHeight(); - this.autoplay && this.handleAutoPlay("playing"); - }); - if (this.lazyLoad === "progressive") { - this.lazyLoadTimer = setInterval(this.progressiveLazyLoad, 1e3); - } - this.ro = new ResizeObserver_es_default(() => { - if (this.animating) { - this.onWindowResized(false); - this.callbackTimers.push(setTimeout(() => this.onWindowResized(), this.speed)); - } else { - this.onWindowResized(); - } - }); - this.ro.observe(this.list); - document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"), (slide) => { - slide.onfocus = this.$props.pauseOnFocus ? this.onSlideFocus : null; - slide.onblur = this.$props.pauseOnFocus ? this.onSlideBlur : null; - }); - if (window.addEventListener) { - window.addEventListener("resize", this.onWindowResized); - } else { - window.attachEvent("onresize", this.onWindowResized); - } - }); - }, - beforeUnmount() { - var _a2; - if (this.animationEndCallback) { - clearTimeout(this.animationEndCallback); - } - if (this.lazyLoadTimer) { - clearInterval(this.lazyLoadTimer); - } - if (this.callbackTimers.length) { - this.callbackTimers.forEach((timer) => clearTimeout(timer)); - this.callbackTimers = []; - } - if (window.addEventListener) { - window.removeEventListener("resize", this.onWindowResized); - } else { - window.detachEvent("onresize", this.onWindowResized); - } - if (this.autoplayTimer) { - clearInterval(this.autoplayTimer); - } - (_a2 = this.ro) === null || _a2 === void 0 ? void 0 : _a2.disconnect(); - }, - updated() { - this.checkImagesLoad(); - this.__emit("reInit"); - if (this.lazyLoad) { - const slidesToLoad = getOnDemandLazySlides(_extends(_extends({}, this.$props), this.$data)); - if (slidesToLoad.length > 0) { - this.setState((prevState) => ({ - lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad) - })); - this.__emit("lazyLoad"); - } - } - this.adaptHeight(); - }, - methods: { - listRefHandler(ref2) { - this.list = ref2; - }, - trackRefHandler(ref2) { - this.track = ref2; - }, - adaptHeight() { - if (this.adaptiveHeight && this.list) { - const elem = this.list.querySelector(`[data-index="${this.currentSlide}"]`); - this.list.style.height = getHeight(elem) + "px"; - } - }, - onWindowResized(setTrackStyle) { - if (this.debouncedResize) this.debouncedResize.cancel(); - this.debouncedResize = debounce_default(() => this.resizeWindow(setTrackStyle), 50); - this.debouncedResize(); - }, - resizeWindow() { - let setTrackStyle = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - const isTrackMounted = Boolean(this.track); - if (!isTrackMounted) return; - const spec = _extends(_extends({ - listRef: this.list, - trackRef: this.track, - children: this.children - }, this.$props), this.$data); - this.updateState(spec, setTrackStyle, () => { - if (this.autoplay) { - this.handleAutoPlay("update"); - } else { - this.pause("paused"); - } - }); - this.setState({ - animating: false - }); - clearTimeout(this.animationEndCallback); - delete this.animationEndCallback; - }, - updateState(spec, setTrackStyle, callback) { - const updatedState = initializedState(spec); - spec = _extends(_extends(_extends({}, spec), updatedState), { - slideIndex: updatedState.currentSlide - }); - const targetLeft = getTrackLeft(spec); - spec = _extends(_extends({}, spec), { - left: targetLeft - }); - const trackStyle = getTrackCSS(spec); - if (setTrackStyle || this.children.length !== spec.children.length) { - updatedState["trackStyle"] = trackStyle; - } - this.setState(updatedState, callback); - }, - ssrInit() { - const children = this.children; - if (this.variableWidth) { - let trackWidth2 = 0; - let trackLeft2 = 0; - const childrenWidths = []; - const preClones = getPreClones(_extends(_extends(_extends({}, this.$props), this.$data), { - slideCount: children.length - })); - const postClones = getPostClones(_extends(_extends(_extends({}, this.$props), this.$data), { - slideCount: children.length - })); - children.forEach((child) => { - var _a2, _b; - const childWidth = ((_b = (_a2 = child.props.style) === null || _a2 === void 0 ? void 0 : _a2.width) === null || _b === void 0 ? void 0 : _b.split("px")[0]) || 0; - childrenWidths.push(childWidth); - trackWidth2 += childWidth; - }); - for (let i3 = 0; i3 < preClones; i3++) { - trackLeft2 += childrenWidths[childrenWidths.length - 1 - i3]; - trackWidth2 += childrenWidths[childrenWidths.length - 1 - i3]; - } - for (let i3 = 0; i3 < postClones; i3++) { - trackWidth2 += childrenWidths[i3]; - } - for (let i3 = 0; i3 < this.currentSlide; i3++) { - trackLeft2 += childrenWidths[i3]; - } - const trackStyle2 = { - width: trackWidth2 + "px", - left: -trackLeft2 + "px" - }; - if (this.centerMode) { - const currentWidth = `${childrenWidths[this.currentSlide]}px`; - trackStyle2.left = `calc(${trackStyle2.left} + (100% - ${currentWidth}) / 2 ) `; - } - return { - trackStyle: trackStyle2 - }; - } - const childrenCount = children.length; - const spec = _extends(_extends(_extends({}, this.$props), this.$data), { - slideCount: childrenCount - }); - const slideCount = getPreClones(spec) + getPostClones(spec) + childrenCount; - const trackWidth = 100 / this.slidesToShow * slideCount; - const slideWidth = 100 / slideCount; - let trackLeft = -slideWidth * (getPreClones(spec) + this.currentSlide) * trackWidth / 100; - if (this.centerMode) { - trackLeft += (100 - slideWidth * trackWidth / 100) / 2; - } - const trackStyle = { - width: trackWidth + "%", - left: trackLeft + "%" - }; - return { - slideWidth: slideWidth + "%", - trackStyle - }; - }, - checkImagesLoad() { - const images = this.list && this.list.querySelectorAll && this.list.querySelectorAll(".slick-slide img") || []; - const imagesCount = images.length; - let loadedCount = 0; - Array.prototype.forEach.call(images, (image) => { - const handler2 = () => ++loadedCount && loadedCount >= imagesCount && this.onWindowResized(); - if (!image.onclick) { - image.onclick = () => image.parentNode.focus(); - } else { - const prevClickHandler = image.onclick; - image.onclick = () => { - prevClickHandler(); - image.parentNode.focus(); - }; - } - if (!image.onload) { - if (this.$props.lazyLoad) { - image.onload = () => { - this.adaptHeight(); - this.callbackTimers.push(setTimeout(this.onWindowResized, this.speed)); - }; - } else { - image.onload = handler2; - image.onerror = () => { - handler2(); - this.__emit("lazyLoadError"); - }; - } - } - }); - }, - progressiveLazyLoad() { - const slidesToLoad = []; - const spec = _extends(_extends({}, this.$props), this.$data); - for (let index3 = this.currentSlide; index3 < this.slideCount + getPostClones(spec); index3++) { - if (this.lazyLoadedList.indexOf(index3) < 0) { - slidesToLoad.push(index3); - break; - } - } - for (let index3 = this.currentSlide - 1; index3 >= -getPreClones(spec); index3--) { - if (this.lazyLoadedList.indexOf(index3) < 0) { - slidesToLoad.push(index3); - break; - } - } - if (slidesToLoad.length > 0) { - this.setState((state) => ({ - lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad) - })); - this.__emit("lazyLoad", slidesToLoad); - } else { - if (this.lazyLoadTimer) { - clearInterval(this.lazyLoadTimer); - delete this.lazyLoadTimer; - } - } - }, - slideHandler(index3) { - let dontAnimate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const { - asNavFor, - currentSlide, - beforeChange, - speed, - afterChange - } = this.$props; - const { - state, - nextState - } = slideHandler(_extends(_extends(_extends({ - index: index3 - }, this.$props), this.$data), { - trackRef: this.track, - useCSS: this.useCSS && !dontAnimate - })); - if (!state) return; - beforeChange && beforeChange(currentSlide, state.currentSlide); - const slidesToLoad = state.lazyLoadedList.filter((value) => this.lazyLoadedList.indexOf(value) < 0); - if (this.$attrs.onLazyLoad && slidesToLoad.length > 0) { - this.__emit("lazyLoad", slidesToLoad); - } - if (!this.$props.waitForAnimate && this.animationEndCallback) { - clearTimeout(this.animationEndCallback); - afterChange && afterChange(currentSlide); - delete this.animationEndCallback; - } - this.setState(state, () => { - if (asNavFor && this.asNavForIndex !== index3) { - this.asNavForIndex = index3; - asNavFor.innerSlider.slideHandler(index3); - } - if (!nextState) return; - this.animationEndCallback = setTimeout(() => { - const { - animating - } = nextState, firstBatch = __rest22(nextState, ["animating"]); - this.setState(firstBatch, () => { - this.callbackTimers.push(setTimeout(() => this.setState({ - animating - }), 10)); - afterChange && afterChange(state.currentSlide); - delete this.animationEndCallback; - }); - }, speed); - }); - }, - changeSlide(options) { - let dontAnimate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const spec = _extends(_extends({}, this.$props), this.$data); - const targetSlide = changeSlide(spec, options); - if (targetSlide !== 0 && !targetSlide) return; - if (dontAnimate === true) { - this.slideHandler(targetSlide, dontAnimate); - } else { - this.slideHandler(targetSlide); - } - this.$props.autoplay && this.handleAutoPlay("update"); - if (this.$props.focusOnSelect) { - const nodes = this.list.querySelectorAll(".slick-current"); - nodes[0] && nodes[0].focus(); - } - }, - clickHandler(e3) { - if (this.clickable === false) { - e3.stopPropagation(); - e3.preventDefault(); - } - this.clickable = true; - }, - keyHandler(e3) { - const dir = keyHandler(e3, this.accessibility, this.rtl); - dir !== "" && this.changeSlide({ - message: dir - }); - }, - selectHandler(options) { - this.changeSlide(options); - }, - disableBodyScroll() { - const preventDefault = (e3) => { - e3 = e3 || window.event; - if (e3.preventDefault) e3.preventDefault(); - e3.returnValue = false; - }; - window.ontouchmove = preventDefault; - }, - enableBodyScroll() { - window.ontouchmove = null; - }, - swipeStart(e3) { - if (this.verticalSwiping) { - this.disableBodyScroll(); - } - const state = swipeStart(e3, this.swipe, this.draggable); - state !== "" && this.setState(state); - }, - swipeMove(e3) { - const state = swipeMove(e3, _extends(_extends(_extends({}, this.$props), this.$data), { - trackRef: this.track, - listRef: this.list, - slideIndex: this.currentSlide - })); - if (!state) return; - if (state["swiping"]) { - this.clickable = false; - } - this.setState(state); - }, - swipeEnd(e3) { - const state = swipeEnd(e3, _extends(_extends(_extends({}, this.$props), this.$data), { - trackRef: this.track, - listRef: this.list, - slideIndex: this.currentSlide - })); - if (!state) return; - const triggerSlideHandler = state["triggerSlideHandler"]; - delete state["triggerSlideHandler"]; - this.setState(state); - if (triggerSlideHandler === void 0) return; - this.slideHandler(triggerSlideHandler); - if (this.$props.verticalSwiping) { - this.enableBodyScroll(); - } - }, - touchEnd(e3) { - this.swipeEnd(e3); - this.clickable = true; - }, - slickPrev() { - this.callbackTimers.push(setTimeout(() => this.changeSlide({ - message: "previous" - }), 0)); - }, - slickNext() { - this.callbackTimers.push(setTimeout(() => this.changeSlide({ - message: "next" - }), 0)); - }, - slickGoTo(slide) { - let dontAnimate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - slide = Number(slide); - if (isNaN(slide)) return ""; - this.callbackTimers.push(setTimeout(() => this.changeSlide({ - message: "index", - index: slide, - currentSlide: this.currentSlide - }, dontAnimate), 0)); - }, - play() { - let nextIndex; - if (this.rtl) { - nextIndex = this.currentSlide - this.slidesToScroll; - } else { - if (canGoNext(_extends(_extends({}, this.$props), this.$data))) { - nextIndex = this.currentSlide + this.slidesToScroll; - } else { - return false; - } - } - this.slideHandler(nextIndex); - }, - handleAutoPlay(playType) { - if (this.autoplayTimer) { - clearInterval(this.autoplayTimer); - } - const autoplaying = this.autoplaying; - if (playType === "update") { - if (autoplaying === "hovered" || autoplaying === "focused" || autoplaying === "paused") { - return; - } - } else if (playType === "leave") { - if (autoplaying === "paused" || autoplaying === "focused") { - return; - } - } else if (playType === "blur") { - if (autoplaying === "paused" || autoplaying === "hovered") { - return; - } - } - this.autoplayTimer = setInterval(this.play, this.autoplaySpeed + 50); - this.setState({ - autoplaying: "playing" - }); - }, - pause(pauseType) { - if (this.autoplayTimer) { - clearInterval(this.autoplayTimer); - this.autoplayTimer = null; - } - const autoplaying = this.autoplaying; - if (pauseType === "paused") { - this.setState({ - autoplaying: "paused" - }); - } else if (pauseType === "focused") { - if (autoplaying === "hovered" || autoplaying === "playing") { - this.setState({ - autoplaying: "focused" - }); - } - } else { - if (autoplaying === "playing") { - this.setState({ - autoplaying: "hovered" - }); - } - } - }, - onDotsOver() { - this.autoplay && this.pause("hovered"); - }, - onDotsLeave() { - this.autoplay && this.autoplaying === "hovered" && this.handleAutoPlay("leave"); - }, - onTrackOver() { - this.autoplay && this.pause("hovered"); - }, - onTrackLeave() { - this.autoplay && this.autoplaying === "hovered" && this.handleAutoPlay("leave"); - }, - onSlideFocus() { - this.autoplay && this.pause("focused"); - }, - onSlideBlur() { - this.autoplay && this.autoplaying === "focused" && this.handleAutoPlay("blur"); - }, - customPaging(_ref) { - let { - i: i3 - } = _ref; - return createVNode("button", null, [i3 + 1]); - }, - appendDots(_ref2) { - let { - dots - } = _ref2; - return createVNode("ul", { - "style": { - display: "block" - } - }, [dots]); - } - }, - render() { - const className = classNames_default("slick-slider", this.$attrs.class, { - "slick-vertical": this.vertical, - "slick-initialized": true - }); - const spec = _extends(_extends({}, this.$props), this.$data); - let trackProps = extractObject(spec, ["fade", "cssEase", "speed", "infinite", "centerMode", "focusOnSelect", "currentSlide", "lazyLoad", "lazyLoadedList", "rtl", "slideWidth", "slideHeight", "listHeight", "vertical", "slidesToShow", "slidesToScroll", "slideCount", "trackStyle", "variableWidth", "unslick", "centerPadding", "targetSlide", "useCSS"]); - const { - pauseOnHover - } = this.$props; - trackProps = _extends(_extends({}, trackProps), { - focusOnSelect: this.focusOnSelect && this.clickable ? this.selectHandler : null, - ref: this.trackRefHandler, - onMouseleave: pauseOnHover ? this.onTrackLeave : noop8, - onMouseover: pauseOnHover ? this.onTrackOver : noop8 - }); - let dots; - if (this.dots === true && this.slideCount >= this.slidesToShow) { - let dotProps = extractObject(spec, ["dotsClass", "slideCount", "slidesToShow", "currentSlide", "slidesToScroll", "clickHandler", "children", "infinite", "appendDots"]); - dotProps.customPaging = this.customPaging; - dotProps.appendDots = this.appendDots; - const { - customPaging, - appendDots - } = this.$slots; - if (customPaging) { - dotProps.customPaging = customPaging; - } - if (appendDots) { - dotProps.appendDots = appendDots; - } - const { - pauseOnDotsHover - } = this.$props; - dotProps = _extends(_extends({}, dotProps), { - clickHandler: this.changeSlide, - onMouseover: pauseOnDotsHover ? this.onDotsOver : noop8, - onMouseleave: pauseOnDotsHover ? this.onDotsLeave : noop8 - }); - dots = createVNode(dots_default, dotProps, null); - } - let prevArrow, nextArrow; - const arrowProps = extractObject(spec, ["infinite", "centerMode", "currentSlide", "slideCount", "slidesToShow"]); - arrowProps.clickHandler = this.changeSlide; - const { - prevArrow: prevArrowCustom, - nextArrow: nextArrowCustom - } = this.$slots; - if (prevArrowCustom) { - arrowProps.prevArrow = prevArrowCustom; - } - if (nextArrowCustom) { - arrowProps.nextArrow = nextArrowCustom; - } - if (this.arrows) { - prevArrow = createVNode(PrevArrow, arrowProps, null); - nextArrow = createVNode(NextArrow, arrowProps, null); - } - let verticalHeightStyle = null; - if (this.vertical) { - verticalHeightStyle = { - height: typeof this.listHeight === "number" ? `${this.listHeight}px` : this.listHeight - }; - } - let centerPaddingStyle = null; - if (this.vertical === false) { - if (this.centerMode === true) { - centerPaddingStyle = { - padding: "0px " + this.centerPadding - }; - } - } else { - if (this.centerMode === true) { - centerPaddingStyle = { - padding: this.centerPadding + " 0px" - }; - } - } - const listStyle = _extends(_extends({}, verticalHeightStyle), centerPaddingStyle); - const touchMove = this.touchMove; - let listProps2 = { - ref: this.listRefHandler, - class: "slick-list", - style: listStyle, - onClick: this.clickHandler, - onMousedown: touchMove ? this.swipeStart : noop8, - onMousemove: this.dragging && touchMove ? this.swipeMove : noop8, - onMouseup: touchMove ? this.swipeEnd : noop8, - onMouseleave: this.dragging && touchMove ? this.swipeEnd : noop8, - [supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"]: touchMove ? this.swipeStart : noop8, - [supportsPassive_default ? "onTouchmovePassive" : "onTouchmove"]: this.dragging && touchMove ? this.swipeMove : noop8, - onTouchend: touchMove ? this.touchEnd : noop8, - onTouchcancel: this.dragging && touchMove ? this.swipeEnd : noop8, - onKeydown: this.accessibility ? this.keyHandler : noop8 - }; - let innerSliderProps = { - class: className, - dir: "ltr", - style: this.$attrs.style - }; - if (this.unslick) { - listProps2 = { - class: "slick-list", - ref: this.listRefHandler - }; - innerSliderProps = { - class: className - }; - } - return createVNode("div", innerSliderProps, [!this.unslick ? prevArrow : "", createVNode("div", listProps2, [createVNode(track_default, trackProps, { - default: () => [this.children] - })]), !this.unslick ? nextArrow : "", !this.unslick ? dots : ""]); - } -}; - -// node_modules/ant-design-vue/es/vc-slick/slider.js -var slider_default = defineComponent({ - name: "Slider", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: _extends({}, default_props_default), - data() { - this._responsiveMediaHandlers = []; - return { - breakpoint: null - }; - }, - // handles responsive breakpoints - mounted() { - if (this.responsive) { - const breakpoints = this.responsive.map((breakpt) => breakpt.breakpoint); - breakpoints.sort((x2, y2) => x2 - y2); - breakpoints.forEach((breakpoint, index3) => { - let bQuery; - if (index3 === 0) { - bQuery = json2mq_default({ - minWidth: 0, - maxWidth: breakpoint - }); - } else { - bQuery = json2mq_default({ - minWidth: breakpoints[index3 - 1] + 1, - maxWidth: breakpoint - }); - } - canUseDOM() && this.media(bQuery, () => { - this.setState({ - breakpoint - }); - }); - }); - const query = json2mq_default({ - minWidth: breakpoints.slice(-1)[0] - }); - canUseDOM() && this.media(query, () => { - this.setState({ - breakpoint: null - }); - }); - } - }, - beforeUnmount() { - this._responsiveMediaHandlers.forEach(function(obj) { - obj.mql.removeListener(obj.listener); - }); - }, - methods: { - innerSliderRefHandler(ref2) { - this.innerSlider = ref2; - }, - media(query, handler2) { - const mql = window.matchMedia(query); - const listener = (_ref) => { - let { - matches: matches2 - } = _ref; - if (matches2) { - handler2(); - } - }; - mql.addListener(listener); - listener(mql); - this._responsiveMediaHandlers.push({ - mql, - query, - listener - }); - }, - slickPrev() { - var _a2; - (_a2 = this.innerSlider) === null || _a2 === void 0 ? void 0 : _a2.slickPrev(); - }, - slickNext() { - var _a2; - (_a2 = this.innerSlider) === null || _a2 === void 0 ? void 0 : _a2.slickNext(); - }, - slickGoTo(slide) { - let dontAnimate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var _a2; - (_a2 = this.innerSlider) === null || _a2 === void 0 ? void 0 : _a2.slickGoTo(slide, dontAnimate); - }, - slickPause() { - var _a2; - (_a2 = this.innerSlider) === null || _a2 === void 0 ? void 0 : _a2.pause("paused"); - }, - slickPlay() { - var _a2; - (_a2 = this.innerSlider) === null || _a2 === void 0 ? void 0 : _a2.handleAutoPlay("play"); - } - }, - render() { - var _a2; - let settings; - let newProps; - if (this.breakpoint) { - newProps = this.responsive.filter((resp) => resp.breakpoint === this.breakpoint); - settings = newProps[0].settings === "unslick" ? "unslick" : _extends(_extends({}, this.$props), newProps[0].settings); - } else { - settings = _extends({}, this.$props); - } - if (settings.centerMode) { - if (settings.slidesToScroll > 1 && true) { - console.warn(`slidesToScroll should be equal to 1 in centerMode, you are using ${settings.slidesToScroll}`); - } - settings.slidesToScroll = 1; - } - if (settings.fade) { - if (settings.slidesToShow > 1 && true) { - console.warn(`slidesToShow should be equal to 1 when fade is true, you're using ${settings.slidesToShow}`); - } - if (settings.slidesToScroll > 1 && true) { - console.warn(`slidesToScroll should be equal to 1 when fade is true, you're using ${settings.slidesToScroll}`); - } - settings.slidesToShow = 1; - settings.slidesToScroll = 1; - } - let children = getSlot(this) || []; - children = children.filter((child) => { - if (typeof child === "string") { - return !!child.trim(); - } - return !!child; - }); - if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) { - console.warn(`variableWidth is not supported in case of rows > 1 or slidesPerRow > 1`); - settings.variableWidth = false; - } - const newChildren = []; - let currentWidth = null; - for (let i3 = 0; i3 < children.length; i3 += settings.rows * settings.slidesPerRow) { - const newSlide = []; - for (let j2 = i3; j2 < i3 + settings.rows * settings.slidesPerRow; j2 += settings.slidesPerRow) { - const row = []; - for (let k2 = j2; k2 < j2 + settings.slidesPerRow; k2 += 1) { - if (settings.variableWidth && ((_a2 = children[k2].props) === null || _a2 === void 0 ? void 0 : _a2.style)) { - currentWidth = children[k2].props.style.width; - } - if (k2 >= children.length) break; - row.push(cloneElement(children[k2], { - key: 100 * i3 + 10 * j2 + k2, - tabindex: -1, - style: { - width: `${100 / settings.slidesPerRow}%`, - display: "inline-block" - } - })); - } - newSlide.push(createVNode("div", { - "key": 10 * i3 + j2 - }, [row])); - } - if (settings.variableWidth) { - newChildren.push(createVNode("div", { - "key": i3, - "style": { - width: currentWidth - } - }, [newSlide])); - } else { - newChildren.push(createVNode("div", { - "key": i3 - }, [newSlide])); - } - } - if (settings === "unslick") { - const className = "regular slider " + (this.className || ""); - return createVNode("div", { - "class": className - }, [children]); - } else if (newChildren.length <= settings.slidesToShow) { - settings.unslick = true; - } - const sliderProps2 = _extends(_extends(_extends({}, this.$attrs), settings), { - children: newChildren, - ref: this.innerSliderRefHandler - }); - return createVNode(inner_slider_default, _objectSpread2(_objectSpread2({}, sliderProps2), {}, { - "__propsSymbol__": [] - }), this.$slots); - } -}); - -// node_modules/ant-design-vue/es/vc-slick/index.js -var vc_slick_default = slider_default; - -// node_modules/ant-design-vue/es/carousel/style/index.js -var genCarouselStyle = (token2) => { - const { - componentCls, - antCls, - carouselArrowSize, - carouselDotOffset, - marginXXS - } = token2; - const arrowOffset = -carouselArrowSize * 1.25; - const carouselDotMargin = marginXXS; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - ".slick-slider": { - position: "relative", - display: "block", - boxSizing: "border-box", - touchAction: "pan-y", - WebkitTouchCallout: "none", - WebkitTapHighlightColor: "transparent", - ".slick-track, .slick-list": { - transform: "translate3d(0, 0, 0)", - touchAction: "pan-y" - } - }, - ".slick-list": { - position: "relative", - display: "block", - margin: 0, - padding: 0, - overflow: "hidden", - "&:focus": { - outline: "none" - }, - "&.dragging": { - cursor: "pointer" - }, - ".slick-slide": { - pointerEvents: "none", - // https://github.com/ant-design/ant-design/issues/23294 - [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: { - visibility: "hidden" - }, - "&.slick-active": { - pointerEvents: "auto", - [`input${antCls}-radio-input, input${antCls}-checkbox-input`]: { - visibility: "visible" - } - }, - // fix Carousel content height not match parent node - // when children is empty node - // https://github.com/ant-design/ant-design/issues/25878 - "> div > div": { - verticalAlign: "bottom" - } - } - }, - ".slick-track": { - position: "relative", - top: 0, - insetInlineStart: 0, - display: "block", - "&::before, &::after": { - display: "table", - content: '""' - }, - "&::after": { - clear: "both" - } - }, - ".slick-slide": { - display: "none", - float: "left", - height: "100%", - minHeight: 1, - img: { - display: "block" - }, - "&.dragging img": { - pointerEvents: "none" - } - }, - ".slick-initialized .slick-slide": { - display: "block" - }, - ".slick-vertical .slick-slide": { - display: "block", - height: "auto" - }, - ".slick-arrow.slick-hidden": { - display: "none" - }, - // Arrows - ".slick-prev, .slick-next": { - position: "absolute", - top: "50%", - display: "block", - width: carouselArrowSize, - height: carouselArrowSize, - marginTop: -carouselArrowSize / 2, - padding: 0, - color: "transparent", - fontSize: 0, - lineHeight: 0, - background: "transparent", - border: 0, - outline: "none", - cursor: "pointer", - "&:hover, &:focus": { - color: "transparent", - background: "transparent", - outline: "none", - "&::before": { - opacity: 1 - } - }, - "&.slick-disabled::before": { - opacity: 0.25 - } - }, - ".slick-prev": { - insetInlineStart: arrowOffset, - "&::before": { - content: '"←"' - } - }, - ".slick-next": { - insetInlineEnd: arrowOffset, - "&::before": { - content: '"→"' - } - }, - // Dots - ".slick-dots": { - position: "absolute", - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - zIndex: 15, - display: "flex !important", - justifyContent: "center", - paddingInlineStart: 0, - listStyle: "none", - "&-bottom": { - bottom: carouselDotOffset - }, - "&-top": { - top: carouselDotOffset, - bottom: "auto" - }, - li: { - position: "relative", - display: "inline-block", - flex: "0 1 auto", - boxSizing: "content-box", - width: token2.dotWidth, - height: token2.dotHeight, - marginInline: carouselDotMargin, - padding: 0, - textAlign: "center", - textIndent: -999, - verticalAlign: "top", - transition: `all ${token2.motionDurationSlow}`, - button: { - position: "relative", - display: "block", - width: "100%", - height: token2.dotHeight, - padding: 0, - color: "transparent", - fontSize: 0, - background: token2.colorBgContainer, - border: 0, - borderRadius: 1, - outline: "none", - cursor: "pointer", - opacity: 0.3, - transition: `all ${token2.motionDurationSlow}`, - "&: hover, &:focus": { - opacity: 0.75 - }, - "&::after": { - position: "absolute", - inset: -carouselDotMargin, - content: '""' - } - }, - "&.slick-active": { - width: token2.dotWidthActive, - "& button": { - background: token2.colorBgContainer, - opacity: 1 - }, - "&: hover, &:focus": { - opacity: 1 - } - } - } - } - }) - }; -}; -var genCarouselVerticalStyle = (token2) => { - const { - componentCls, - carouselDotOffset, - marginXXS - } = token2; - const reverseSizeOfDot = { - width: token2.dotHeight, - height: token2.dotWidth - }; - return { - [`${componentCls}-vertical`]: { - ".slick-dots": { - top: "50%", - bottom: "auto", - flexDirection: "column", - width: token2.dotHeight, - height: "auto", - margin: 0, - transform: "translateY(-50%)", - "&-left": { - insetInlineEnd: "auto", - insetInlineStart: carouselDotOffset - }, - "&-right": { - insetInlineEnd: carouselDotOffset, - insetInlineStart: "auto" - }, - li: _extends(_extends({}, reverseSizeOfDot), { - margin: `${marginXXS}px 0`, - verticalAlign: "baseline", - button: reverseSizeOfDot, - "&.slick-active": _extends(_extends({}, reverseSizeOfDot), { - button: reverseSizeOfDot - }) - }) - } - } - }; -}; -var genCarouselRtlStyle = (token2) => { - const { - componentCls - } = token2; - return [{ - [`${componentCls}-rtl`]: { - direction: "rtl", - // Dots - ".slick-dots": { - [`${componentCls}-rtl&`]: { - flexDirection: "row-reverse" - } - } - } - }, { - [`${componentCls}-vertical`]: { - ".slick-dots": { - [`${componentCls}-rtl&`]: { - flexDirection: "column" - } - } - } - }]; -}; -var style_default24 = genComponentStyleHook("Carousel", (token2) => { - const { - controlHeightLG, - controlHeightSM - } = token2; - const carouselToken = merge(token2, { - carouselArrowSize: controlHeightLG / 2, - carouselDotOffset: controlHeightSM / 2 - }); - return [genCarouselStyle(carouselToken), genCarouselVerticalStyle(carouselToken), genCarouselRtlStyle(carouselToken)]; -}, { - dotWidth: 16, - dotHeight: 3, - dotWidthActive: 24 -}); - -// node_modules/ant-design-vue/es/carousel/index.js -var __rest23 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var carouselProps = () => ({ - effect: stringType(), - dots: booleanType(true), - vertical: booleanType(), - autoplay: booleanType(), - easing: String, - beforeChange: functionType(), - afterChange: functionType(), - // style: PropTypes.React.CSSProperties, - prefixCls: String, - accessibility: booleanType(), - nextArrow: vue_types_default.any, - prevArrow: vue_types_default.any, - pauseOnHover: booleanType(), - // className: String, - adaptiveHeight: booleanType(), - arrows: booleanType(false), - autoplaySpeed: Number, - centerMode: booleanType(), - centerPadding: String, - cssEase: String, - dotsClass: String, - draggable: booleanType(false), - fade: booleanType(), - focusOnSelect: booleanType(), - infinite: booleanType(), - initialSlide: Number, - lazyLoad: stringType(), - rtl: booleanType(), - slide: String, - slidesToShow: Number, - slidesToScroll: Number, - speed: Number, - swipe: booleanType(), - swipeToSlide: booleanType(), - swipeEvent: functionType(), - touchMove: booleanType(), - touchThreshold: Number, - variableWidth: booleanType(), - useCSS: booleanType(), - slickGoTo: Number, - responsive: Array, - dotPosition: stringType(), - verticalSwiping: booleanType(false) -}); -var Carousel = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACarousel", - inheritAttrs: false, - props: carouselProps(), - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const slickRef = ref(); - const goTo = function(slide) { - let dontAnimate = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - var _a2; - (_a2 = slickRef.value) === null || _a2 === void 0 ? void 0 : _a2.slickGoTo(slide, dontAnimate); - }; - expose({ - goTo, - autoplay: (palyType) => { - var _a2, _b; - (_b = (_a2 = slickRef.value) === null || _a2 === void 0 ? void 0 : _a2.innerSlider) === null || _b === void 0 ? void 0 : _b.handleAutoPlay(palyType); - }, - prev: () => { - var _a2; - (_a2 = slickRef.value) === null || _a2 === void 0 ? void 0 : _a2.slickPrev(); - }, - next: () => { - var _a2; - (_a2 = slickRef.value) === null || _a2 === void 0 ? void 0 : _a2.slickNext(); - }, - innerSlider: computed(() => { - var _a2; - return (_a2 = slickRef.value) === null || _a2 === void 0 ? void 0 : _a2.innerSlider; - }) - }); - watchEffect(() => { - warning_default2(props4.vertical === void 0, "Carousel", "`vertical` is deprecated, please use `dotPosition` instead."); - }); - const { - prefixCls, - direction - } = useConfigInject_default("carousel", props4); - const [wrapSSR, hashId] = style_default24(prefixCls); - const dotPosition = computed(() => { - if (props4.dotPosition) return props4.dotPosition; - if (props4.vertical !== void 0) return props4.vertical ? "right" : "bottom"; - return "bottom"; - }); - const vertical = computed(() => dotPosition.value === "left" || dotPosition.value === "right"); - const dsClass = computed(() => { - const dotsClass = "slick-dots"; - return classNames_default({ - [dotsClass]: true, - [`${dotsClass}-${dotPosition.value}`]: true, - [`${props4.dotsClass}`]: !!props4.dotsClass - }); - }); - return () => { - const { - dots, - arrows, - draggable, - effect - } = props4; - const { - class: cls, - style - } = attrs, restAttrs = __rest23(attrs, ["class", "style"]); - const fade = effect === "fade" ? true : props4.fade; - const className = classNames_default(prefixCls.value, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-vertical`]: vertical.value, - [`${cls}`]: !!cls - }, hashId.value); - return wrapSSR(createVNode("div", { - "class": className, - "style": style - }, [createVNode(vc_slick_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": slickRef - }, props4), restAttrs), {}, { - "dots": !!dots, - "dotsClass": dsClass.value, - "arrows": arrows, - "draggable": draggable, - "fade": fade, - "vertical": vertical.value - }), slots)])); - }; - } -}); -var carousel_default = withInstall(Carousel); - -// node_modules/ant-design-vue/es/vc-cascader/utils/commonUtil.js -var VALUE_SPLIT = "__RC_CASCADER_SPLIT__"; -var SHOW_PARENT = "SHOW_PARENT"; -var SHOW_CHILD = "SHOW_CHILD"; -function toPathKey(value) { - return value.join(VALUE_SPLIT); -} -function toPathKeys(value) { - return value.map(toPathKey); -} -function toPathValueStr(pathKey) { - return pathKey.split(VALUE_SPLIT); -} -function fillFieldNames2(fieldNames) { - const { - label, - value, - children - } = fieldNames || {}; - const val = value || "value"; - return { - label: label || "label", - value: val, - key: val, - children: children || "children" - }; -} -function isLeaf(option, fieldNames) { - var _a2, _b; - return (_a2 = option.isLeaf) !== null && _a2 !== void 0 ? _a2 : !((_b = option[fieldNames.children]) === null || _b === void 0 ? void 0 : _b.length); -} -function scrollIntoParentView(element) { - const parent2 = element.parentElement; - if (!parent2) { - return; - } - const elementToParent = element.offsetTop - parent2.offsetTop; - if (elementToParent - parent2.scrollTop < 0) { - parent2.scrollTo({ - top: elementToParent - }); - } else if (elementToParent + element.offsetHeight - parent2.scrollTop > parent2.offsetHeight) { - parent2.scrollTo({ - top: elementToParent + element.offsetHeight - parent2.offsetHeight - }); - } -} - -// node_modules/ant-design-vue/es/vc-tree/contextTypes.js -var TreeContextKey = Symbol("TreeContextKey"); -var TreeContext = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TreeContext", - props: { - value: { - type: Object - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - provide(TreeContextKey, computed(() => props4.value)); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var useInjectTreeContext = () => { - return inject(TreeContextKey, computed(() => ({}))); -}; -var KeysStateKey = Symbol("KeysStateKey"); -var useProvideKeysState = (state) => { - provide(KeysStateKey, state); -}; -var useInjectKeysState = () => { - return inject(KeysStateKey, { - expandedKeys: shallowRef([]), - selectedKeys: shallowRef([]), - loadedKeys: shallowRef([]), - loadingKeys: shallowRef([]), - checkedKeys: shallowRef([]), - halfCheckedKeys: shallowRef([]), - expandedKeysSet: computed(() => /* @__PURE__ */ new Set()), - selectedKeysSet: computed(() => /* @__PURE__ */ new Set()), - loadedKeysSet: computed(() => /* @__PURE__ */ new Set()), - loadingKeysSet: computed(() => /* @__PURE__ */ new Set()), - checkedKeysSet: computed(() => /* @__PURE__ */ new Set()), - halfCheckedKeysSet: computed(() => /* @__PURE__ */ new Set()), - flattenNodes: shallowRef([]) - }); -}; - -// node_modules/ant-design-vue/es/vc-tree/Indent.js -var Indent = (_ref) => { - let { - prefixCls, - level, - isStart, - isEnd - } = _ref; - const baseClassName = `${prefixCls}-indent-unit`; - const list = []; - for (let i3 = 0; i3 < level; i3 += 1) { - list.push(createVNode("span", { - "key": i3, - "class": { - [baseClassName]: true, - [`${baseClassName}-start`]: isStart[i3], - [`${baseClassName}-end`]: isEnd[i3] - } - }, null)); - } - return createVNode("span", { - "aria-hidden": "true", - "class": `${prefixCls}-indent` - }, [list]); -}; -var Indent_default = Indent; - -// node_modules/ant-design-vue/es/vc-tree/props.js -var treeNodeProps = { - eventKey: [String, Number], - prefixCls: String, - // By parent - // expanded: { type: Boolean, default: undefined }, - // selected: { type: Boolean, default: undefined }, - // checked: { type: Boolean, default: undefined }, - // loaded: { type: Boolean, default: undefined }, - // loading: { type: Boolean, default: undefined }, - // halfChecked: { type: Boolean, default: undefined }, - // dragOver: { type: Boolean, default: undefined }, - // dragOverGapTop: { type: Boolean, default: undefined }, - // dragOverGapBottom: { type: Boolean, default: undefined }, - // pos: String, - title: vue_types_default.any, - /** New added in Tree for easy data access */ - data: { - type: Object, - default: void 0 - }, - parent: { - type: Object, - default: void 0 - }, - isStart: { - type: Array - }, - isEnd: { - type: Array - }, - active: { - type: Boolean, - default: void 0 - }, - onMousemove: { - type: Function - }, - // By user - isLeaf: { - type: Boolean, - default: void 0 - }, - checkable: { - type: Boolean, - default: void 0 - }, - selectable: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - disableCheckbox: { - type: Boolean, - default: void 0 - }, - icon: vue_types_default.any, - switcherIcon: vue_types_default.any, - domRef: { - type: Function - } -}; -var nodeListProps = { - prefixCls: { - type: String - }, - // data: { type: Array as PropType }, - motion: { - type: Object - }, - focusable: { - type: Boolean - }, - activeItem: { - type: Object - }, - focused: { - type: Boolean - }, - tabindex: { - type: Number - }, - checkable: { - type: Boolean - }, - selectable: { - type: Boolean - }, - disabled: { - type: Boolean - }, - // expandedKeys: { type: Array as PropType }, - // selectedKeys: { type: Array as PropType }, - // checkedKeys: { type: Array as PropType }, - // loadedKeys: { type: Array as PropType }, - // loadingKeys: { type: Array as PropType }, - // halfCheckedKeys: { type: Array as PropType }, - // keyEntities: { type: Object as PropType>> }, - // dragging: { type: Boolean as PropType }, - // dragOverNodeKey: { type: [String, Number] as PropType }, - // dropPosition: { type: Number as PropType }, - // Virtual list - height: { - type: Number - }, - itemHeight: { - type: Number - }, - virtual: { - type: Boolean - }, - onScroll: { - type: Function - }, - onKeydown: { - type: Function - }, - onFocus: { - type: Function - }, - onBlur: { - type: Function - }, - onActiveChange: { - type: Function - }, - onContextmenu: { - type: Function - }, - onListChangeStart: { - type: Function - }, - onListChangeEnd: { - type: Function - } -}; -var treeProps = () => ({ - prefixCls: String, - focusable: { - type: Boolean, - default: void 0 - }, - activeKey: [Number, String], - tabindex: Number, - children: vue_types_default.any, - treeData: { - type: Array - }, - fieldNames: { - type: Object - }, - showLine: { - type: [Boolean, Object], - default: void 0 - }, - showIcon: { - type: Boolean, - default: void 0 - }, - icon: vue_types_default.any, - selectable: { - type: Boolean, - default: void 0 - }, - expandAction: [String, Boolean], - disabled: { - type: Boolean, - default: void 0 - }, - multiple: { - type: Boolean, - default: void 0 - }, - checkable: { - type: Boolean, - default: void 0 - }, - checkStrictly: { - type: Boolean, - default: void 0 - }, - draggable: { - type: [Function, Boolean] - }, - defaultExpandParent: { - type: Boolean, - default: void 0 - }, - autoExpandParent: { - type: Boolean, - default: void 0 - }, - defaultExpandAll: { - type: Boolean, - default: void 0 - }, - defaultExpandedKeys: { - type: Array - }, - expandedKeys: { - type: Array - }, - defaultCheckedKeys: { - type: Array - }, - checkedKeys: { - type: [Object, Array] - }, - defaultSelectedKeys: { - type: Array - }, - selectedKeys: { - type: Array - }, - allowDrop: { - type: Function - }, - dropIndicatorRender: { - type: Function - }, - onFocus: { - type: Function - }, - onBlur: { - type: Function - }, - onKeydown: { - type: Function - }, - onContextmenu: { - type: Function - }, - onClick: { - type: Function - }, - onDblclick: { - type: Function - }, - onScroll: { - type: Function - }, - onExpand: { - type: Function - }, - onCheck: { - type: Function - }, - onSelect: { - type: Function - }, - onLoad: { - type: Function - }, - loadData: { - type: Function - }, - loadedKeys: { - type: Array - }, - onMouseenter: { - type: Function - }, - onMouseleave: { - type: Function - }, - onRightClick: { - type: Function - }, - onDragstart: { - type: Function - }, - onDragenter: { - type: Function - }, - onDragover: { - type: Function - }, - onDragleave: { - type: Function - }, - onDragend: { - type: Function - }, - onDrop: { - type: Function - }, - /** - * Used for `rc-tree-select` only. - * Do not use in your production code directly since this will be refactor. - */ - onActiveChange: { - type: Function - }, - filterTreeNode: { - type: Function - }, - motion: vue_types_default.any, - switcherIcon: vue_types_default.any, - // Virtual List - height: Number, - itemHeight: Number, - virtual: { - type: Boolean, - default: void 0 - }, - // direction for drag logic - direction: { - type: String - }, - rootClassName: String, - rootStyle: Object -}); - -// node_modules/ant-design-vue/es/vc-tree/TreeNode.js -var __rest24 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var ICON_OPEN = "open"; -var ICON_CLOSE = "close"; -var defaultTitle = "---"; -var TreeNode_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATreeNode", - inheritAttrs: false, - props: treeNodeProps, - isTreeNode: 1, - setup(props4, _ref) { - let { - attrs, - slots, - expose - } = _ref; - warning(!("slots" in props4.data), `treeData slots is deprecated, please use ${Object.keys(props4.data.slots || {}).map((key2) => "`v-slot:" + key2 + "` ")}instead`); - const dragNodeHighlight = shallowRef(false); - const context2 = useInjectTreeContext(); - const { - expandedKeysSet, - selectedKeysSet, - loadedKeysSet, - loadingKeysSet, - checkedKeysSet, - halfCheckedKeysSet - } = useInjectKeysState(); - const { - dragOverNodeKey, - dropPosition, - keyEntities - } = context2.value; - const mergedTreeNodeProps = computed(() => { - return getTreeNodeProps(props4.eventKey, { - expandedKeysSet: expandedKeysSet.value, - selectedKeysSet: selectedKeysSet.value, - loadedKeysSet: loadedKeysSet.value, - loadingKeysSet: loadingKeysSet.value, - checkedKeysSet: checkedKeysSet.value, - halfCheckedKeysSet: halfCheckedKeysSet.value, - dragOverNodeKey, - dropPosition, - keyEntities - }); - }); - const expanded = eagerComputed(() => mergedTreeNodeProps.value.expanded); - const selected = eagerComputed(() => mergedTreeNodeProps.value.selected); - const checked = eagerComputed(() => mergedTreeNodeProps.value.checked); - const loaded = eagerComputed(() => mergedTreeNodeProps.value.loaded); - const loading = eagerComputed(() => mergedTreeNodeProps.value.loading); - const halfChecked = eagerComputed(() => mergedTreeNodeProps.value.halfChecked); - const dragOver = eagerComputed(() => mergedTreeNodeProps.value.dragOver); - const dragOverGapTop = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapTop); - const dragOverGapBottom = eagerComputed(() => mergedTreeNodeProps.value.dragOverGapBottom); - const pos = eagerComputed(() => mergedTreeNodeProps.value.pos); - const selectHandle = shallowRef(); - const hasChildren = computed(() => { - const { - eventKey - } = props4; - const { - keyEntities: keyEntities2 - } = context2.value; - const { - children - } = keyEntities2[eventKey] || {}; - return !!(children || []).length; - }); - const isLeaf2 = computed(() => { - const { - isLeaf: isLeaf3 - } = props4; - const { - loadData - } = context2.value; - const has2 = hasChildren.value; - if (isLeaf3 === false) { - return false; - } - return isLeaf3 || !loadData && !has2 || loadData && loaded.value && !has2; - }); - const nodeState = computed(() => { - if (isLeaf2.value) { - return null; - } - return expanded.value ? ICON_OPEN : ICON_CLOSE; - }); - const isDisabled = computed(() => { - const { - disabled - } = props4; - const { - disabled: treeDisabled - } = context2.value; - return !!(treeDisabled || disabled); - }); - const isCheckable = computed(() => { - const { - checkable - } = props4; - const { - checkable: treeCheckable - } = context2.value; - if (!treeCheckable || checkable === false) return false; - return treeCheckable; - }); - const isSelectable = computed(() => { - const { - selectable - } = props4; - const { - selectable: treeSelectable - } = context2.value; - if (typeof selectable === "boolean") { - return selectable; - } - return treeSelectable; - }); - const renderArgsData = computed(() => { - const { - data, - active, - checkable, - disableCheckbox, - disabled, - selectable - } = props4; - return _extends(_extends({ - active, - checkable, - disableCheckbox, - disabled, - selectable - }, data), { - dataRef: data, - data, - isLeaf: isLeaf2.value, - checked: checked.value, - expanded: expanded.value, - loading: loading.value, - selected: selected.value, - halfChecked: halfChecked.value - }); - }); - const instance = getCurrentInstance(); - const eventData = computed(() => { - const { - eventKey - } = props4; - const { - keyEntities: keyEntities2 - } = context2.value; - const { - parent: parent2 - } = keyEntities2[eventKey] || {}; - return _extends(_extends({}, convertNodePropsToEventData(_extends({}, props4, mergedTreeNodeProps.value))), { - parent: parent2 - }); - }); - const dragNodeEvent = reactive({ - eventData, - eventKey: computed(() => props4.eventKey), - selectHandle, - pos, - key: instance.vnode.key - }); - expose(dragNodeEvent); - const onSelectorDoubleClick = (e3) => { - const { - onNodeDoubleClick - } = context2.value; - onNodeDoubleClick(e3, eventData.value); - }; - const onSelect = (e3) => { - if (isDisabled.value) return; - const { - onNodeSelect - } = context2.value; - e3.preventDefault(); - onNodeSelect(e3, eventData.value); - }; - const onCheck = (e3) => { - if (isDisabled.value) return; - const { - disableCheckbox - } = props4; - const { - onNodeCheck - } = context2.value; - if (!isCheckable.value || disableCheckbox) return; - e3.preventDefault(); - const targetChecked = !checked.value; - onNodeCheck(e3, eventData.value, targetChecked); - }; - const onSelectorClick = (e3) => { - const { - onNodeClick - } = context2.value; - onNodeClick(e3, eventData.value); - if (isSelectable.value) { - onSelect(e3); - } else { - onCheck(e3); - } - }; - const onMouseEnter = (e3) => { - const { - onNodeMouseEnter - } = context2.value; - onNodeMouseEnter(e3, eventData.value); - }; - const onMouseLeave = (e3) => { - const { - onNodeMouseLeave - } = context2.value; - onNodeMouseLeave(e3, eventData.value); - }; - const onContextmenu = (e3) => { - const { - onNodeContextMenu - } = context2.value; - onNodeContextMenu(e3, eventData.value); - }; - const onDragStart = (e3) => { - const { - onNodeDragStart - } = context2.value; - e3.stopPropagation(); - dragNodeHighlight.value = true; - onNodeDragStart(e3, dragNodeEvent); - try { - e3.dataTransfer.setData("text/plain", ""); - } catch (error) { - } - }; - const onDragEnter = (e3) => { - const { - onNodeDragEnter - } = context2.value; - e3.preventDefault(); - e3.stopPropagation(); - onNodeDragEnter(e3, dragNodeEvent); - }; - const onDragOver = (e3) => { - const { - onNodeDragOver - } = context2.value; - e3.preventDefault(); - e3.stopPropagation(); - onNodeDragOver(e3, dragNodeEvent); - }; - const onDragLeave = (e3) => { - const { - onNodeDragLeave - } = context2.value; - e3.stopPropagation(); - onNodeDragLeave(e3, dragNodeEvent); - }; - const onDragEnd = (e3) => { - const { - onNodeDragEnd - } = context2.value; - e3.stopPropagation(); - dragNodeHighlight.value = false; - onNodeDragEnd(e3, dragNodeEvent); - }; - const onDrop = (e3) => { - const { - onNodeDrop - } = context2.value; - e3.preventDefault(); - e3.stopPropagation(); - dragNodeHighlight.value = false; - onNodeDrop(e3, dragNodeEvent); - }; - const onExpand = (e3) => { - const { - onNodeExpand - } = context2.value; - if (loading.value) return; - onNodeExpand(e3, eventData.value); - }; - const isDraggable = () => { - const { - data - } = props4; - const { - draggable - } = context2.value; - return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data))); - }; - const renderDragHandler = () => { - const { - draggable, - prefixCls - } = context2.value; - return draggable && (draggable === null || draggable === void 0 ? void 0 : draggable.icon) ? createVNode("span", { - "class": `${prefixCls}-draggable-icon` - }, [draggable.icon]) : null; - }; - const renderSwitcherIconDom = () => { - var _a2, _b, _c; - const { - switcherIcon: switcherIconFromProps = slots.switcherIcon || ((_a2 = context2.value.slots) === null || _a2 === void 0 ? void 0 : _a2[(_c = (_b = props4.data) === null || _b === void 0 ? void 0 : _b.slots) === null || _c === void 0 ? void 0 : _c.switcherIcon]) - } = props4; - const { - switcherIcon: switcherIconFromCtx - } = context2.value; - const switcherIcon = switcherIconFromProps || switcherIconFromCtx; - if (typeof switcherIcon === "function") { - return switcherIcon(renderArgsData.value); - } - return switcherIcon; - }; - const syncLoadData = () => { - const { - loadData, - onNodeLoad - } = context2.value; - if (loading.value) { - return; - } - if (loadData && expanded.value && !isLeaf2.value) { - if (!hasChildren.value && !loaded.value) { - onNodeLoad(eventData.value); - } - } - }; - onMounted(() => { - syncLoadData(); - }); - onUpdated(() => { - syncLoadData(); - }); - const renderSwitcher = () => { - const { - prefixCls - } = context2.value; - const switcherIconDom = renderSwitcherIconDom(); - if (isLeaf2.value) { - return switcherIconDom !== false ? createVNode("span", { - "class": classNames_default(`${prefixCls}-switcher`, `${prefixCls}-switcher-noop`) - }, [switcherIconDom]) : null; - } - const switcherCls = classNames_default(`${prefixCls}-switcher`, `${prefixCls}-switcher_${expanded.value ? ICON_OPEN : ICON_CLOSE}`); - return switcherIconDom !== false ? createVNode("span", { - "onClick": onExpand, - "class": switcherCls - }, [switcherIconDom]) : null; - }; - const renderCheckbox = () => { - var _a2, _b; - const { - disableCheckbox - } = props4; - const { - prefixCls - } = context2.value; - const disabled = isDisabled.value; - const checkable = isCheckable.value; - if (!checkable) return null; - return createVNode("span", { - "class": classNames_default(`${prefixCls}-checkbox`, checked.value && `${prefixCls}-checkbox-checked`, !checked.value && halfChecked.value && `${prefixCls}-checkbox-indeterminate`, (disabled || disableCheckbox) && `${prefixCls}-checkbox-disabled`), - "onClick": onCheck - }, [(_b = (_a2 = context2.value).customCheckable) === null || _b === void 0 ? void 0 : _b.call(_a2)]); - }; - const renderIcon2 = () => { - const { - prefixCls - } = context2.value; - return createVNode("span", { - "class": classNames_default(`${prefixCls}-iconEle`, `${prefixCls}-icon__${nodeState.value || "docu"}`, loading.value && `${prefixCls}-icon_loading`) - }, null); - }; - const renderDropIndicator = () => { - const { - disabled, - eventKey - } = props4; - const { - draggable, - dropLevelOffset, - dropPosition: dropPosition2, - prefixCls, - indent, - dropIndicatorRender: dropIndicatorRender2, - dragOverNodeKey: dragOverNodeKey2, - direction - } = context2.value; - const rootDraggable = draggable !== false; - const showIndicator = !disabled && rootDraggable && dragOverNodeKey2 === eventKey; - return showIndicator ? dropIndicatorRender2({ - dropPosition: dropPosition2, - dropLevelOffset, - indent, - prefixCls, - direction - }) : null; - }; - const renderSelector = () => { - var _a2, _b, _c, _d, _e, _f; - const { - // title = slots.title || - // context.value.slots?.[props.data?.slots?.title] || - // context.value.slots?.title, - // selected, - icon = slots.icon, - // loading, - data - } = props4; - const title = slots.title || ((_a2 = context2.value.slots) === null || _a2 === void 0 ? void 0 : _a2[(_c = (_b = props4.data) === null || _b === void 0 ? void 0 : _b.slots) === null || _c === void 0 ? void 0 : _c.title]) || ((_d = context2.value.slots) === null || _d === void 0 ? void 0 : _d.title) || props4.title; - const { - prefixCls, - showIcon, - icon: treeIcon, - loadData - // slots: contextSlots, - } = context2.value; - const disabled = isDisabled.value; - const wrapClass = `${prefixCls}-node-content-wrapper`; - let $icon; - if (showIcon) { - const currentIcon = icon || ((_e = context2.value.slots) === null || _e === void 0 ? void 0 : _e[(_f = data === null || data === void 0 ? void 0 : data.slots) === null || _f === void 0 ? void 0 : _f.icon]) || treeIcon; - $icon = currentIcon ? createVNode("span", { - "class": classNames_default(`${prefixCls}-iconEle`, `${prefixCls}-icon__customize`) - }, [typeof currentIcon === "function" ? currentIcon(renderArgsData.value) : currentIcon]) : renderIcon2(); - } else if (loadData && loading.value) { - $icon = renderIcon2(); - } - let titleNode; - if (typeof title === "function") { - titleNode = title(renderArgsData.value); - } else { - titleNode = title; - } - titleNode = titleNode === void 0 ? defaultTitle : titleNode; - const $title = createVNode("span", { - "class": `${prefixCls}-title` - }, [titleNode]); - return createVNode("span", { - "ref": selectHandle, - "title": typeof title === "string" ? title : "", - "class": classNames_default(`${wrapClass}`, `${wrapClass}-${nodeState.value || "normal"}`, !disabled && (selected.value || dragNodeHighlight.value) && `${prefixCls}-node-selected`), - "onMouseenter": onMouseEnter, - "onMouseleave": onMouseLeave, - "onContextmenu": onContextmenu, - "onClick": onSelectorClick, - "onDblclick": onSelectorDoubleClick - }, [$icon, $title, renderDropIndicator()]); - }; - return () => { - const _a2 = _extends(_extends({}, props4), attrs), { - eventKey, - isLeaf: isLeaf3, - isStart, - isEnd, - domRef, - active, - data, - onMousemove, - selectable - } = _a2, otherProps = __rest24(_a2, ["eventKey", "isLeaf", "isStart", "isEnd", "domRef", "active", "data", "onMousemove", "selectable"]); - const { - prefixCls, - filterTreeNode, - keyEntities: keyEntities2, - dropContainerKey, - dropTargetKey, - draggingNodeKey - } = context2.value; - const disabled = isDisabled.value; - const dataOrAriaAttributeProps = pickAttrs(otherProps, { - aria: true, - data: true - }); - const { - level - } = keyEntities2[eventKey] || {}; - const isEndNode = isEnd[isEnd.length - 1]; - const mergedDraggable = isDraggable(); - const draggableWithoutDisabled = !disabled && mergedDraggable; - const dragging = draggingNodeKey === eventKey; - const ariaSelected = selectable !== void 0 ? { - "aria-selected": !!selectable - } : void 0; - return createVNode("div", _objectSpread2(_objectSpread2({ - "ref": domRef, - "class": classNames_default(attrs.class, `${prefixCls}-treenode`, { - [`${prefixCls}-treenode-disabled`]: disabled, - [`${prefixCls}-treenode-switcher-${expanded.value ? "open" : "close"}`]: !isLeaf3, - [`${prefixCls}-treenode-checkbox-checked`]: checked.value, - [`${prefixCls}-treenode-checkbox-indeterminate`]: halfChecked.value, - [`${prefixCls}-treenode-selected`]: selected.value, - [`${prefixCls}-treenode-loading`]: loading.value, - [`${prefixCls}-treenode-active`]: active, - [`${prefixCls}-treenode-leaf-last`]: isEndNode, - [`${prefixCls}-treenode-draggable`]: draggableWithoutDisabled, - dragging, - "drop-target": dropTargetKey === eventKey, - "drop-container": dropContainerKey === eventKey, - "drag-over": !disabled && dragOver.value, - "drag-over-gap-top": !disabled && dragOverGapTop.value, - "drag-over-gap-bottom": !disabled && dragOverGapBottom.value, - "filter-node": filterTreeNode && filterTreeNode(eventData.value) - }), - "style": attrs.style, - "draggable": draggableWithoutDisabled, - "aria-grabbed": dragging, - "onDragstart": draggableWithoutDisabled ? onDragStart : void 0, - "onDragenter": mergedDraggable ? onDragEnter : void 0, - "onDragover": mergedDraggable ? onDragOver : void 0, - "onDragleave": mergedDraggable ? onDragLeave : void 0, - "onDrop": mergedDraggable ? onDrop : void 0, - "onDragend": mergedDraggable ? onDragEnd : void 0, - "onMousemove": onMousemove - }, ariaSelected), dataOrAriaAttributeProps), [createVNode(Indent_default, { - "prefixCls": prefixCls, - "level": level, - "isStart": isStart, - "isEnd": isEnd - }, null), renderDragHandler(), renderSwitcher(), renderCheckbox(), renderSelector()]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/util.js -function arrDel(list, value) { - if (!list) return []; - const clone3 = list.slice(); - const index3 = clone3.indexOf(value); - if (index3 >= 0) { - clone3.splice(index3, 1); - } - return clone3; -} -function arrAdd(list, value) { - const clone3 = (list || []).slice(); - if (clone3.indexOf(value) === -1) { - clone3.push(value); - } - return clone3; -} -function posToArr(pos) { - return pos.split("-"); -} -function getPosition(level, index3) { - return `${level}-${index3}`; -} -function isTreeNode(node2) { - return node2 && node2.type && node2.type.isTreeNode; -} -function getDragChildrenKeys(dragNodeKey, keyEntities) { - const dragChildrenKeys = []; - const entity = keyEntities[dragNodeKey]; - function dig() { - let list = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - list.forEach((_ref) => { - let { - key: key2, - children - } = _ref; - dragChildrenKeys.push(key2); - dig(children); - }); - } - dig(entity.children); - return dragChildrenKeys; -} -function isLastChild(treeNodeEntity) { - if (treeNodeEntity.parent) { - const posArr = posToArr(treeNodeEntity.pos); - return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1; - } - return false; -} -function isFirstChild(treeNodeEntity) { - const posArr = posToArr(treeNodeEntity.pos); - return Number(posArr[posArr.length - 1]) === 0; -} -function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop, flattenedNodes, keyEntities, expandKeysSet, direction) { - var _a2; - const { - clientX, - clientY - } = event; - const { - top, - height - } = event.target.getBoundingClientRect(); - const horizontalMouseOffset = (direction === "rtl" ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX); - const rawDropLevelOffset = (horizontalMouseOffset - 12) / indent; - let abstractDropNodeEntity = keyEntities[targetNode.eventKey]; - if (clientY < top + height / 2) { - const nodeIndex = flattenedNodes.findIndex((flattenedNode) => flattenedNode.key === abstractDropNodeEntity.key); - const prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1; - const prevNodeKey = flattenedNodes[prevNodeIndex].key; - abstractDropNodeEntity = keyEntities[prevNodeKey]; - } - const initialAbstractDropNodeKey = abstractDropNodeEntity.key; - const abstractDragOverEntity = abstractDropNodeEntity; - const dragOverNodeKey = abstractDropNodeEntity.key; - let dropPosition = 0; - let dropLevelOffset = 0; - if (!expandKeysSet.has(initialAbstractDropNodeKey)) { - for (let i3 = 0; i3 < rawDropLevelOffset; i3 += 1) { - if (isLastChild(abstractDropNodeEntity)) { - abstractDropNodeEntity = abstractDropNodeEntity.parent; - dropLevelOffset += 1; - } else { - break; - } - } - } - const abstractDragDataNode = dragNode.eventData; - const abstractDropDataNode = abstractDropNodeEntity.node; - let dropAllowed = true; - if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: -1 - }) && abstractDropNodeEntity.key === targetNode.eventKey) { - dropPosition = -1; - } else if ((abstractDragOverEntity.children || []).length && expandKeysSet.has(dragOverNodeKey)) { - if (allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: 0 - })) { - dropPosition = 0; - } else { - dropAllowed = false; - } - } else if (dropLevelOffset === 0) { - if (rawDropLevelOffset > -1.5) { - if (allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: 1 - })) { - dropPosition = 1; - } else { - dropAllowed = false; - } - } else { - if (allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: 0 - })) { - dropPosition = 0; - } else if (allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: 1 - })) { - dropPosition = 1; - } else { - dropAllowed = false; - } - } - } else { - if (allowDrop({ - dragNode: abstractDragDataNode, - dropNode: abstractDropDataNode, - dropPosition: 1 - })) { - dropPosition = 1; - } else { - dropAllowed = false; - } - } - return { - dropPosition, - dropLevelOffset, - dropTargetKey: abstractDropNodeEntity.key, - dropTargetPos: abstractDropNodeEntity.pos, - dragOverNodeKey, - dropContainerKey: dropPosition === 0 ? null : ((_a2 = abstractDropNodeEntity.parent) === null || _a2 === void 0 ? void 0 : _a2.key) || null, - dropAllowed - }; -} -function calcSelectedKeys(selectedKeys, props4) { - if (!selectedKeys) return void 0; - const { - multiple - } = props4; - if (multiple) { - return selectedKeys.slice(); - } - if (selectedKeys.length) { - return [selectedKeys[0]]; - } - return selectedKeys; -} -function parseCheckedKeys(keys2) { - if (!keys2) { - return null; - } - let keyProps; - if (Array.isArray(keys2)) { - keyProps = { - checkedKeys: keys2, - halfCheckedKeys: void 0 - }; - } else if (typeof keys2 === "object") { - keyProps = { - checkedKeys: keys2.checked || void 0, - halfCheckedKeys: keys2.halfChecked || void 0 - }; - } else { - warning(false, "`checkedKeys` is not an array or an object"); - return null; - } - return keyProps; -} -function conductExpandParent(keyList, keyEntities) { - const expandedKeys = /* @__PURE__ */ new Set(); - function conductUp(key2) { - if (expandedKeys.has(key2)) return; - const entity = keyEntities[key2]; - if (!entity) return; - expandedKeys.add(key2); - const { - parent: parent2, - node: node2 - } = entity; - if (node2.disabled) return; - if (parent2) { - conductUp(parent2.key); - } - } - (keyList || []).forEach((key2) => { - conductUp(key2); - }); - return [...expandedKeys]; -} - -// node_modules/ant-design-vue/es/vc-tree/utils/treeUtil.js -var __rest25 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function getKey3(key2, pos) { - if (key2 !== null && key2 !== void 0) { - return key2; - } - return pos; -} -function fillFieldNames3(fieldNames) { - const { - title, - _title, - key: key2, - children - } = fieldNames || {}; - const mergedTitle = title || "title"; - return { - title: mergedTitle, - _title: _title || [mergedTitle], - key: key2 || "key", - children: children || "children" - }; -} -function convertTreeToData(rootNodes) { - function dig() { - let node2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - const treeNodes = filterEmpty(node2); - return treeNodes.map((treeNode) => { - var _a2, _b, _c, _d; - if (!isTreeNode(treeNode)) { - warning(!treeNode, "Tree/TreeNode can only accept TreeNode as children."); - return null; - } - const slots = treeNode.children || {}; - const key2 = treeNode.key; - const props4 = {}; - for (const [k2, v2] of Object.entries(treeNode.props)) { - props4[camelize(k2)] = v2; - } - const { - isLeaf: isLeaf2, - checkable, - selectable, - disabled, - disableCheckbox - } = props4; - const newProps = { - isLeaf: isLeaf2 || isLeaf2 === "" || void 0, - checkable: checkable || checkable === "" || void 0, - selectable: selectable || selectable === "" || void 0, - disabled: disabled || disabled === "" || void 0, - disableCheckbox: disableCheckbox || disableCheckbox === "" || void 0 - }; - const slotsProps = _extends(_extends({}, props4), newProps); - const { - title = (_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots, slotsProps), - icon = (_b = slots.icon) === null || _b === void 0 ? void 0 : _b.call(slots, slotsProps), - switcherIcon = (_c = slots.switcherIcon) === null || _c === void 0 ? void 0 : _c.call(slots, slotsProps) - } = props4, rest2 = __rest25(props4, ["title", "icon", "switcherIcon"]); - const children = (_d = slots.default) === null || _d === void 0 ? void 0 : _d.call(slots); - const dataNode = _extends(_extends(_extends({}, rest2), { - title, - icon, - switcherIcon, - key: key2, - isLeaf: isLeaf2 - }), newProps); - const parsedChildren = dig(children); - if (parsedChildren.length) { - dataNode.children = parsedChildren; - } - return dataNode; - }); - } - return dig(rootNodes); -} -function flattenTreeData(treeNodeList, expandedKeys, fieldNames) { - const { - _title: fieldTitles, - key: fieldKey, - children: fieldChildren - } = fillFieldNames3(fieldNames); - const expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys); - const flattenList = []; - function dig(list) { - let parent2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; - return list.map((treeNode, index3) => { - const pos = getPosition(parent2 ? parent2.pos : "0", index3); - const mergedKey = getKey3(treeNode[fieldKey], pos); - let mergedTitle; - for (let i3 = 0; i3 < fieldTitles.length; i3 += 1) { - const fieldTitle = fieldTitles[i3]; - if (treeNode[fieldTitle] !== void 0) { - mergedTitle = treeNode[fieldTitle]; - break; - } - } - const flattenNode = _extends(_extends({}, omit_default(treeNode, [...fieldTitles, fieldKey, fieldChildren])), { - title: mergedTitle, - key: mergedKey, - parent: parent2, - pos, - children: null, - data: treeNode, - isStart: [...parent2 ? parent2.isStart : [], index3 === 0], - isEnd: [...parent2 ? parent2.isEnd : [], index3 === list.length - 1] - }); - flattenList.push(flattenNode); - if (expandedKeys === true || expandedKeySet.has(mergedKey)) { - flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode); - } else { - flattenNode.children = []; - } - return flattenNode; - }); - } - dig(treeNodeList); - return flattenList; -} -function traverseDataNodes(dataNodes, callback, config) { - let mergedConfig = {}; - if (typeof config === "object") { - mergedConfig = config; - } else { - mergedConfig = { - externalGetKey: config - }; - } - mergedConfig = mergedConfig || {}; - const { - childrenPropName, - externalGetKey, - fieldNames - } = mergedConfig; - const { - key: fieldKey, - children: fieldChildren - } = fillFieldNames3(fieldNames); - const mergeChildrenPropName = childrenPropName || fieldChildren; - let syntheticGetKey; - if (externalGetKey) { - if (typeof externalGetKey === "string") { - syntheticGetKey = (node2) => node2[externalGetKey]; - } else if (typeof externalGetKey === "function") { - syntheticGetKey = (node2) => externalGetKey(node2); - } - } else { - syntheticGetKey = (node2, pos) => getKey3(node2[fieldKey], pos); - } - function processNode(node2, index3, parent2, pathNodes) { - const children = node2 ? node2[mergeChildrenPropName] : dataNodes; - const pos = node2 ? getPosition(parent2.pos, index3) : "0"; - const connectNodes = node2 ? [...pathNodes, node2] : []; - if (node2) { - const key2 = syntheticGetKey(node2, pos); - const data = { - node: node2, - index: index3, - pos, - key: key2, - parentPos: parent2.node ? parent2.pos : null, - level: parent2.level + 1, - nodes: connectNodes - }; - callback(data); - } - if (children) { - children.forEach((subNode, subIndex) => { - processNode(subNode, subIndex, { - node: node2, - pos, - level: parent2 ? parent2.level + 1 : -1 - }, connectNodes); - }); - } - } - processNode(null); -} -function convertDataToEntities(dataNodes) { - let { - initWrapper, - processEntity, - onProcessFinished, - externalGetKey, - childrenPropName, - fieldNames - } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let legacyExternalGetKey = arguments.length > 2 ? arguments[2] : void 0; - const mergedExternalGetKey = externalGetKey || legacyExternalGetKey; - const posEntities = {}; - const keyEntities = {}; - let wrapper = { - posEntities, - keyEntities - }; - if (initWrapper) { - wrapper = initWrapper(wrapper) || wrapper; - } - traverseDataNodes(dataNodes, (item) => { - const { - node: node2, - index: index3, - pos, - key: key2, - parentPos, - level, - nodes - } = item; - const entity = { - node: node2, - nodes, - index: index3, - key: key2, - pos, - level - }; - const mergedKey = getKey3(key2, pos); - posEntities[pos] = entity; - keyEntities[mergedKey] = entity; - entity.parent = posEntities[parentPos]; - if (entity.parent) { - entity.parent.children = entity.parent.children || []; - entity.parent.children.push(entity); - } - if (processEntity) { - processEntity(entity, wrapper); - } - }, { - externalGetKey: mergedExternalGetKey, - childrenPropName, - fieldNames - }); - if (onProcessFinished) { - onProcessFinished(wrapper); - } - return wrapper; -} -function getTreeNodeProps(key2, _ref) { - let { - expandedKeysSet, - selectedKeysSet, - loadedKeysSet, - loadingKeysSet, - checkedKeysSet, - halfCheckedKeysSet, - dragOverNodeKey, - dropPosition, - keyEntities - } = _ref; - const entity = keyEntities[key2]; - const treeNodeProps2 = { - eventKey: key2, - expanded: expandedKeysSet.has(key2), - selected: selectedKeysSet.has(key2), - loaded: loadedKeysSet.has(key2), - loading: loadingKeysSet.has(key2), - checked: checkedKeysSet.has(key2), - halfChecked: halfCheckedKeysSet.has(key2), - pos: String(entity ? entity.pos : ""), - parent: entity.parent, - // [Legacy] Drag props - // Since the interaction of drag is changed, the semantic of the props are - // not accuracy, I think it should be finally removed - dragOver: dragOverNodeKey === key2 && dropPosition === 0, - dragOverGapTop: dragOverNodeKey === key2 && dropPosition === -1, - dragOverGapBottom: dragOverNodeKey === key2 && dropPosition === 1 - }; - return treeNodeProps2; -} -function convertNodePropsToEventData(props4) { - const { - data, - expanded, - selected, - checked, - loaded, - loading, - halfChecked, - dragOver, - dragOverGapTop, - dragOverGapBottom, - pos, - active, - eventKey - } = props4; - const eventData = _extends(_extends({ - dataRef: data - }, data), { - expanded, - selected, - checked, - loaded, - loading, - halfChecked, - dragOver, - dragOverGapTop, - dragOverGapBottom, - pos, - active, - eventKey, - key: eventKey - }); - if (!("props" in eventData)) { - Object.defineProperty(eventData, "props", { - get() { - warning(false, "Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."); - return props4; - } - }); - } - return eventData; -} - -// node_modules/ant-design-vue/es/vc-cascader/hooks/useEntities.js -var useEntities_default = (options, fieldNames) => { - const entities = computed(() => { - return convertDataToEntities(options.value, { - fieldNames: fieldNames.value, - initWrapper: (wrapper) => _extends(_extends({}, wrapper), { - pathKeyEntities: {} - }), - processEntity: (entity, wrapper) => { - const pathKey = entity.nodes.map((node2) => node2[fieldNames.value.value]).join(VALUE_SPLIT); - wrapper.pathKeyEntities[pathKey] = entity; - entity.key = pathKey; - } - }).pathKeyEntities; - }); - return entities; -}; - -// node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchConfig.js -function useSearchConfig(showSearch) { - const mergedShowSearch = shallowRef(false); - const mergedSearchConfig = ref({}); - watchEffect(() => { - if (!showSearch.value) { - mergedShowSearch.value = false; - mergedSearchConfig.value = {}; - return; - } - let searchConfig = { - matchInputWidth: true, - limit: 50 - }; - if (showSearch.value && typeof showSearch.value === "object") { - searchConfig = _extends(_extends({}, searchConfig), showSearch.value); - } - if (searchConfig.limit <= 0) { - delete searchConfig.limit; - if (true) { - warning(false, "'limit' of showSearch should be positive number or false."); - } - } - mergedShowSearch.value = true; - mergedSearchConfig.value = searchConfig; - return; - }); - return { - showSearch: mergedShowSearch, - searchConfig: mergedSearchConfig - }; -} - -// node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchOptions.js -var SEARCH_MARK = "__rc_cascader_search_mark__"; -var defaultFilter = (search, options, _ref) => { - let { - label - } = _ref; - return options.some((opt) => String(opt[label]).toLowerCase().includes(search.toLowerCase())); -}; -var defaultRender = (_ref2) => { - let { - path: path2, - fieldNames - } = _ref2; - return path2.map((opt) => opt[fieldNames.label]).join(" / "); -}; -var useSearchOptions_default = (search, options, fieldNames, prefixCls, config, changeOnSelect) => { - return computed(() => { - const { - filter: filter3 = defaultFilter, - render: render2 = defaultRender, - limit = 50, - sort - } = config.value; - const filteredOptions = []; - if (!search.value) { - return []; - } - function dig(list, pathOptions) { - list.forEach((option) => { - if (!sort && limit > 0 && filteredOptions.length >= limit) { - return; - } - const connectedPathOptions = [...pathOptions, option]; - const children = option[fieldNames.value.children]; - if ( - // If is leaf option - !children || children.length === 0 || // If is changeOnSelect - changeOnSelect.value - ) { - if (filter3(search.value, connectedPathOptions, { - label: fieldNames.value.label - })) { - filteredOptions.push(_extends(_extends({}, option), { - [fieldNames.value.label]: render2({ - inputValue: search.value, - path: connectedPathOptions, - prefixCls: prefixCls.value, - fieldNames: fieldNames.value - }), - [SEARCH_MARK]: connectedPathOptions - })); - } - } - if (children) { - dig(option[fieldNames.value.children], connectedPathOptions); - } - }); - } - dig(options.value, []); - if (sort) { - filteredOptions.sort((a2, b2) => { - return sort(a2[SEARCH_MARK], b2[SEARCH_MARK], search.value, fieldNames.value); - }); - } - return limit > 0 ? filteredOptions.slice(0, limit) : filteredOptions; - }); -}; - -// node_modules/ant-design-vue/es/vc-cascader/utils/treeUtil.js -function formatStrategyValues(pathKeys, keyPathEntities, showCheckedStrategy) { - const valueSet = new Set(pathKeys); - return pathKeys.filter((key2) => { - const entity = keyPathEntities[key2]; - const parent2 = entity ? entity.parent : null; - const children = entity ? entity.children : null; - return showCheckedStrategy === SHOW_CHILD ? !(children && children.some((child) => child.key && valueSet.has(child.key))) : !(parent2 && !parent2.node.disabled && valueSet.has(parent2.key)); - }); -} -function toPathOptions(valueCells, options, fieldNames) { - let stringMode = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - var _a2; - let currentList = options; - const valueOptions = []; - for (let i3 = 0; i3 < valueCells.length; i3 += 1) { - const valueCell = valueCells[i3]; - const foundIndex = currentList === null || currentList === void 0 ? void 0 : currentList.findIndex((option) => { - const val = option[fieldNames.value]; - return stringMode ? String(val) === String(valueCell) : val === valueCell; - }); - const foundOption = foundIndex !== -1 ? currentList === null || currentList === void 0 ? void 0 : currentList[foundIndex] : null; - valueOptions.push({ - value: (_a2 = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.value]) !== null && _a2 !== void 0 ? _a2 : valueCell, - index: foundIndex, - option: foundOption - }); - currentList = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.children]; - } - return valueOptions; -} - -// node_modules/ant-design-vue/es/vc-cascader/hooks/useMissingValues.js -var useMissingValues_default = (options, fieldNames, rawValues) => { - return computed(() => { - const missingValues = []; - const existsValues = []; - rawValues.value.forEach((valueCell) => { - const pathOptions = toPathOptions(valueCell, options.value, fieldNames.value); - if (pathOptions.every((opt) => opt.option)) { - existsValues.push(valueCell); - } else { - missingValues.push(valueCell); - } - }); - return [existsValues, missingValues]; - }); -}; - -// node_modules/ant-design-vue/es/vc-tree/utils/conductUtil.js -function removeFromCheckedKeys(halfCheckedKeys, checkedKeys) { - const filteredKeys = /* @__PURE__ */ new Set(); - halfCheckedKeys.forEach((key2) => { - if (!checkedKeys.has(key2)) { - filteredKeys.add(key2); - } - }); - return filteredKeys; -} -function isCheckDisabled(node2) { - const { - disabled, - disableCheckbox, - checkable - } = node2 || {}; - return !!(disabled || disableCheckbox) || checkable === false; -} -function fillConductCheck(keys2, levelEntities, maxLevel, syntheticGetCheckDisabled) { - const checkedKeys = new Set(keys2); - const halfCheckedKeys = /* @__PURE__ */ new Set(); - for (let level = 0; level <= maxLevel; level += 1) { - const entities = levelEntities.get(level) || /* @__PURE__ */ new Set(); - entities.forEach((entity) => { - const { - key: key2, - node: node2, - children = [] - } = entity; - if (checkedKeys.has(key2) && !syntheticGetCheckDisabled(node2)) { - children.filter((childEntity) => !syntheticGetCheckDisabled(childEntity.node)).forEach((childEntity) => { - checkedKeys.add(childEntity.key); - }); - } - }); - } - const visitedKeys = /* @__PURE__ */ new Set(); - for (let level = maxLevel; level >= 0; level -= 1) { - const entities = levelEntities.get(level) || /* @__PURE__ */ new Set(); - entities.forEach((entity) => { - const { - parent: parent2, - node: node2 - } = entity; - if (syntheticGetCheckDisabled(node2) || !entity.parent || visitedKeys.has(entity.parent.key)) { - return; - } - if (syntheticGetCheckDisabled(entity.parent.node)) { - visitedKeys.add(parent2.key); - return; - } - let allChecked = true; - let partialChecked = false; - (parent2.children || []).filter((childEntity) => !syntheticGetCheckDisabled(childEntity.node)).forEach((_ref) => { - let { - key: key2 - } = _ref; - const checked = checkedKeys.has(key2); - if (allChecked && !checked) { - allChecked = false; - } - if (!partialChecked && (checked || halfCheckedKeys.has(key2))) { - partialChecked = true; - } - }); - if (allChecked) { - checkedKeys.add(parent2.key); - } - if (partialChecked) { - halfCheckedKeys.add(parent2.key); - } - visitedKeys.add(parent2.key); - }); - } - return { - checkedKeys: Array.from(checkedKeys), - halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)) - }; -} -function cleanConductCheck(keys2, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) { - const checkedKeys = new Set(keys2); - let halfCheckedKeys = new Set(halfKeys); - for (let level = 0; level <= maxLevel; level += 1) { - const entities = levelEntities.get(level) || /* @__PURE__ */ new Set(); - entities.forEach((entity) => { - const { - key: key2, - node: node2, - children = [] - } = entity; - if (!checkedKeys.has(key2) && !halfCheckedKeys.has(key2) && !syntheticGetCheckDisabled(node2)) { - children.filter((childEntity) => !syntheticGetCheckDisabled(childEntity.node)).forEach((childEntity) => { - checkedKeys.delete(childEntity.key); - }); - } - }); - } - halfCheckedKeys = /* @__PURE__ */ new Set(); - const visitedKeys = /* @__PURE__ */ new Set(); - for (let level = maxLevel; level >= 0; level -= 1) { - const entities = levelEntities.get(level) || /* @__PURE__ */ new Set(); - entities.forEach((entity) => { - const { - parent: parent2, - node: node2 - } = entity; - if (syntheticGetCheckDisabled(node2) || !entity.parent || visitedKeys.has(entity.parent.key)) { - return; - } - if (syntheticGetCheckDisabled(entity.parent.node)) { - visitedKeys.add(parent2.key); - return; - } - let allChecked = true; - let partialChecked = false; - (parent2.children || []).filter((childEntity) => !syntheticGetCheckDisabled(childEntity.node)).forEach((_ref2) => { - let { - key: key2 - } = _ref2; - const checked = checkedKeys.has(key2); - if (allChecked && !checked) { - allChecked = false; - } - if (!partialChecked && (checked || halfCheckedKeys.has(key2))) { - partialChecked = true; - } - }); - if (!allChecked) { - checkedKeys.delete(parent2.key); - } - if (partialChecked) { - halfCheckedKeys.add(parent2.key); - } - visitedKeys.add(parent2.key); - }); - } - return { - checkedKeys: Array.from(checkedKeys), - halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)) - }; -} -function conductCheck(keyList, checked, keyEntities, maxLevel, levelEntities, getCheckDisabled) { - const warningMissKeys = []; - let syntheticGetCheckDisabled; - if (getCheckDisabled) { - syntheticGetCheckDisabled = getCheckDisabled; - } else { - syntheticGetCheckDisabled = isCheckDisabled; - } - const keys2 = new Set(keyList.filter((key2) => { - const hasEntity = !!keyEntities[key2]; - if (!hasEntity) { - warningMissKeys.push(key2); - } - return hasEntity; - })); - note(!warningMissKeys.length, `Tree missing follow keys: ${warningMissKeys.slice(0, 100).map((key2) => `'${key2}'`).join(", ")}`); - let result2; - if (checked === true) { - result2 = fillConductCheck(keys2, levelEntities, maxLevel, syntheticGetCheckDisabled); - } else { - result2 = cleanConductCheck(keys2, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled); - } - return result2; -} - -// node_modules/ant-design-vue/es/vc-cascader/hooks/useDisplayValues.js -var useDisplayValues_default = (rawValues, options, fieldNames, multiple, displayRender) => { - return computed(() => { - const mergedDisplayRender = displayRender.value || // Default displayRender - ((_ref) => { - let { - labels - } = _ref; - const mergedLabels = multiple.value ? labels.slice(-1) : labels; - const SPLIT2 = " / "; - if (mergedLabels.every((label) => ["string", "number"].includes(typeof label))) { - return mergedLabels.join(SPLIT2); - } - return mergedLabels.reduce((list, label, index3) => { - const keyedLabel = isValidElement(label) ? cloneElement(label, { - key: index3 - }) : label; - if (index3 === 0) { - return [keyedLabel]; - } - return [...list, SPLIT2, keyedLabel]; - }, []); - }); - return rawValues.value.map((valueCells) => { - const valueOptions = toPathOptions(valueCells, options.value, fieldNames.value); - const label = mergedDisplayRender({ - labels: valueOptions.map((_ref2) => { - let { - option, - value: value2 - } = _ref2; - var _a2; - return (_a2 = option === null || option === void 0 ? void 0 : option[fieldNames.value.label]) !== null && _a2 !== void 0 ? _a2 : value2; - }), - selectedOptions: valueOptions.map((_ref3) => { - let { - option - } = _ref3; - return option; - }) - }); - const value = toPathKey(valueCells); - return { - label, - value, - key: value, - valueCells - }; - }); - }); -}; - -// node_modules/ant-design-vue/es/vc-cascader/context.js -var CascaderContextKey = Symbol("CascaderContextKey"); -var useProvideCascader = (props4) => { - provide(CascaderContextKey, props4); -}; -var useInjectCascader = () => { - return inject(CascaderContextKey); -}; - -// node_modules/ant-design-vue/es/vc-cascader/OptionList/useActive.js -var useActive_default = () => { - const baseProps3 = useBaseProps(); - const { - values: values2 - } = useInjectCascader(); - const [activeValueCells, setActiveValueCells] = useState([]); - watch(() => baseProps3.open, () => { - if (baseProps3.open && !baseProps3.multiple) { - const firstValueCells = values2.value[0]; - setActiveValueCells(firstValueCells || []); - } - }, { - immediate: true - }); - return [activeValueCells, setActiveValueCells]; -}; - -// node_modules/ant-design-vue/es/vc-cascader/OptionList/useKeyboard.js -var useKeyboard_default = (context2, options, fieldNames, activeValueCells, setActiveValueCells, onKeyBoardSelect) => { - const baseProps3 = useBaseProps(); - const rtl3 = computed(() => baseProps3.direction === "rtl"); - const [validActiveValueCells, lastActiveIndex, lastActiveOptions] = [ref([]), ref(), ref([])]; - watchEffect(() => { - let activeIndex = -1; - let currentOptions = options.value; - const mergedActiveIndexes = []; - const mergedActiveValueCells = []; - const len = activeValueCells.value.length; - for (let i3 = 0; i3 < len && currentOptions; i3 += 1) { - const nextActiveIndex = currentOptions.findIndex((option) => option[fieldNames.value.value] === activeValueCells.value[i3]); - if (nextActiveIndex === -1) { - break; - } - activeIndex = nextActiveIndex; - mergedActiveIndexes.push(activeIndex); - mergedActiveValueCells.push(activeValueCells.value[i3]); - currentOptions = currentOptions[activeIndex][fieldNames.value.children]; - } - let activeOptions = options.value; - for (let i3 = 0; i3 < mergedActiveIndexes.length - 1; i3 += 1) { - activeOptions = activeOptions[mergedActiveIndexes[i3]][fieldNames.value.children]; - } - [validActiveValueCells.value, lastActiveIndex.value, lastActiveOptions.value] = [mergedActiveValueCells, activeIndex, activeOptions]; - }); - const internalSetActiveValueCells = (next2) => { - setActiveValueCells(next2); - }; - const offsetActiveOption = (offset4) => { - const len = lastActiveOptions.value.length; - let currentIndex = lastActiveIndex.value; - if (currentIndex === -1 && offset4 < 0) { - currentIndex = len; - } - for (let i3 = 0; i3 < len; i3 += 1) { - currentIndex = (currentIndex + offset4 + len) % len; - const option = lastActiveOptions.value[currentIndex]; - if (option && !option.disabled) { - const value = option[fieldNames.value.value]; - const nextActiveCells = validActiveValueCells.value.slice(0, -1).concat(value); - internalSetActiveValueCells(nextActiveCells); - return; - } - } - }; - const prevColumn = () => { - if (validActiveValueCells.value.length > 1) { - const nextActiveCells = validActiveValueCells.value.slice(0, -1); - internalSetActiveValueCells(nextActiveCells); - } else { - baseProps3.toggleOpen(false); - } - }; - const nextColumn = () => { - var _a2; - const nextOptions = ((_a2 = lastActiveOptions.value[lastActiveIndex.value]) === null || _a2 === void 0 ? void 0 : _a2[fieldNames.value.children]) || []; - const nextOption = nextOptions.find((option) => !option.disabled); - if (nextOption) { - const nextActiveCells = [...validActiveValueCells.value, nextOption[fieldNames.value.value]]; - internalSetActiveValueCells(nextActiveCells); - } - }; - context2.expose({ - // scrollTo: treeRef.current?.scrollTo, - onKeydown: (event) => { - const { - which - } = event; - switch (which) { - case KeyCode_default.UP: - case KeyCode_default.DOWN: { - let offset4 = 0; - if (which === KeyCode_default.UP) { - offset4 = -1; - } else if (which === KeyCode_default.DOWN) { - offset4 = 1; - } - if (offset4 !== 0) { - offsetActiveOption(offset4); - } - break; - } - case KeyCode_default.LEFT: { - if (rtl3.value) { - nextColumn(); - } else { - prevColumn(); - } - break; - } - case KeyCode_default.RIGHT: { - if (rtl3.value) { - prevColumn(); - } else { - nextColumn(); - } - break; - } - case KeyCode_default.BACKSPACE: { - if (!baseProps3.searchValue) { - prevColumn(); - } - break; - } - case KeyCode_default.ENTER: { - if (validActiveValueCells.value.length) { - const option = lastActiveOptions.value[lastActiveIndex.value]; - const originOptions = (option === null || option === void 0 ? void 0 : option[SEARCH_MARK]) || []; - if (originOptions.length) { - onKeyBoardSelect(originOptions.map((opt) => opt[fieldNames.value.value]), originOptions[originOptions.length - 1]); - } else { - onKeyBoardSelect(validActiveValueCells.value, option); - } - } - break; - } - case KeyCode_default.ESC: { - baseProps3.toggleOpen(false); - if (open) { - event.stopPropagation(); - } - } - } - }, - onKeyup: () => { - } - }); -}; - -// node_modules/ant-design-vue/es/vc-cascader/OptionList/Checkbox.js -function Checkbox(_ref) { - let { - prefixCls, - checked, - halfChecked, - disabled, - onClick - } = _ref; - const { - customSlots, - checkable - } = useInjectCascader(); - const mergedCheckable = checkable.value !== false ? customSlots.value.checkable : checkable.value; - const customCheckbox = typeof mergedCheckable === "function" ? mergedCheckable() : typeof mergedCheckable === "boolean" ? null : mergedCheckable; - return createVNode("span", { - "class": { - [prefixCls]: true, - [`${prefixCls}-checked`]: checked, - [`${prefixCls}-indeterminate`]: !checked && halfChecked, - [`${prefixCls}-disabled`]: disabled - }, - "onClick": onClick - }, [customCheckbox]); -} -Checkbox.props = ["prefixCls", "checked", "halfChecked", "disabled", "onClick"]; -Checkbox.displayName = "Checkbox"; -Checkbox.inheritAttrs = false; - -// node_modules/ant-design-vue/es/vc-cascader/OptionList/Column.js -var FIX_LABEL = "__cascader_fix_label__"; -function Column(_ref) { - let { - prefixCls, - multiple, - options, - activeValue, - prevValuePath, - onToggleOpen, - onSelect, - onActive, - checkedSet, - halfCheckedSet, - loadingKeys, - isSelectable - } = _ref; - var _a2, _b, _c, _d, _e, _f; - const menuPrefixCls = `${prefixCls}-menu`; - const menuItemPrefixCls = `${prefixCls}-menu-item`; - const { - fieldNames, - changeOnSelect, - expandTrigger, - expandIcon: expandIconRef, - loadingIcon: loadingIconRef, - dropdownMenuColumnStyle, - customSlots - } = useInjectCascader(); - const expandIcon = (_a2 = expandIconRef.value) !== null && _a2 !== void 0 ? _a2 : (_c = (_b = customSlots.value).expandIcon) === null || _c === void 0 ? void 0 : _c.call(_b); - const loadingIcon = (_d = loadingIconRef.value) !== null && _d !== void 0 ? _d : (_f = (_e = customSlots.value).loadingIcon) === null || _f === void 0 ? void 0 : _f.call(_e); - const hoverOpen = expandTrigger.value === "hover"; - return createVNode("ul", { - "class": menuPrefixCls, - "role": "menu" - }, [options.map((option) => { - var _a3; - const { - disabled - } = option; - const searchOptions = option[SEARCH_MARK]; - const label = (_a3 = option[FIX_LABEL]) !== null && _a3 !== void 0 ? _a3 : option[fieldNames.value.label]; - const value = option[fieldNames.value.value]; - const isMergedLeaf = isLeaf(option, fieldNames.value); - const fullPath = searchOptions ? searchOptions.map((opt) => opt[fieldNames.value.value]) : [...prevValuePath, value]; - const fullPathKey = toPathKey(fullPath); - const isLoading = loadingKeys.includes(fullPathKey); - const checked = checkedSet.has(fullPathKey); - const halfChecked = halfCheckedSet.has(fullPathKey); - const triggerOpenPath = () => { - if (!disabled && (!hoverOpen || !isMergedLeaf)) { - onActive(fullPath); - } - }; - const triggerSelect = () => { - if (isSelectable(option)) { - onSelect(fullPath, isMergedLeaf); - } - }; - let title; - if (typeof option.title === "string") { - title = option.title; - } else if (typeof label === "string") { - title = label; - } - return createVNode("li", { - "key": fullPathKey, - "class": [menuItemPrefixCls, { - [`${menuItemPrefixCls}-expand`]: !isMergedLeaf, - [`${menuItemPrefixCls}-active`]: activeValue === value, - [`${menuItemPrefixCls}-disabled`]: disabled, - [`${menuItemPrefixCls}-loading`]: isLoading - }], - "style": dropdownMenuColumnStyle.value, - "role": "menuitemcheckbox", - "title": title, - "aria-checked": checked, - "data-path-key": fullPathKey, - "onClick": () => { - triggerOpenPath(); - if (!multiple || isMergedLeaf) { - triggerSelect(); - } - }, - "onDblclick": () => { - if (changeOnSelect.value) { - onToggleOpen(false); - } - }, - "onMouseenter": () => { - if (hoverOpen) { - triggerOpenPath(); - } - }, - "onMousedown": (e3) => { - e3.preventDefault(); - } - }, [multiple && createVNode(Checkbox, { - "prefixCls": `${prefixCls}-checkbox`, - "checked": checked, - "halfChecked": halfChecked, - "disabled": disabled, - "onClick": (e3) => { - e3.stopPropagation(); - triggerSelect(); - } - }, null), createVNode("div", { - "class": `${menuItemPrefixCls}-content` - }, [label]), !isLoading && expandIcon && !isMergedLeaf && createVNode("div", { - "class": `${menuItemPrefixCls}-expand-icon` - }, [expandIcon]), isLoading && loadingIcon && createVNode("div", { - "class": `${menuItemPrefixCls}-loading-icon` - }, [loadingIcon])]); - })]); -} -Column.props = ["prefixCls", "multiple", "options", "activeValue", "prevValuePath", "onToggleOpen", "onSelect", "onActive", "checkedSet", "halfCheckedSet", "loadingKeys", "isSelectable"]; -Column.displayName = "Column"; -Column.inheritAttrs = false; - -// node_modules/ant-design-vue/es/vc-cascader/OptionList/index.js -var OptionList_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "OptionList", - inheritAttrs: false, - setup(_props, context2) { - const { - attrs, - slots - } = context2; - const baseProps3 = useBaseProps(); - const containerRef = ref(); - const rtl3 = computed(() => baseProps3.direction === "rtl"); - const { - options, - values: values2, - halfValues, - fieldNames, - changeOnSelect, - onSelect, - searchOptions, - dropdownPrefixCls, - loadData, - expandTrigger, - customSlots - } = useInjectCascader(); - const mergedPrefixCls = computed(() => dropdownPrefixCls.value || baseProps3.prefixCls); - const loadingKeys = shallowRef([]); - const internalLoadData = (valueCells) => { - if (!loadData.value || baseProps3.searchValue) { - return; - } - const optionList = toPathOptions(valueCells, options.value, fieldNames.value); - const rawOptions = optionList.map((_ref) => { - let { - option - } = _ref; - return option; - }); - const lastOption = rawOptions[rawOptions.length - 1]; - if (lastOption && !isLeaf(lastOption, fieldNames.value)) { - const pathKey = toPathKey(valueCells); - loadingKeys.value = [...loadingKeys.value, pathKey]; - loadData.value(rawOptions); - } - }; - watchEffect(() => { - if (loadingKeys.value.length) { - loadingKeys.value.forEach((loadingKey) => { - const valueStrCells = toPathValueStr(loadingKey); - const optionList = toPathOptions(valueStrCells, options.value, fieldNames.value, true).map((_ref2) => { - let { - option - } = _ref2; - return option; - }); - const lastOption = optionList[optionList.length - 1]; - if (!lastOption || lastOption[fieldNames.value.children] || isLeaf(lastOption, fieldNames.value)) { - loadingKeys.value = loadingKeys.value.filter((key2) => key2 !== loadingKey); - } - }); - } - }); - const checkedSet = computed(() => new Set(toPathKeys(values2.value))); - const halfCheckedSet = computed(() => new Set(toPathKeys(halfValues.value))); - const [activeValueCells, setActiveValueCells] = useActive_default(); - const onPathOpen = (nextValueCells) => { - setActiveValueCells(nextValueCells); - internalLoadData(nextValueCells); - }; - const isSelectable = (option) => { - const { - disabled - } = option; - const isMergedLeaf = isLeaf(option, fieldNames.value); - return !disabled && (isMergedLeaf || changeOnSelect.value || baseProps3.multiple); - }; - const onPathSelect = function(valuePath, leaf) { - let fromKeyboard = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - onSelect(valuePath); - if (!baseProps3.multiple && (leaf || changeOnSelect.value && (expandTrigger.value === "hover" || fromKeyboard))) { - baseProps3.toggleOpen(false); - } - }; - const mergedOptions = computed(() => { - if (baseProps3.searchValue) { - return searchOptions.value; - } - return options.value; - }); - const optionColumns = computed(() => { - const optionList = [{ - options: mergedOptions.value - }]; - let currentList = mergedOptions.value; - for (let i3 = 0; i3 < activeValueCells.value.length; i3 += 1) { - const activeValueCell = activeValueCells.value[i3]; - const currentOption = currentList.find((option) => option[fieldNames.value.value] === activeValueCell); - const subOptions = currentOption === null || currentOption === void 0 ? void 0 : currentOption[fieldNames.value.children]; - if (!(subOptions === null || subOptions === void 0 ? void 0 : subOptions.length)) { - break; - } - currentList = subOptions; - optionList.push({ - options: subOptions - }); - } - return optionList; - }); - const onKeyboardSelect = (selectValueCells, option) => { - if (isSelectable(option)) { - onPathSelect(selectValueCells, isLeaf(option, fieldNames.value), true); - } - }; - useKeyboard_default(context2, mergedOptions, fieldNames, activeValueCells, onPathOpen, onKeyboardSelect); - const onListMouseDown = (event) => { - event.preventDefault(); - }; - onMounted(() => { - watch(activeValueCells, (cells) => { - var _a2; - for (let i3 = 0; i3 < cells.length; i3 += 1) { - const cellPath = cells.slice(0, i3 + 1); - const cellKeyPath = toPathKey(cellPath); - const ele = (_a2 = containerRef.value) === null || _a2 === void 0 ? void 0 : _a2.querySelector(`li[data-path-key="${cellKeyPath.replace(/\\{0,2}"/g, '\\"')}"]`); - if (ele) { - scrollIntoParentView(ele); - } - } - }, { - flush: "post", - immediate: true - }); - }); - return () => { - var _a2, _b, _c, _d, _e; - const { - notFoundContent = ((_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || ((_c = (_b = customSlots.value).notFoundContent) === null || _c === void 0 ? void 0 : _c.call(_b)), - multiple, - toggleOpen - } = baseProps3; - const isEmpty3 = !((_e = (_d = optionColumns.value[0]) === null || _d === void 0 ? void 0 : _d.options) === null || _e === void 0 ? void 0 : _e.length); - const emptyList = [{ - [fieldNames.value.value]: "__EMPTY__", - [FIX_LABEL]: notFoundContent, - disabled: true - }]; - const columnProps = _extends(_extends({}, attrs), { - multiple: !isEmpty3 && multiple, - onSelect: onPathSelect, - onActive: onPathOpen, - onToggleOpen: toggleOpen, - checkedSet: checkedSet.value, - halfCheckedSet: halfCheckedSet.value, - loadingKeys: loadingKeys.value, - isSelectable - }); - const mergedOptionColumns = isEmpty3 ? [{ - options: emptyList - }] : optionColumns.value; - const columnNodes = mergedOptionColumns.map((col, index3) => { - const prevValuePath = activeValueCells.value.slice(0, index3); - const activeValue = activeValueCells.value[index3]; - return createVNode(Column, _objectSpread2(_objectSpread2({ - "key": index3 - }, columnProps), {}, { - "prefixCls": mergedPrefixCls.value, - "options": col.options, - "prevValuePath": prevValuePath, - "activeValue": activeValue - }), null); - }); - return createVNode("div", { - "class": [`${mergedPrefixCls.value}-menus`, { - [`${mergedPrefixCls.value}-menu-empty`]: isEmpty3, - [`${mergedPrefixCls.value}-rtl`]: rtl3.value - }], - "onMousedown": onListMouseDown, - "ref": containerRef - }, [columnNodes]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/useMaxLevel.js -function useMaxLevel(keyEntities) { - const maxLevel = ref(0); - const levelEntities = shallowRef(); - watchEffect(() => { - const newLevelEntities = /* @__PURE__ */ new Map(); - let newMaxLevel = 0; - const keyEntitiesValue = keyEntities.value || {}; - for (const key2 in keyEntitiesValue) { - if (Object.prototype.hasOwnProperty.call(keyEntitiesValue, key2)) { - const entity = keyEntitiesValue[key2]; - const { - level - } = entity; - let levelSet = newLevelEntities.get(level); - if (!levelSet) { - levelSet = /* @__PURE__ */ new Set(); - newLevelEntities.set(level, levelSet); - } - levelSet.add(entity); - newMaxLevel = Math.max(newMaxLevel, level); - } - } - maxLevel.value = newMaxLevel; - levelEntities.value = newLevelEntities; - }); - return { - maxLevel, - levelEntities - }; -} - -// node_modules/ant-design-vue/es/vc-cascader/Cascader.js -function baseCascaderProps() { - return _extends(_extends({}, omit_default(baseSelectPropsWithoutPrivate(), ["tokenSeparators", "mode", "showSearch"])), { - // MISC - id: String, - prefixCls: String, - fieldNames: objectType(), - children: Array, - // Value - value: { - type: [String, Number, Array] - }, - defaultValue: { - type: [String, Number, Array] - }, - changeOnSelect: { - type: Boolean, - default: void 0 - }, - displayRender: Function, - checkable: { - type: Boolean, - default: void 0 - }, - showCheckedStrategy: { - type: String, - default: SHOW_PARENT - }, - // Search - showSearch: { - type: [Boolean, Object], - default: void 0 - }, - searchValue: String, - onSearch: Function, - // Trigger - expandTrigger: String, - // Options - options: Array, - /** @private Internal usage. Do not use in your production. */ - dropdownPrefixCls: String, - loadData: Function, - // Open - /** @deprecated Use `open` instead */ - popupVisible: { - type: Boolean, - default: void 0 - }, - /** @deprecated Use `dropdownClassName` instead */ - popupClassName: String, - dropdownClassName: String, - dropdownMenuColumnStyle: { - type: Object, - default: void 0 - }, - /** @deprecated Use `dropdownStyle` instead */ - popupStyle: { - type: Object, - default: void 0 - }, - dropdownStyle: { - type: Object, - default: void 0 - }, - /** @deprecated Use `placement` instead */ - popupPlacement: String, - placement: String, - /** @deprecated Use `onDropdownVisibleChange` instead */ - onPopupVisibleChange: Function, - onDropdownVisibleChange: Function, - // Icon - expandIcon: vue_types_default.any, - loadingIcon: vue_types_default.any - }); -} -function internalCascaderProps() { - return _extends(_extends({}, baseCascaderProps()), { - onChange: Function, - customSlots: Object - }); -} -function isMultipleValue(value) { - return Array.isArray(value) && Array.isArray(value[0]); -} -function toRawValues(value) { - if (!value) { - return []; - } - if (isMultipleValue(value)) { - return value; - } - return (value.length === 0 ? [] : [value]).map((val) => Array.isArray(val) ? val : [val]); -} -var Cascader_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Cascader", - inheritAttrs: false, - props: initDefaultProps_default(internalCascaderProps(), {}), - setup(props4, _ref) { - let { - attrs, - expose, - slots - } = _ref; - const mergedId = useId(toRef(props4, "id")); - const multiple = computed(() => !!props4.checkable); - const [rawValues, setRawValues] = useMergedState(props4.defaultValue, { - value: computed(() => props4.value), - postState: toRawValues - }); - const mergedFieldNames = computed(() => fillFieldNames2(props4.fieldNames)); - const mergedOptions = computed(() => props4.options || []); - const pathKeyEntities = useEntities_default(mergedOptions, mergedFieldNames); - const getValueByKeyPath = (pathKeys) => { - const keyPathEntities = pathKeyEntities.value; - return pathKeys.map((pathKey) => { - const { - nodes - } = keyPathEntities[pathKey]; - return nodes.map((node2) => node2[mergedFieldNames.value.value]); - }); - }; - const [mergedSearchValue, setSearchValue] = useMergedState("", { - value: computed(() => props4.searchValue), - postState: (search) => search || "" - }); - const onInternalSearch = (searchText, info) => { - setSearchValue(searchText); - if (info.source !== "blur" && props4.onSearch) { - props4.onSearch(searchText); - } - }; - const { - showSearch: mergedShowSearch, - searchConfig: mergedSearchConfig - } = useSearchConfig(toRef(props4, "showSearch")); - const searchOptions = useSearchOptions_default(mergedSearchValue, mergedOptions, mergedFieldNames, computed(() => props4.dropdownPrefixCls || props4.prefixCls), mergedSearchConfig, toRef(props4, "changeOnSelect")); - const missingValuesInfo = useMissingValues_default(mergedOptions, mergedFieldNames, rawValues); - const [checkedValues, halfCheckedValues, missingCheckedValues] = [ref([]), ref([]), ref([])]; - const { - maxLevel, - levelEntities - } = useMaxLevel(pathKeyEntities); - watchEffect(() => { - const [existValues, missingValues] = missingValuesInfo.value; - if (!multiple.value || !rawValues.value.length) { - [checkedValues.value, halfCheckedValues.value, missingCheckedValues.value] = [existValues, [], missingValues]; - return; - } - const keyPathValues = toPathKeys(existValues); - const keyPathEntities = pathKeyEntities.value; - const { - checkedKeys, - halfCheckedKeys - } = conductCheck(keyPathValues, true, keyPathEntities, maxLevel.value, levelEntities.value); - [checkedValues.value, halfCheckedValues.value, missingCheckedValues.value] = [getValueByKeyPath(checkedKeys), getValueByKeyPath(halfCheckedKeys), missingValues]; - }); - const deDuplicatedValues = computed(() => { - const checkedKeys = toPathKeys(checkedValues.value); - const deduplicateKeys = formatStrategyValues(checkedKeys, pathKeyEntities.value, props4.showCheckedStrategy); - return [...missingCheckedValues.value, ...getValueByKeyPath(deduplicateKeys)]; - }); - const displayValues = useDisplayValues_default(deDuplicatedValues, mergedOptions, mergedFieldNames, multiple, toRef(props4, "displayRender")); - const triggerChange = (nextValues) => { - setRawValues(nextValues); - if (props4.onChange) { - const nextRawValues = toRawValues(nextValues); - const valueOptions = nextRawValues.map((valueCells) => toPathOptions(valueCells, mergedOptions.value, mergedFieldNames.value).map((valueOpt) => valueOpt.option)); - const triggerValues = multiple.value ? nextRawValues : nextRawValues[0]; - const triggerOptions = multiple.value ? valueOptions : valueOptions[0]; - props4.onChange(triggerValues, triggerOptions); - } - }; - const onInternalSelect = (valuePath) => { - setSearchValue(""); - if (!multiple.value) { - triggerChange(valuePath); - } else { - const pathKey = toPathKey(valuePath); - const checkedPathKeys = toPathKeys(checkedValues.value); - const halfCheckedPathKeys = toPathKeys(halfCheckedValues.value); - const existInChecked = checkedPathKeys.includes(pathKey); - const existInMissing = missingCheckedValues.value.some((valueCells) => toPathKey(valueCells) === pathKey); - let nextCheckedValues = checkedValues.value; - let nextMissingValues = missingCheckedValues.value; - if (existInMissing && !existInChecked) { - nextMissingValues = missingCheckedValues.value.filter((valueCells) => toPathKey(valueCells) !== pathKey); - } else { - const nextRawCheckedKeys = existInChecked ? checkedPathKeys.filter((key2) => key2 !== pathKey) : [...checkedPathKeys, pathKey]; - let checkedKeys; - if (existInChecked) { - ({ - checkedKeys - } = conductCheck(nextRawCheckedKeys, { - checked: false, - halfCheckedKeys: halfCheckedPathKeys - }, pathKeyEntities.value, maxLevel.value, levelEntities.value)); - } else { - ({ - checkedKeys - } = conductCheck(nextRawCheckedKeys, true, pathKeyEntities.value, maxLevel.value, levelEntities.value)); - } - const deDuplicatedKeys = formatStrategyValues(checkedKeys, pathKeyEntities.value, props4.showCheckedStrategy); - nextCheckedValues = getValueByKeyPath(deDuplicatedKeys); - } - triggerChange([...nextMissingValues, ...nextCheckedValues]); - } - }; - const onDisplayValuesChange = (_2, info) => { - if (info.type === "clear") { - triggerChange([]); - return; - } - const { - valueCells - } = info.values[0]; - onInternalSelect(valueCells); - }; - if (true) { - watchEffect(() => { - devWarning_default(!props4.onPopupVisibleChange, "Cascader", "`popupVisibleChange` is deprecated. Please use `dropdownVisibleChange` instead."); - devWarning_default(props4.popupVisible === void 0, "Cascader", "`popupVisible` is deprecated. Please use `open` instead."); - devWarning_default(props4.popupClassName === void 0, "Cascader", "`popupClassName` is deprecated. Please use `dropdownClassName` instead."); - devWarning_default(props4.popupPlacement === void 0, "Cascader", "`popupPlacement` is deprecated. Please use `placement` instead."); - devWarning_default(props4.popupStyle === void 0, "Cascader", "`popupStyle` is deprecated. Please use `dropdownStyle` instead."); - }); - } - const mergedOpen = computed(() => props4.open !== void 0 ? props4.open : props4.popupVisible); - const mergedDropdownClassName = computed(() => props4.dropdownClassName || props4.popupClassName); - const mergedDropdownStyle = computed(() => props4.dropdownStyle || props4.popupStyle || {}); - const mergedPlacement = computed(() => props4.placement || props4.popupPlacement); - const onInternalDropdownVisibleChange = (nextVisible) => { - var _a2, _b; - (_a2 = props4.onDropdownVisibleChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, nextVisible); - (_b = props4.onPopupVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props4, nextVisible); - }; - const { - changeOnSelect, - checkable, - dropdownPrefixCls, - loadData, - expandTrigger, - expandIcon, - loadingIcon, - dropdownMenuColumnStyle, - customSlots - } = toRefs(props4); - useProvideCascader({ - options: mergedOptions, - fieldNames: mergedFieldNames, - values: checkedValues, - halfValues: halfCheckedValues, - changeOnSelect, - onSelect: onInternalSelect, - checkable, - searchOptions, - dropdownPrefixCls, - loadData, - expandTrigger, - expandIcon, - loadingIcon, - dropdownMenuColumnStyle, - customSlots - }); - const selectRef = ref(); - expose({ - focus() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }, - scrollTo(arg) { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(arg); - } - }); - const pickProps = computed(() => { - return omit_default(props4, [ - "id", - "prefixCls", - "fieldNames", - // Value - "defaultValue", - "value", - "changeOnSelect", - "onChange", - "displayRender", - "checkable", - // Search - "searchValue", - "onSearch", - "showSearch", - // Trigger - "expandTrigger", - // Options - "options", - "dropdownPrefixCls", - "loadData", - // Open - "popupVisible", - "open", - "popupClassName", - "dropdownClassName", - "dropdownMenuColumnStyle", - "popupPlacement", - "placement", - "onDropdownVisibleChange", - "onPopupVisibleChange", - // Icon - "expandIcon", - "loadingIcon", - "customSlots", - "showCheckedStrategy", - // Children - "children" - ]); - }); - return () => { - const emptyOptions = !(mergedSearchValue.value ? searchOptions.value : mergedOptions.value).length; - const { - dropdownMatchSelectWidth = false - } = props4; - const dropdownStyle = ( - // Search to match width - mergedSearchValue.value && mergedSearchConfig.value.matchInputWidth || // Empty keep the width - emptyOptions ? {} : { - minWidth: "auto" - } - ); - return createVNode(BaseSelect_default, _objectSpread2(_objectSpread2(_objectSpread2({}, pickProps.value), attrs), {}, { - "ref": selectRef, - "id": mergedId, - "prefixCls": props4.prefixCls, - "dropdownMatchSelectWidth": dropdownMatchSelectWidth, - "dropdownStyle": _extends(_extends({}, mergedDropdownStyle.value), dropdownStyle), - "displayValues": displayValues.value, - "onDisplayValuesChange": onDisplayValuesChange, - "mode": multiple.value ? "multiple" : void 0, - "searchValue": mergedSearchValue.value, - "onSearch": onInternalSearch, - "showSearch": mergedShowSearch.value, - "OptionList": OptionList_default2, - "emptyOptions": emptyOptions, - "open": mergedOpen.value, - "dropdownClassName": mergedDropdownClassName.value, - "placement": mergedPlacement.value, - "onDropdownVisibleChange": onInternalDropdownVisibleChange, - "getRawInputElement": () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - } - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-cascader/index.js -var vc_cascader_default = Cascader_default; - -// node_modules/ant-design-vue/es/_util/styleChecker.js -var canUseDocElement = () => canUseDom_default() && window.document.documentElement; -var isStyleNameSupport = (styleName) => { - if (canUseDom_default() && window.document.documentElement) { - const styleNameList = Array.isArray(styleName) ? styleName : [styleName]; - const { - documentElement - } = window.document; - return styleNameList.some((name) => name in documentElement.style); - } - return false; -}; -var isStyleValueSupport = (styleName, value) => { - if (!isStyleNameSupport(styleName)) { - return false; - } - const ele = document.createElement("div"); - const origin = ele.style[styleName]; - ele.style[styleName] = value; - return ele.style[styleName] !== origin; -}; -function isStyleSupport(styleName, styleValue) { - if (!Array.isArray(styleName) && styleValue !== void 0) { - return isStyleValueSupport(styleName, styleValue); - } - return isStyleNameSupport(styleName); -} -var flexGapSupported; -var detectFlexGapSupported = () => { - if (!canUseDocElement()) { - return false; - } - if (flexGapSupported !== void 0) { - return flexGapSupported; - } - const flex = document.createElement("div"); - flex.style.display = "flex"; - flex.style.flexDirection = "column"; - flex.style.rowGap = "1px"; - flex.appendChild(document.createElement("div")); - flex.appendChild(document.createElement("div")); - document.body.appendChild(flex); - flexGapSupported = flex.scrollHeight === 1; - document.body.removeChild(flex); - return flexGapSupported; -}; -var styleChecker_default = isStyleSupport; - -// node_modules/ant-design-vue/es/_util/hooks/useFlexGapSupport.js -var useFlexGapSupport_default = () => { - const flexible = shallowRef(false); - onMounted(() => { - flexible.value = detectFlexGapSupported(); - }); - return flexible; -}; - -// node_modules/ant-design-vue/es/grid/context.js -var RowContextKey = Symbol("rowContextKey"); -var useProvideRow = (state) => { - provide(RowContextKey, state); -}; -var useInjectRow = () => { - return inject(RowContextKey, { - gutter: computed(() => void 0), - wrap: computed(() => void 0), - supportFlexGap: computed(() => void 0) - }); -}; -var context_default2 = useProvideRow; - -// node_modules/ant-design-vue/es/grid/style/index.js -var genGridRowStyle = (token2) => { - const { - componentCls - } = token2; - return { - // Grid system - [componentCls]: { - display: "flex", - flexFlow: "row wrap", - minWidth: 0, - "&::before, &::after": { - display: "flex" - }, - "&-no-wrap": { - flexWrap: "nowrap" - }, - // The origin of the X-axis - "&-start": { - justifyContent: "flex-start" - }, - // The center of the X-axis - "&-center": { - justifyContent: "center" - }, - // The opposite of the X-axis - "&-end": { - justifyContent: "flex-end" - }, - "&-space-between": { - justifyContent: "space-between" - }, - "&-space-around ": { - justifyContent: "space-around" - }, - // Align at the top - "&-top": { - alignItems: "flex-start" - }, - // Align at the center - "&-middle": { - alignItems: "center" - }, - "&-bottom": { - alignItems: "flex-end" - } - } - }; -}; -var genGridColStyle = (token2) => { - const { - componentCls - } = token2; - return { - // Grid system - [componentCls]: { - position: "relative", - maxWidth: "100%", - // Prevent columns from collapsing when empty - minHeight: 1 - } - }; -}; -var genLoopGridColumnsStyle = (token2, sizeCls) => { - const { - componentCls, - gridColumns - } = token2; - const gridColumnsStyle = {}; - for (let i3 = gridColumns; i3 >= 0; i3--) { - if (i3 === 0) { - gridColumnsStyle[`${componentCls}${sizeCls}-${i3}`] = { - display: "none" - }; - gridColumnsStyle[`${componentCls}-push-${i3}`] = { - insetInlineStart: "auto" - }; - gridColumnsStyle[`${componentCls}-pull-${i3}`] = { - insetInlineEnd: "auto" - }; - gridColumnsStyle[`${componentCls}${sizeCls}-push-${i3}`] = { - insetInlineStart: "auto" - }; - gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i3}`] = { - insetInlineEnd: "auto" - }; - gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i3}`] = { - marginInlineEnd: 0 - }; - gridColumnsStyle[`${componentCls}${sizeCls}-order-${i3}`] = { - order: 0 - }; - } else { - gridColumnsStyle[`${componentCls}${sizeCls}-${i3}`] = { - display: "block", - flex: `0 0 ${i3 / gridColumns * 100}%`, - maxWidth: `${i3 / gridColumns * 100}%` - }; - gridColumnsStyle[`${componentCls}${sizeCls}-push-${i3}`] = { - insetInlineStart: `${i3 / gridColumns * 100}%` - }; - gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i3}`] = { - insetInlineEnd: `${i3 / gridColumns * 100}%` - }; - gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i3}`] = { - marginInlineStart: `${i3 / gridColumns * 100}%` - }; - gridColumnsStyle[`${componentCls}${sizeCls}-order-${i3}`] = { - order: i3 - }; - } - } - return gridColumnsStyle; -}; -var genGridStyle = (token2, sizeCls) => genLoopGridColumnsStyle(token2, sizeCls); -var genGridMediaStyle = (token2, screenSize, sizeCls) => ({ - [`@media (min-width: ${screenSize}px)`]: _extends({}, genGridStyle(token2, sizeCls)) -}); -var useRowStyle = genComponentStyleHook("Grid", (token2) => [genGridRowStyle(token2)]); -var useColStyle = genComponentStyleHook("Grid", (token2) => { - const gridToken = merge(token2, { - gridColumns: 24 - // Row is divided into 24 parts in Grid - }); - const gridMediaSizesMap = { - "-sm": gridToken.screenSMMin, - "-md": gridToken.screenMDMin, - "-lg": gridToken.screenLGMin, - "-xl": gridToken.screenXLMin, - "-xxl": gridToken.screenXXLMin - }; - return [genGridColStyle(gridToken), genGridStyle(gridToken, ""), genGridStyle(gridToken, "-xs"), Object.keys(gridMediaSizesMap).map((key2) => genGridMediaStyle(gridToken, gridMediaSizesMap[key2], key2)).reduce((pre, cur) => _extends(_extends({}, pre), cur), {})]; -}); - -// node_modules/ant-design-vue/es/grid/Row.js -var rowProps = () => ({ - align: someType([String, Object]), - justify: someType([String, Object]), - prefixCls: String, - gutter: someType([Number, Array, Object], 0), - wrap: { - type: Boolean, - default: void 0 - } -}); -var ARow = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARow", - inheritAttrs: false, - props: rowProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("row", props4); - const [wrapSSR, hashId] = useRowStyle(prefixCls); - let token2; - const responsiveObserve = useResponsiveObserver(); - const screens = ref({ - xs: true, - sm: true, - md: true, - lg: true, - xl: true, - xxl: true - }); - const curScreens = ref({ - xs: false, - sm: false, - md: false, - lg: false, - xl: false, - xxl: false - }); - const mergePropsByScreen = (oriProp) => { - return computed(() => { - if (typeof props4[oriProp] === "string") { - return props4[oriProp]; - } - if (typeof props4[oriProp] !== "object") { - return ""; - } - for (let i3 = 0; i3 < responsiveArray.length; i3++) { - const breakpoint = responsiveArray[i3]; - if (!curScreens.value[breakpoint]) continue; - const curVal = props4[oriProp][breakpoint]; - if (curVal !== void 0) { - return curVal; - } - } - return ""; - }); - }; - const mergeAlign = mergePropsByScreen("align"); - const mergeJustify = mergePropsByScreen("justify"); - const supportFlexGap = useFlexGapSupport_default(); - onMounted(() => { - token2 = responsiveObserve.value.subscribe((screen) => { - curScreens.value = screen; - const currentGutter = props4.gutter || 0; - if (!Array.isArray(currentGutter) && typeof currentGutter === "object" || Array.isArray(currentGutter) && (typeof currentGutter[0] === "object" || typeof currentGutter[1] === "object")) { - screens.value = screen; - } - }); - }); - onBeforeUnmount(() => { - responsiveObserve.value.unsubscribe(token2); - }); - const gutter = computed(() => { - const results = [void 0, void 0]; - const { - gutter: gutter2 = 0 - } = props4; - const normalizedGutter = Array.isArray(gutter2) ? gutter2 : [gutter2, void 0]; - normalizedGutter.forEach((g2, index3) => { - if (typeof g2 === "object") { - for (let i3 = 0; i3 < responsiveArray.length; i3++) { - const breakpoint = responsiveArray[i3]; - if (screens.value[breakpoint] && g2[breakpoint] !== void 0) { - results[index3] = g2[breakpoint]; - break; - } - } - } else { - results[index3] = g2; - } - }); - return results; - }); - context_default2({ - gutter, - supportFlexGap, - wrap: computed(() => props4.wrap) - }); - const classes = computed(() => classNames_default(prefixCls.value, { - [`${prefixCls.value}-no-wrap`]: props4.wrap === false, - [`${prefixCls.value}-${mergeJustify.value}`]: mergeJustify.value, - [`${prefixCls.value}-${mergeAlign.value}`]: mergeAlign.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value)); - const rowStyle = computed(() => { - const gt2 = gutter.value; - const style = {}; - const horizontalGutter = gt2[0] != null && gt2[0] > 0 ? `${gt2[0] / -2}px` : void 0; - const verticalGutter = gt2[1] != null && gt2[1] > 0 ? `${gt2[1] / -2}px` : void 0; - if (horizontalGutter) { - style.marginLeft = horizontalGutter; - style.marginRight = horizontalGutter; - } - if (supportFlexGap.value) { - style.rowGap = `${gt2[1]}px`; - } else if (verticalGutter) { - style.marginTop = verticalGutter; - style.marginBottom = verticalGutter; - } - return style; - }); - return () => { - var _a2; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classes.value, - "style": _extends(_extends({}, rowStyle.value), attrs.style) - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); -var Row_default = ARow; - -// node_modules/async-validator/dist-web/index.js -function _extends2() { - _extends2 = Object.assign ? Object.assign.bind() : function(target) { - for (var i3 = 1; i3 < arguments.length; i3++) { - var source = arguments[i3]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; - } - } - } - return target; - }; - return _extends2.apply(this, arguments); -} -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); -} -function _getPrototypeOf(o2) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o3) { - return o3.__proto__ || Object.getPrototypeOf(o3); - }; - return _getPrototypeOf(o2); -} -function _setPrototypeOf(o2, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o3, p2) { - o3.__proto__ = p2; - return o3; - }; - return _setPrototypeOf(o2, p); -} -function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e3) { - return false; - } -} -function _construct(Parent, args, Class) { - if (_isNativeReflectConstruct()) { - _construct = Reflect.construct.bind(); - } else { - _construct = function _construct2(Parent2, args2, Class2) { - var a2 = [null]; - a2.push.apply(a2, args2); - var Constructor = Function.bind.apply(Parent2, a2); - var instance = new Constructor(); - if (Class2) _setPrototypeOf(instance, Class2.prototype); - return instance; - }; - } - return _construct.apply(null, arguments); -} -function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; -} -function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; - _wrapNativeSuper = function _wrapNativeSuper2(Class2) { - if (Class2 === null || !_isNativeFunction(Class2)) return Class2; - if (typeof Class2 !== "function") { - throw new TypeError("Super expression must either be null or a function"); - } - if (typeof _cache !== "undefined") { - if (_cache.has(Class2)) return _cache.get(Class2); - _cache.set(Class2, Wrapper); - } - function Wrapper() { - return _construct(Class2, arguments, _getPrototypeOf(this).constructor); - } - Wrapper.prototype = Object.create(Class2.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true - } - }); - return _setPrototypeOf(Wrapper, Class2); - }; - return _wrapNativeSuper(Class); -} -var formatRegExp = /%[sdj%]/g; -var warning3 = function warning4() { -}; -if (typeof process !== "undefined" && process.env && true && typeof window !== "undefined" && typeof document !== "undefined") { - warning3 = function warning5(type4, errors) { - if (typeof console !== "undefined" && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === "undefined") { - if (errors.every(function(e3) { - return typeof e3 === "string"; - })) { - console.warn(type4, errors); - } - } - }; -} -function convertFieldsError(errors) { - if (!errors || !errors.length) return null; - var fields = {}; - errors.forEach(function(error) { - var field = error.field; - fields[field] = fields[field] || []; - fields[field].push(error); - }); - return fields; -} -function format(template2) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - var i3 = 0; - var len = args.length; - if (typeof template2 === "function") { - return template2.apply(null, args); - } - if (typeof template2 === "string") { - var str = template2.replace(formatRegExp, function(x2) { - if (x2 === "%%") { - return "%"; - } - if (i3 >= len) { - return x2; - } - switch (x2) { - case "%s": - return String(args[i3++]); - case "%d": - return Number(args[i3++]); - case "%j": - try { - return JSON.stringify(args[i3++]); - } catch (_2) { - return "[Circular]"; - } - break; - default: - return x2; - } - }); - return str; - } - return template2; -} -function isNativeStringType(type4) { - return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern"; -} -function isEmptyValue(value, type4) { - if (value === void 0 || value === null) { - return true; - } - if (type4 === "array" && Array.isArray(value) && !value.length) { - return true; - } - if (isNativeStringType(type4) && typeof value === "string" && !value) { - return true; - } - return false; -} -function asyncParallelArray(arr, func, callback) { - var results = []; - var total = 0; - var arrLength = arr.length; - function count(errors) { - results.push.apply(results, errors || []); - total++; - if (total === arrLength) { - callback(results); - } - } - arr.forEach(function(a2) { - func(a2, count); - }); -} -function asyncSerialArray(arr, func, callback) { - var index3 = 0; - var arrLength = arr.length; - function next2(errors) { - if (errors && errors.length) { - callback(errors); - return; - } - var original = index3; - index3 = index3 + 1; - if (original < arrLength) { - func(arr[original], next2); - } else { - callback([]); - } - } - next2([]); -} -function flattenObjArr(objArr) { - var ret = []; - Object.keys(objArr).forEach(function(k2) { - ret.push.apply(ret, objArr[k2] || []); - }); - return ret; -} -var AsyncValidationError = function(_Error) { - _inheritsLoose(AsyncValidationError2, _Error); - function AsyncValidationError2(errors, fields) { - var _this; - _this = _Error.call(this, "Async Validation Error") || this; - _this.errors = errors; - _this.fields = fields; - return _this; - } - return AsyncValidationError2; -}(_wrapNativeSuper(Error)); -function asyncMap(objArr, option, func, callback, source) { - if (option.first) { - var _pending = new Promise(function(resolve, reject2) { - var next2 = function next3(errors) { - callback(errors); - return errors.length ? reject2(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source); - }; - var flattenArr = flattenObjArr(objArr); - asyncSerialArray(flattenArr, func, next2); - }); - _pending["catch"](function(e3) { - return e3; - }); - return _pending; - } - var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || []; - var objArrKeys = Object.keys(objArr); - var objArrLength = objArrKeys.length; - var total = 0; - var results = []; - var pending = new Promise(function(resolve, reject2) { - var next2 = function next3(errors) { - results.push.apply(results, errors); - total++; - if (total === objArrLength) { - callback(results); - return results.length ? reject2(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source); - } - }; - if (!objArrKeys.length) { - callback(results); - resolve(source); - } - objArrKeys.forEach(function(key2) { - var arr = objArr[key2]; - if (firstFields.indexOf(key2) !== -1) { - asyncSerialArray(arr, func, next2); - } else { - asyncParallelArray(arr, func, next2); - } - }); - }); - pending["catch"](function(e3) { - return e3; - }); - return pending; -} -function isErrorObj(obj) { - return !!(obj && obj.message !== void 0); -} -function getValue3(value, path2) { - var v2 = value; - for (var i3 = 0; i3 < path2.length; i3++) { - if (v2 == void 0) { - return v2; - } - v2 = v2[path2[i3]]; - } - return v2; -} -function complementError(rule, source) { - return function(oe) { - var fieldValue; - if (rule.fullFields) { - fieldValue = getValue3(source, rule.fullFields); - } else { - fieldValue = source[oe.field || rule.fullField]; - } - if (isErrorObj(oe)) { - oe.field = oe.field || rule.fullField; - oe.fieldValue = fieldValue; - return oe; - } - return { - message: typeof oe === "function" ? oe() : oe, - fieldValue, - field: oe.field || rule.fullField - }; - }; -} -function deepMerge(target, source) { - if (source) { - for (var s2 in source) { - if (source.hasOwnProperty(s2)) { - var value = source[s2]; - if (typeof value === "object" && typeof target[s2] === "object") { - target[s2] = _extends2({}, target[s2], value); - } else { - target[s2] = value; - } - } - } - } - return target; -} -var required$1 = function required(rule, value, source, errors, options, type4) { - if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type4 || rule.type))) { - errors.push(format(options.messages.required, rule.fullField)); - } -}; -var whitespace2 = function whitespace3(rule, value, source, errors, options) { - if (/^\s+$/.test(value) || value === "") { - errors.push(format(options.messages.whitespace, rule.fullField)); - } -}; -var urlReg; -var getUrlRegex = function() { - if (urlReg) { - return urlReg; - } - var word = "[a-fA-F\\d:]"; - var b2 = function b3(options) { - return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : ""; - }; - var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}"; - var v6seg = "[a-fA-F\\d]{1,4}"; - var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim(); - var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)"); - var v4exact = new RegExp("^" + v4 + "$"); - var v6exact = new RegExp("^" + v6 + "$"); - var ip = function ip2(options) { - return options && options.exact ? v46Exact : new RegExp("(?:" + b2(options) + v4 + b2(options) + ")|(?:" + b2(options) + v6 + b2(options) + ")", "g"); - }; - ip.v4 = function(options) { - return options && options.exact ? v4exact : new RegExp("" + b2(options) + v4 + b2(options), "g"); - }; - ip.v6 = function(options) { - return options && options.exact ? v6exact : new RegExp("" + b2(options) + v6 + b2(options), "g"); - }; - var protocol = "(?:(?:[a-z]+:)?//)"; - var auth = "(?:\\S+(?::\\S*)?@)?"; - var ipv4 = ip.v4().source; - var ipv6 = ip.v6().source; - var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)"; - var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*"; - var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; - var port = "(?::\\d{2,5})?"; - var path2 = '(?:[/?#][^\\s"]*)?'; - var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|" + host + domain + tld + ")" + port + path2; - urlReg = new RegExp("(?:^" + regex + "$)", "i"); - return urlReg; -}; -var pattern$2 = { - // http://emailregex.com/ - email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/, - // url: new RegExp( - // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', - // 'i', - // ), - hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i -}; -var types = { - integer: function integer(value) { - return types.number(value) && parseInt(value, 10) === value; - }, - "float": function float(value) { - return types.number(value) && !types.integer(value); - }, - array: function array(value) { - return Array.isArray(value); - }, - regexp: function regexp(value) { - if (value instanceof RegExp) { - return true; - } - try { - return !!new RegExp(value); - } catch (e3) { - return false; - } - }, - date: function date(value) { - return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime()); - }, - number: function number(value) { - if (isNaN(value)) { - return false; - } - return typeof value === "number"; - }, - object: function object(value) { - return typeof value === "object" && !types.array(value); - }, - method: function method2(value) { - return typeof value === "function"; - }, - email: function email(value) { - return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email); - }, - url: function url(value) { - return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex()); - }, - hex: function hex(value) { - return typeof value === "string" && !!value.match(pattern$2.hex); - } -}; -var type$1 = function type(rule, value, source, errors, options) { - if (rule.required && value === void 0) { - required$1(rule, value, source, errors, options); - return; - } - var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"]; - var ruleType = rule.type; - if (custom.indexOf(ruleType) > -1) { - if (!types[ruleType](value)) { - errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); - } - } else if (ruleType && typeof value !== rule.type) { - errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); - } -}; -var range2 = function range3(rule, value, source, errors, options) { - var len = typeof rule.len === "number"; - var min2 = typeof rule.min === "number"; - var max2 = typeof rule.max === "number"; - var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - var val = value; - var key2 = null; - var num = typeof value === "number"; - var str = typeof value === "string"; - var arr = Array.isArray(value); - if (num) { - key2 = "number"; - } else if (str) { - key2 = "string"; - } else if (arr) { - key2 = "array"; - } - if (!key2) { - return false; - } - if (arr) { - val = value.length; - } - if (str) { - val = value.replace(spRegexp, "_").length; - } - if (len) { - if (val !== rule.len) { - errors.push(format(options.messages[key2].len, rule.fullField, rule.len)); - } - } else if (min2 && !max2 && val < rule.min) { - errors.push(format(options.messages[key2].min, rule.fullField, rule.min)); - } else if (max2 && !min2 && val > rule.max) { - errors.push(format(options.messages[key2].max, rule.fullField, rule.max)); - } else if (min2 && max2 && (val < rule.min || val > rule.max)) { - errors.push(format(options.messages[key2].range, rule.fullField, rule.min, rule.max)); - } -}; -var ENUM$1 = "enum"; -var enumerable$1 = function enumerable(rule, value, source, errors, options) { - rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : []; - if (rule[ENUM$1].indexOf(value) === -1) { - errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", "))); - } -}; -var pattern$1 = function pattern(rule, value, source, errors, options) { - if (rule.pattern) { - if (rule.pattern instanceof RegExp) { - rule.pattern.lastIndex = 0; - if (!rule.pattern.test(value)) { - errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); - } - } else if (typeof rule.pattern === "string") { - var _pattern = new RegExp(rule.pattern); - if (!_pattern.test(value)) { - errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); - } - } - } -}; -var rules = { - required: required$1, - whitespace: whitespace2, - type: type$1, - range: range2, - "enum": enumerable$1, - pattern: pattern$1 -}; -var string = function string2(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value, "string") && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options, "string"); - if (!isEmptyValue(value, "string")) { - rules.type(rule, value, source, errors, options); - rules.range(rule, value, source, errors, options); - rules.pattern(rule, value, source, errors, options); - if (rule.whitespace === true) { - rules.whitespace(rule, value, source, errors, options); - } - } - } - callback(errors); -}; -var method3 = function method4(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - } - } - callback(errors); -}; -var number2 = function number3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (value === "") { - value = void 0; - } - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - rules.range(rule, value, source, errors, options); - } - } - callback(errors); -}; -var _boolean = function _boolean2(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - } - } - callback(errors); -}; -var regexp2 = function regexp3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (!isEmptyValue(value)) { - rules.type(rule, value, source, errors, options); - } - } - callback(errors); -}; -var integer2 = function integer3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - rules.range(rule, value, source, errors, options); - } - } - callback(errors); -}; -var floatFn = function floatFn2(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - rules.range(rule, value, source, errors, options); - } - } - callback(errors); -}; -var array2 = function array3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if ((value === void 0 || value === null) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options, "array"); - if (value !== void 0 && value !== null) { - rules.type(rule, value, source, errors, options); - rules.range(rule, value, source, errors, options); - } - } - callback(errors); -}; -var object2 = function object3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules.type(rule, value, source, errors, options); - } - } - callback(errors); -}; -var ENUM = "enum"; -var enumerable2 = function enumerable3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (value !== void 0) { - rules[ENUM](rule, value, source, errors, options); - } - } - callback(errors); -}; -var pattern2 = function pattern3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value, "string") && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (!isEmptyValue(value, "string")) { - rules.pattern(rule, value, source, errors, options); - } - } - callback(errors); -}; -var date2 = function date3(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value, "date") && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - if (!isEmptyValue(value, "date")) { - var dateObject; - if (value instanceof Date) { - dateObject = value; - } else { - dateObject = new Date(value); - } - rules.type(rule, dateObject, source, errors, options); - if (dateObject) { - rules.range(rule, dateObject.getTime(), source, errors, options); - } - } - } - callback(errors); -}; -var required2 = function required3(rule, value, callback, source, options) { - var errors = []; - var type4 = Array.isArray(value) ? "array" : typeof value; - rules.required(rule, value, source, errors, options, type4); - callback(errors); -}; -var type2 = function type3(rule, value, callback, source, options) { - var ruleType = rule.type; - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value, ruleType) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options, ruleType); - if (!isEmptyValue(value, ruleType)) { - rules.type(rule, value, source, errors, options); - } - } - callback(errors); -}; -var any = function any2(rule, value, callback, source, options) { - var errors = []; - var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); - if (validate) { - if (isEmptyValue(value) && !rule.required) { - return callback(); - } - rules.required(rule, value, source, errors, options); - } - callback(errors); -}; -var validators = { - string, - method: method3, - number: number2, - "boolean": _boolean, - regexp: regexp2, - integer: integer2, - "float": floatFn, - array: array2, - object: object2, - "enum": enumerable2, - pattern: pattern2, - date: date2, - url: type2, - hex: type2, - email: type2, - required: required2, - any -}; -function newMessages() { - return { - "default": "Validation error on field %s", - required: "%s is required", - "enum": "%s must be one of %s", - whitespace: "%s cannot be empty", - date: { - format: "%s date %s is invalid for format %s", - parse: "%s date could not be parsed, %s is invalid ", - invalid: "%s date %s is invalid" - }, - types: { - string: "%s is not a %s", - method: "%s is not a %s (function)", - array: "%s is not an %s", - object: "%s is not an %s", - number: "%s is not a %s", - date: "%s is not a %s", - "boolean": "%s is not a %s", - integer: "%s is not an %s", - "float": "%s is not a %s", - regexp: "%s is not a valid %s", - email: "%s is not a valid %s", - url: "%s is not a valid %s", - hex: "%s is not a valid %s" - }, - string: { - len: "%s must be exactly %s characters", - min: "%s must be at least %s characters", - max: "%s cannot be longer than %s characters", - range: "%s must be between %s and %s characters" - }, - number: { - len: "%s must equal %s", - min: "%s cannot be less than %s", - max: "%s cannot be greater than %s", - range: "%s must be between %s and %s" - }, - array: { - len: "%s must be exactly %s in length", - min: "%s cannot be less than %s in length", - max: "%s cannot be greater than %s in length", - range: "%s must be between %s and %s in length" - }, - pattern: { - mismatch: "%s value %s does not match pattern %s" - }, - clone: function clone3() { - var cloned = JSON.parse(JSON.stringify(this)); - cloned.clone = this.clone; - return cloned; - } - }; -} -var messages = newMessages(); -var Schema = function() { - function Schema2(descriptor) { - this.rules = null; - this._messages = messages; - this.define(descriptor); - } - var _proto = Schema2.prototype; - _proto.define = function define2(rules2) { - var _this = this; - if (!rules2) { - throw new Error("Cannot configure a schema with no rules"); - } - if (typeof rules2 !== "object" || Array.isArray(rules2)) { - throw new Error("Rules must be an object"); - } - this.rules = {}; - Object.keys(rules2).forEach(function(name) { - var item = rules2[name]; - _this.rules[name] = Array.isArray(item) ? item : [item]; - }); - }; - _proto.messages = function messages2(_messages) { - if (_messages) { - this._messages = deepMerge(newMessages(), _messages); - } - return this._messages; - }; - _proto.validate = function validate(source_, o2, oc) { - var _this2 = this; - if (o2 === void 0) { - o2 = {}; - } - if (oc === void 0) { - oc = function oc2() { - }; - } - var source = source_; - var options = o2; - var callback = oc; - if (typeof options === "function") { - callback = options; - options = {}; - } - if (!this.rules || Object.keys(this.rules).length === 0) { - if (callback) { - callback(null, source); - } - return Promise.resolve(source); - } - function complete(results) { - var errors = []; - var fields = {}; - function add2(e3) { - if (Array.isArray(e3)) { - var _errors; - errors = (_errors = errors).concat.apply(_errors, e3); - } else { - errors.push(e3); - } - } - for (var i3 = 0; i3 < results.length; i3++) { - add2(results[i3]); - } - if (!errors.length) { - callback(null, source); - } else { - fields = convertFieldsError(errors); - callback(errors, fields); - } - } - if (options.messages) { - var messages$1 = this.messages(); - if (messages$1 === messages) { - messages$1 = newMessages(); - } - deepMerge(messages$1, options.messages); - options.messages = messages$1; - } else { - options.messages = this.messages(); - } - var series = {}; - var keys2 = options.keys || Object.keys(this.rules); - keys2.forEach(function(z2) { - var arr = _this2.rules[z2]; - var value = source[z2]; - arr.forEach(function(r3) { - var rule = r3; - if (typeof rule.transform === "function") { - if (source === source_) { - source = _extends2({}, source); - } - value = source[z2] = rule.transform(value); - } - if (typeof rule === "function") { - rule = { - validator: rule - }; - } else { - rule = _extends2({}, rule); - } - rule.validator = _this2.getValidationMethod(rule); - if (!rule.validator) { - return; - } - rule.field = z2; - rule.fullField = rule.fullField || z2; - rule.type = _this2.getType(rule); - series[z2] = series[z2] || []; - series[z2].push({ - rule, - value, - source, - field: z2 - }); - }); - }); - var errorFields = {}; - return asyncMap(series, options, function(data, doIt) { - var rule = data.rule; - var deep = (rule.type === "object" || rule.type === "array") && (typeof rule.fields === "object" || typeof rule.defaultField === "object"); - deep = deep && (rule.required || !rule.required && data.value); - rule.field = data.field; - function addFullField(key2, schema) { - return _extends2({}, schema, { - fullField: rule.fullField + "." + key2, - fullFields: rule.fullFields ? [].concat(rule.fullFields, [key2]) : [key2] - }); - } - function cb(e3) { - if (e3 === void 0) { - e3 = []; - } - var errorList = Array.isArray(e3) ? e3 : [e3]; - if (!options.suppressWarning && errorList.length) { - Schema2.warning("async-validator:", errorList); - } - if (errorList.length && rule.message !== void 0) { - errorList = [].concat(rule.message); - } - var filledErrors = errorList.map(complementError(rule, source)); - if (options.first && filledErrors.length) { - errorFields[rule.field] = 1; - return doIt(filledErrors); - } - if (!deep) { - doIt(filledErrors); - } else { - if (rule.required && !data.value) { - if (rule.message !== void 0) { - filledErrors = [].concat(rule.message).map(complementError(rule, source)); - } else if (options.error) { - filledErrors = [options.error(rule, format(options.messages.required, rule.field))]; - } - return doIt(filledErrors); - } - var fieldsSchema = {}; - if (rule.defaultField) { - Object.keys(data.value).map(function(key2) { - fieldsSchema[key2] = rule.defaultField; - }); - } - fieldsSchema = _extends2({}, fieldsSchema, data.rule.fields); - var paredFieldsSchema = {}; - Object.keys(fieldsSchema).forEach(function(field) { - var fieldSchema = fieldsSchema[field]; - var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema]; - paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field)); - }); - var schema = new Schema2(paredFieldsSchema); - schema.messages(options.messages); - if (data.rule.options) { - data.rule.options.messages = options.messages; - data.rule.options.error = options.error; - } - schema.validate(data.value, data.rule.options || options, function(errs) { - var finalErrors = []; - if (filledErrors && filledErrors.length) { - finalErrors.push.apply(finalErrors, filledErrors); - } - if (errs && errs.length) { - finalErrors.push.apply(finalErrors, errs); - } - doIt(finalErrors.length ? finalErrors : null); - }); - } - } - var res; - if (rule.asyncValidator) { - res = rule.asyncValidator(rule, data.value, cb, data.source, options); - } else if (rule.validator) { - try { - res = rule.validator(rule, data.value, cb, data.source, options); - } catch (error) { - console.error == null ? void 0 : console.error(error); - if (!options.suppressValidatorError) { - setTimeout(function() { - throw error; - }, 0); - } - cb(error.message); - } - if (res === true) { - cb(); - } else if (res === false) { - cb(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + " fails"); - } else if (res instanceof Array) { - cb(res); - } else if (res instanceof Error) { - cb(res.message); - } - } - if (res && res.then) { - res.then(function() { - return cb(); - }, function(e3) { - return cb(e3); - }); - } - }, function(results) { - complete(results); - }, source); - }; - _proto.getType = function getType(rule) { - if (rule.type === void 0 && rule.pattern instanceof RegExp) { - rule.type = "pattern"; - } - if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) { - throw new Error(format("Unknown rule type %s", rule.type)); - } - return rule.type || "string"; - }; - _proto.getValidationMethod = function getValidationMethod(rule) { - if (typeof rule.validator === "function") { - return rule.validator; - } - var keys2 = Object.keys(rule); - var messageIndex = keys2.indexOf("message"); - if (messageIndex !== -1) { - keys2.splice(messageIndex, 1); - } - if (keys2.length === 1 && keys2[0] === "required") { - return validators.required; - } - return validators[this.getType(rule)] || void 0; - }; - return Schema2; -}(); -Schema.register = function register(type4, validator) { - if (typeof validator !== "function") { - throw new Error("Cannot register a validator by type, validator is not a function"); - } - validators[type4] = validator; -}; -Schema.warning = warning3; -Schema.messages = messages; -Schema.validators = validators; - -// node_modules/ant-design-vue/es/form/utils/typeUtil.js -function toArray4(value) { - if (value === void 0 || value === null) { - return []; - } - return Array.isArray(value) ? value : [value]; -} - -// node_modules/ant-design-vue/es/vc-util/get.js -function get2(entity, path2) { - let current = entity; - for (let i3 = 0; i3 < path2.length; i3 += 1) { - if (current === null || current === void 0) { - return void 0; - } - current = current[path2[i3]]; - } - return current; -} - -// node_modules/ant-design-vue/es/vc-util/set.js -function internalSet(entity, paths, value, removeIfUndefined) { - if (!paths.length) { - return value; - } - const [path2, ...restPath] = paths; - let clone3; - if (!entity && typeof path2 === "number") { - clone3 = []; - } else if (Array.isArray(entity)) { - clone3 = [...entity]; - } else { - clone3 = _extends({}, entity); - } - if (removeIfUndefined && value === void 0 && restPath.length === 1) { - delete clone3[path2][restPath[0]]; - } else { - clone3[path2] = internalSet(clone3[path2], restPath, value, removeIfUndefined); - } - return clone3; -} -function set2(entity, paths, value) { - let removeIfUndefined = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - if (paths.length && removeIfUndefined && value === void 0 && !get2(entity, paths.slice(0, -1))) { - return entity; - } - return internalSet(entity, paths, value, removeIfUndefined); -} - -// node_modules/ant-design-vue/es/form/utils/valueUtil.js -function getNamePath(path2) { - return toArray4(path2); -} -function getValue4(store, namePath) { - const value = get2(store, namePath); - return value; -} -function setValue(store, namePath, value) { - let removeIfUndefined = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - const newStore = set2(store, namePath, value, removeIfUndefined); - return newStore; -} -function containsNamePath(namePathList, namePath) { - return namePathList && namePathList.some((path2) => matchNamePath(path2, namePath)); -} -function isObject3(obj) { - return typeof obj === "object" && obj !== null && Object.getPrototypeOf(obj) === Object.prototype; -} -function internalSetValues(store, values2) { - const newStore = Array.isArray(store) ? [...store] : _extends({}, store); - if (!values2) { - return newStore; - } - Object.keys(values2).forEach((key2) => { - const prevValue = newStore[key2]; - const value = values2[key2]; - const recursive = isObject3(prevValue) && isObject3(value); - newStore[key2] = recursive ? internalSetValues(prevValue, value || {}) : value; - }); - return newStore; -} -function setValues(store) { - for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - restValues[_key - 1] = arguments[_key]; - } - return restValues.reduce((current, newStore) => internalSetValues(current, newStore), store); -} -function cloneByNamePathList(store, namePathList) { - let newStore = {}; - namePathList.forEach((namePath) => { - const value = getValue4(store, namePath); - newStore = setValue(newStore, namePath, value); - }); - return newStore; -} -function matchNamePath(namePath, changedNamePath) { - if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) { - return false; - } - return namePath.every((nameUnit, i3) => changedNamePath[i3] === nameUnit); -} - -// node_modules/ant-design-vue/es/form/utils/messages.js -var typeTemplate2 = "'${name}' is not a valid ${type}"; -var defaultValidateMessages = { - default: "Validation error on field '${name}'", - required: "'${name}' is required", - enum: "'${name}' must be one of [${enum}]", - whitespace: "'${name}' cannot be empty", - date: { - format: "'${name}' is invalid for format date", - parse: "'${name}' could not be parsed as date", - invalid: "'${name}' is invalid date" - }, - types: { - string: typeTemplate2, - method: typeTemplate2, - array: typeTemplate2, - object: typeTemplate2, - number: typeTemplate2, - date: typeTemplate2, - boolean: typeTemplate2, - integer: typeTemplate2, - float: typeTemplate2, - regexp: typeTemplate2, - email: typeTemplate2, - url: typeTemplate2, - hex: typeTemplate2 - }, - string: { - len: "'${name}' must be exactly ${len} characters", - min: "'${name}' must be at least ${min} characters", - max: "'${name}' cannot be longer than ${max} characters", - range: "'${name}' must be between ${min} and ${max} characters" - }, - number: { - len: "'${name}' must equal ${len}", - min: "'${name}' cannot be less than ${min}", - max: "'${name}' cannot be greater than ${max}", - range: "'${name}' must be between ${min} and ${max}" - }, - array: { - len: "'${name}' must be exactly ${len} in length", - min: "'${name}' cannot be less than ${min} in length", - max: "'${name}' cannot be greater than ${max} in length", - range: "'${name}' must be between ${min} and ${max} in length" - }, - pattern: { - mismatch: "'${name}' does not match pattern ${pattern}" - } -}; - -// node_modules/ant-design-vue/es/form/utils/validateUtil.js -var __awaiter2 = function(thisArg, _arguments, P2, generator2) { - function adopt(value) { - return value instanceof P2 ? value : new P2(function(resolve) { - resolve(value); - }); - } - return new (P2 || (P2 = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator2.next(value)); - } catch (e3) { - reject2(e3); - } - } - function rejected(value) { - try { - step(generator2["throw"](value)); - } catch (e3) { - reject2(e3); - } - } - function step(result2) { - result2.done ? resolve(result2.value) : adopt(result2.value).then(fulfilled, rejected); - } - step((generator2 = generator2.apply(thisArg, _arguments || [])).next()); - }); -}; -var AsyncValidator = Schema; -function replaceMessage(template2, kv) { - return template2.replace(/\$\{\w+\}/g, (str) => { - const key2 = str.slice(2, -1); - return kv[key2]; - }); -} -function validateRule(name, value, rule, options, messageVariables) { - return __awaiter2(this, void 0, void 0, function* () { - const cloneRule = _extends({}, rule); - delete cloneRule.ruleIndex; - delete cloneRule.trigger; - let subRuleField = null; - if (cloneRule && cloneRule.type === "array" && cloneRule.defaultField) { - subRuleField = cloneRule.defaultField; - delete cloneRule.defaultField; - } - const validator = new AsyncValidator({ - [name]: [cloneRule] - }); - const messages2 = setValues({}, defaultValidateMessages, options.validateMessages); - validator.messages(messages2); - let result2 = []; - try { - yield Promise.resolve(validator.validate({ - [name]: value - }, _extends({}, options))); - } catch (errObj) { - if (errObj.errors) { - result2 = errObj.errors.map((_ref, index3) => { - let { - message - } = _ref; - return ( - // Wrap VueNode with `key` - isValidElement(message) ? cloneVNode(message, { - key: `error_${index3}` - }) : message - ); - }); - } else { - console.error(errObj); - result2 = [messages2.default()]; - } - } - if (!result2.length && subRuleField) { - const subResults = yield Promise.all(value.map((subValue, i3) => validateRule(`${name}.${i3}`, subValue, subRuleField, options, messageVariables))); - return subResults.reduce((prev2, errors) => [...prev2, ...errors], []); - } - const kv = _extends(_extends(_extends({}, rule), { - name, - enum: (rule.enum || []).join(", ") - }), messageVariables); - const fillVariableResult = result2.map((error) => { - if (typeof error === "string") { - return replaceMessage(error, kv); - } - return error; - }); - return fillVariableResult; - }); -} -function validateRules(namePath, value, rules2, options, validateFirst, messageVariables) { - const name = namePath.join("."); - const filledRules = rules2.map((currentRule, ruleIndex) => { - const originValidatorFunc = currentRule.validator; - const cloneRule = _extends(_extends({}, currentRule), { - ruleIndex - }); - if (originValidatorFunc) { - cloneRule.validator = (rule, val, callback) => { - let hasPromise = false; - const wrappedCallback = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - Promise.resolve().then(() => { - warning(!hasPromise, "Your validator function has already return a promise. `callback` will be ignored."); - if (!hasPromise) { - callback(...args); - } - }); - }; - const promise = originValidatorFunc(rule, val, wrappedCallback); - hasPromise = promise && typeof promise.then === "function" && typeof promise.catch === "function"; - warning(hasPromise, "`callback` is deprecated. Please return a promise instead."); - if (hasPromise) { - promise.then(() => { - callback(); - }).catch((err) => { - callback(err || " "); - }); - } - }; - } - return cloneRule; - }).sort((_ref2, _ref3) => { - let { - warningOnly: w1, - ruleIndex: i1 - } = _ref2; - let { - warningOnly: w2, - ruleIndex: i22 - } = _ref3; - if (!!w1 === !!w2) { - return i1 - i22; - } - if (w1) { - return 1; - } - return -1; - }); - let summaryPromise; - if (validateFirst === true) { - summaryPromise = new Promise((resolve, reject2) => __awaiter2(this, void 0, void 0, function* () { - for (let i3 = 0; i3 < filledRules.length; i3 += 1) { - const rule = filledRules[i3]; - const errors = yield validateRule(name, value, rule, options, messageVariables); - if (errors.length) { - reject2([{ - errors, - rule - }]); - return; - } - } - resolve([]); - })); - } else { - const rulePromises = filledRules.map((rule) => validateRule(name, value, rule, options, messageVariables).then((errors) => ({ - errors, - rule - }))); - summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then((errors) => { - return Promise.reject(errors); - }); - } - summaryPromise.catch((e3) => e3); - return summaryPromise; -} -function finishOnAllFailed(rulePromises) { - return __awaiter2(this, void 0, void 0, function* () { - return Promise.all(rulePromises).then((errorsList) => { - const errors = [].concat(...errorsList); - return errors; - }); - }); -} -function finishOnFirstFailed(rulePromises) { - return __awaiter2(this, void 0, void 0, function* () { - let count = 0; - return new Promise((resolve) => { - rulePromises.forEach((promise) => { - promise.then((ruleError) => { - if (ruleError.errors.length) { - resolve([ruleError]); - } - count += 1; - if (count === rulePromises.length) { - resolve([]); - } - }); - }); - }); - }); -} - -// node_modules/ant-design-vue/es/form/context.js -var FormContextKey = Symbol("formContextKey"); -var useProvideForm = (state) => { - provide(FormContextKey, state); -}; -var useInjectForm = () => { - return inject(FormContextKey, { - name: computed(() => void 0), - labelAlign: computed(() => "right"), - vertical: computed(() => false), - // eslint-disable-next-line @typescript-eslint/no-unused-vars - addField: (_eventKey, _field) => { - }, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - removeField: (_eventKey) => { - }, - model: computed(() => void 0), - rules: computed(() => void 0), - colon: computed(() => void 0), - labelWrap: computed(() => void 0), - labelCol: computed(() => void 0), - requiredMark: computed(() => false), - validateTrigger: computed(() => void 0), - onValidate: () => { - }, - validateMessages: computed(() => defaultValidateMessages) - }); -}; -var FormItemPrefixContextKey = Symbol("formItemPrefixContextKey"); -var useProvideFormItemPrefix = (state) => { - provide(FormItemPrefixContextKey, state); -}; -var useInjectFormItemPrefix = () => { - return inject(FormItemPrefixContextKey, { - prefixCls: computed(() => "") - }); -}; - -// node_modules/ant-design-vue/es/grid/Col.js -function parseFlex(flex) { - if (typeof flex === "number") { - return `${flex} ${flex} auto`; - } - if (/^\d+(\.\d+)?(px|em|rem|%)$/.test(flex)) { - return `0 0 ${flex}`; - } - return flex; -} -var colProps = () => ({ - span: [String, Number], - order: [String, Number], - offset: [String, Number], - push: [String, Number], - pull: [String, Number], - xs: { - type: [String, Number, Object], - default: void 0 - }, - sm: { - type: [String, Number, Object], - default: void 0 - }, - md: { - type: [String, Number, Object], - default: void 0 - }, - lg: { - type: [String, Number, Object], - default: void 0 - }, - xl: { - type: [String, Number, Object], - default: void 0 - }, - xxl: { - type: [String, Number, Object], - default: void 0 - }, - prefixCls: String, - flex: [String, Number] -}); -var sizes = ["xs", "sm", "md", "lg", "xl", "xxl"]; -var Col_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACol", - inheritAttrs: false, - props: colProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - gutter, - supportFlexGap, - wrap: wrap2 - } = useInjectRow(); - const { - prefixCls, - direction - } = useConfigInject_default("col", props4); - const [wrapSSR, hashId] = useColStyle(prefixCls); - const classes = computed(() => { - const { - span, - order, - offset: offset4, - push, - pull: pull2 - } = props4; - const pre = prefixCls.value; - let sizeClassObj = {}; - sizes.forEach((size2) => { - let sizeProps = {}; - const propSize = props4[size2]; - if (typeof propSize === "number") { - sizeProps.span = propSize; - } else if (typeof propSize === "object") { - sizeProps = propSize || {}; - } - sizeClassObj = _extends(_extends({}, sizeClassObj), { - [`${pre}-${size2}-${sizeProps.span}`]: sizeProps.span !== void 0, - [`${pre}-${size2}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0, - [`${pre}-${size2}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0, - [`${pre}-${size2}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0, - [`${pre}-${size2}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0, - [`${pre}-rtl`]: direction.value === "rtl" - }); - }); - return classNames_default(pre, { - [`${pre}-${span}`]: span !== void 0, - [`${pre}-order-${order}`]: order, - [`${pre}-offset-${offset4}`]: offset4, - [`${pre}-push-${push}`]: push, - [`${pre}-pull-${pull2}`]: pull2 - }, sizeClassObj, attrs.class, hashId.value); - }); - const mergedStyle = computed(() => { - const { - flex - } = props4; - const gutterVal = gutter.value; - const style = {}; - if (gutterVal && gutterVal[0] > 0) { - const horizontalGutter = `${gutterVal[0] / 2}px`; - style.paddingLeft = horizontalGutter; - style.paddingRight = horizontalGutter; - } - if (gutterVal && gutterVal[1] > 0 && !supportFlexGap.value) { - const verticalGutter = `${gutterVal[1] / 2}px`; - style.paddingTop = verticalGutter; - style.paddingBottom = verticalGutter; - } - if (flex) { - style.flex = parseFlex(flex); - if (wrap2.value === false && !style.minWidth) { - style.minWidth = 0; - } - } - return style; - }); - return () => { - var _a2; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classes.value, - "style": [mergedStyle.value, attrs.style] - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); - -// node_modules/ant-design-vue/es/form/FormItemLabel.js -var FormItemLabel = (props4, _ref) => { - let { - slots, - emit, - attrs - } = _ref; - var _a2, _b, _c, _d, _e; - const { - prefixCls, - htmlFor, - labelCol, - labelAlign, - colon, - required: required4, - requiredMark - } = _extends(_extends({}, props4), attrs); - const [formLocale] = useLocaleReceiver("Form"); - const label = (_a2 = props4.label) !== null && _a2 !== void 0 ? _a2 : (_b = slots.label) === null || _b === void 0 ? void 0 : _b.call(slots); - if (!label) return null; - const { - vertical, - labelAlign: contextLabelAlign, - labelCol: contextLabelCol, - labelWrap, - colon: contextColon - } = useInjectForm(); - const mergedLabelCol = labelCol || (contextLabelCol === null || contextLabelCol === void 0 ? void 0 : contextLabelCol.value) || {}; - const mergedLabelAlign = labelAlign || (contextLabelAlign === null || contextLabelAlign === void 0 ? void 0 : contextLabelAlign.value); - const labelClsBasic = `${prefixCls}-item-label`; - const labelColClassName = classNames_default(labelClsBasic, mergedLabelAlign === "left" && `${labelClsBasic}-left`, mergedLabelCol.class, { - [`${labelClsBasic}-wrap`]: !!labelWrap.value - }); - let labelChildren = label; - const computedColon = colon === true || (contextColon === null || contextColon === void 0 ? void 0 : contextColon.value) !== false && colon !== false; - const haveColon = computedColon && !vertical.value; - if (haveColon && typeof label === "string" && label.trim() !== "") { - labelChildren = label.replace(/[:|:]\s*$/, ""); - } - if (props4.tooltip || slots.tooltip) { - const tooltipNode = createVNode("span", { - "class": `${prefixCls}-item-tooltip` - }, [createVNode(tooltip_default, { - "title": props4.tooltip - }, { - default: () => [createVNode(QuestionCircleOutlined_default, null, null)] - })]); - labelChildren = createVNode(Fragment, null, [labelChildren, slots.tooltip ? (_c = slots.tooltip) === null || _c === void 0 ? void 0 : _c.call(slots, { - class: `${prefixCls}-item-tooltip` - }) : tooltipNode]); - } - if (requiredMark === "optional" && !required4) { - labelChildren = createVNode(Fragment, null, [labelChildren, createVNode("span", { - "class": `${prefixCls}-item-optional` - }, [((_d = formLocale.value) === null || _d === void 0 ? void 0 : _d.optional) || ((_e = en_US_default6.Form) === null || _e === void 0 ? void 0 : _e.optional)])]); - } - const labelClassName = classNames_default({ - [`${prefixCls}-item-required`]: required4, - [`${prefixCls}-item-required-mark-optional`]: requiredMark === "optional", - [`${prefixCls}-item-no-colon`]: !computedColon - }); - return createVNode(Col_default, _objectSpread2(_objectSpread2({}, mergedLabelCol), {}, { - "class": labelColClassName - }), { - default: () => [createVNode("label", { - "for": htmlFor, - "class": labelClassName, - "title": typeof label === "string" ? label : "", - "onClick": (e3) => emit("click", e3) - }, [labelChildren])] - }); -}; -FormItemLabel.displayName = "FormItemLabel"; -FormItemLabel.inheritAttrs = false; -var FormItemLabel_default = FormItemLabel; - -// node_modules/ant-design-vue/es/form/style/explain.js -var genFormValidateMotionStyle = (token2) => { - const { - componentCls - } = token2; - const helpCls = `${componentCls}-show-help`; - const helpItemCls = `${componentCls}-show-help-item`; - return { - [helpCls]: { - // Explain holder - transition: `opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}`, - "&-appear, &-enter": { - opacity: 0, - "&-active": { - opacity: 1 - } - }, - "&-leave": { - opacity: 1, - "&-active": { - opacity: 0 - } - }, - // Explain - [helpItemCls]: { - overflow: "hidden", - transition: `height ${token2.motionDurationSlow} ${token2.motionEaseInOut}, - opacity ${token2.motionDurationSlow} ${token2.motionEaseInOut}, - transform ${token2.motionDurationSlow} ${token2.motionEaseInOut} !important`, - [`&${helpItemCls}-appear, &${helpItemCls}-enter`]: { - transform: `translateY(-5px)`, - opacity: 0, - [`&-active`]: { - transform: "translateY(0)", - opacity: 1 - } - }, - [`&${helpItemCls}-leave-active`]: { - transform: `translateY(-5px)` - } - } - } - }; -}; -var explain_default = genFormValidateMotionStyle; - -// node_modules/ant-design-vue/es/form/style/index.js -var resetForm = (token2) => ({ - legend: { - display: "block", - width: "100%", - marginBottom: token2.marginLG, - padding: 0, - color: token2.colorTextDescription, - fontSize: token2.fontSizeLG, - lineHeight: "inherit", - border: 0, - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}` - }, - label: { - fontSize: token2.fontSize - }, - 'input[type="search"]': { - boxSizing: "border-box" - }, - // Position radios and checkboxes better - 'input[type="radio"], input[type="checkbox"]': { - lineHeight: "normal" - }, - 'input[type="file"]': { - display: "block" - }, - // Make range inputs behave like textual form controls - 'input[type="range"]': { - display: "block", - width: "100%" - }, - // Make multiple select elements height not fixed - "select[multiple], select[size]": { - height: "auto" - }, - // Focus for file, radio, and checkbox - [`input[type='file']:focus, - input[type='radio']:focus, - input[type='checkbox']:focus`]: { - outline: 0, - boxShadow: `0 0 0 ${token2.controlOutlineWidth}px ${token2.controlOutline}` - }, - // Adjust output element - output: { - display: "block", - paddingTop: 15, - color: token2.colorText, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight - } -}); -var genFormSize = (token2, height) => { - const { - formItemCls - } = token2; - return { - [formItemCls]: { - [`${formItemCls}-label > label`]: { - height - }, - [`${formItemCls}-control-input`]: { - minHeight: height - } - } - }; -}; -var genFormStyle = (token2) => { - const { - componentCls - } = token2; - return { - [token2.componentCls]: _extends(_extends(_extends({}, resetComponent(token2)), resetForm(token2)), { - [`${componentCls}-text`]: { - display: "inline-block", - paddingInlineEnd: token2.paddingSM - }, - // ================================================================ - // = Size = - // ================================================================ - "&-small": _extends({}, genFormSize(token2, token2.controlHeightSM)), - "&-large": _extends({}, genFormSize(token2, token2.controlHeightLG)) - }) - }; -}; -var genFormItemStyle = (token2) => { - const { - formItemCls, - iconCls, - componentCls, - rootPrefixCls - } = token2; - return { - [formItemCls]: _extends(_extends({}, resetComponent(token2)), { - marginBottom: token2.marginLG, - verticalAlign: "top", - "&-with-help": { - transition: "none" - }, - [`&-hidden, - &-hidden.${rootPrefixCls}-row`]: { - // https://github.com/ant-design/ant-design/issues/26141 - display: "none" - }, - "&-has-warning": { - [`${formItemCls}-split`]: { - color: token2.colorError - } - }, - "&-has-error": { - [`${formItemCls}-split`]: { - color: token2.colorWarning - } - }, - // ============================================================== - // = Label = - // ============================================================== - [`${formItemCls}-label`]: { - display: "inline-block", - flexGrow: 0, - overflow: "hidden", - whiteSpace: "nowrap", - textAlign: "end", - verticalAlign: "middle", - "&-left": { - textAlign: "start" - }, - "&-wrap": { - overflow: "unset", - lineHeight: `${token2.lineHeight} - 0.25em`, - whiteSpace: "unset" - }, - "> label": { - position: "relative", - display: "inline-flex", - alignItems: "center", - maxWidth: "100%", - height: token2.controlHeight, - color: token2.colorTextHeading, - fontSize: token2.fontSize, - [`> ${iconCls}`]: { - fontSize: token2.fontSize, - verticalAlign: "top" - }, - // Required mark - [`&${formItemCls}-required:not(${formItemCls}-required-mark-optional)::before`]: { - display: "inline-block", - marginInlineEnd: token2.marginXXS, - color: token2.colorError, - fontSize: token2.fontSize, - fontFamily: "SimSun, sans-serif", - lineHeight: 1, - content: '"*"', - [`${componentCls}-hide-required-mark &`]: { - display: "none" - } - }, - // Optional mark - [`${formItemCls}-optional`]: { - display: "inline-block", - marginInlineStart: token2.marginXXS, - color: token2.colorTextDescription, - [`${componentCls}-hide-required-mark &`]: { - display: "none" - } - }, - // Optional mark - [`${formItemCls}-tooltip`]: { - color: token2.colorTextDescription, - cursor: "help", - writingMode: "horizontal-tb", - marginInlineStart: token2.marginXXS - }, - "&::after": { - content: '":"', - position: "relative", - marginBlock: 0, - marginInlineStart: token2.marginXXS / 2, - marginInlineEnd: token2.marginXS - }, - [`&${formItemCls}-no-colon::after`]: { - content: '" "' - } - } - }, - // ============================================================== - // = Input = - // ============================================================== - [`${formItemCls}-control`]: { - display: "flex", - flexDirection: "column", - flexGrow: 1, - [`&:first-child:not([class^="'${rootPrefixCls}-col-'"]):not([class*="' ${rootPrefixCls}-col-'"])`]: { - width: "100%" - }, - "&-input": { - position: "relative", - display: "flex", - alignItems: "center", - minHeight: token2.controlHeight, - "&-content": { - flex: "auto", - maxWidth: "100%" - } - } - }, - // ============================================================== - // = Explain = - // ============================================================== - [formItemCls]: { - "&-explain, &-extra": { - clear: "both", - color: token2.colorTextDescription, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight - }, - "&-explain-connected": { - width: "100%" - }, - "&-extra": { - minHeight: token2.controlHeightSM, - transition: `color ${token2.motionDurationMid} ${token2.motionEaseOut}` - // sync input color transition - }, - "&-explain": { - "&-error": { - color: token2.colorError - }, - "&-warning": { - color: token2.colorWarning - } - } - }, - [`&-with-help ${formItemCls}-explain`]: { - height: "auto", - opacity: 1 - }, - // ============================================================== - // = Feedback Icon = - // ============================================================== - [`${formItemCls}-feedback-icon`]: { - fontSize: token2.fontSize, - textAlign: "center", - visibility: "visible", - animationName: zoomIn, - animationDuration: token2.motionDurationMid, - animationTimingFunction: token2.motionEaseOutBack, - pointerEvents: "none", - "&-success": { - color: token2.colorSuccess - }, - "&-error": { - color: token2.colorError - }, - "&-warning": { - color: token2.colorWarning - }, - "&-validating": { - color: token2.colorPrimary - } - } - }) - }; -}; -var genHorizontalStyle = (token2) => { - const { - componentCls, - formItemCls, - rootPrefixCls - } = token2; - return { - [`${componentCls}-horizontal`]: { - [`${formItemCls}-label`]: { - flexGrow: 0 - }, - [`${formItemCls}-control`]: { - flex: "1 1 0", - // https://github.com/ant-design/ant-design/issues/32777 - // https://github.com/ant-design/ant-design/issues/33773 - minWidth: 0 - }, - // https://github.com/ant-design/ant-design/issues/32980 - [`${formItemCls}-label.${rootPrefixCls}-col-24 + ${formItemCls}-control`]: { - minWidth: "unset" - } - } - }; -}; -var genInlineStyle = (token2) => { - const { - componentCls, - formItemCls - } = token2; - return { - [`${componentCls}-inline`]: { - display: "flex", - flexWrap: "wrap", - [formItemCls]: { - flex: "none", - flexWrap: "nowrap", - marginInlineEnd: token2.margin, - marginBottom: 0, - "&-with-help": { - marginBottom: token2.marginLG - }, - [`> ${formItemCls}-label, - > ${formItemCls}-control`]: { - display: "inline-block", - verticalAlign: "top" - }, - [`> ${formItemCls}-label`]: { - flex: "none" - }, - [`${componentCls}-text`]: { - display: "inline-block" - }, - [`${formItemCls}-has-feedback`]: { - display: "inline-block" - } - } - } - }; -}; -var makeVerticalLayoutLabel = (token2) => ({ - margin: 0, - padding: `0 0 ${token2.paddingXS}px`, - whiteSpace: "initial", - textAlign: "start", - "> label": { - margin: 0, - "&::after": { - display: "none" - } - } -}); -var makeVerticalLayout = (token2) => { - const { - componentCls, - formItemCls - } = token2; - return { - [`${formItemCls} ${formItemCls}-label`]: makeVerticalLayoutLabel(token2), - [componentCls]: { - [formItemCls]: { - flexWrap: "wrap", - [`${formItemCls}-label, - ${formItemCls}-control`]: { - flex: "0 0 100%", - maxWidth: "100%" - } - } - } - }; -}; -var genVerticalStyle = (token2) => { - const { - componentCls, - formItemCls, - rootPrefixCls - } = token2; - return { - [`${componentCls}-vertical`]: { - [formItemCls]: { - "&-row": { - flexDirection: "column" - }, - "&-label > label": { - height: "auto" - }, - [`${componentCls}-item-control`]: { - width: "100%" - } - } - }, - [`${componentCls}-vertical ${formItemCls}-label, - .${rootPrefixCls}-col-24${formItemCls}-label, - .${rootPrefixCls}-col-xl-24${formItemCls}-label`]: makeVerticalLayoutLabel(token2), - [`@media (max-width: ${token2.screenXSMax}px)`]: [makeVerticalLayout(token2), { - [componentCls]: { - [`.${rootPrefixCls}-col-xs-24${formItemCls}-label`]: makeVerticalLayoutLabel(token2) - } - }], - [`@media (max-width: ${token2.screenSMMax}px)`]: { - [componentCls]: { - [`.${rootPrefixCls}-col-sm-24${formItemCls}-label`]: makeVerticalLayoutLabel(token2) - } - }, - [`@media (max-width: ${token2.screenMDMax}px)`]: { - [componentCls]: { - [`.${rootPrefixCls}-col-md-24${formItemCls}-label`]: makeVerticalLayoutLabel(token2) - } - }, - [`@media (max-width: ${token2.screenLGMax}px)`]: { - [componentCls]: { - [`.${rootPrefixCls}-col-lg-24${formItemCls}-label`]: makeVerticalLayoutLabel(token2) - } - } - }; -}; -var style_default25 = genComponentStyleHook("Form", (token2, _ref) => { - let { - rootPrefixCls - } = _ref; - const formToken = merge(token2, { - formItemCls: `${token2.componentCls}-item`, - rootPrefixCls - }); - return [genFormStyle(formToken), genFormItemStyle(formToken), explain_default(formToken), genHorizontalStyle(formToken), genInlineStyle(formToken), genVerticalStyle(formToken), collapse_default(formToken), zoomIn]; -}); - -// node_modules/ant-design-vue/es/form/ErrorList.js -var ErrorList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ErrorList", - inheritAttrs: false, - props: ["errors", "help", "onErrorVisibleChanged", "helpStatus", "warnings"], - setup(props4, _ref) { - let { - attrs - } = _ref; - const { - prefixCls, - status - } = useInjectFormItemPrefix(); - const baseClassName = computed(() => `${prefixCls.value}-item-explain`); - const visible = computed(() => !!(props4.errors && props4.errors.length)); - const innerStatus = ref(status.value); - const [, hashId] = style_default25(prefixCls); - watch([visible, status], () => { - if (visible.value) { - innerStatus.value = status.value; - } - }); - return () => { - var _a2, _b; - const colMItem = collapseMotion_default(`${prefixCls.value}-show-help-item`); - const transitionGroupProps = getTransitionGroupProps(`${prefixCls.value}-show-help-item`, colMItem); - transitionGroupProps.role = "alert"; - transitionGroupProps.class = [hashId.value, baseClassName.value, attrs.class, `${prefixCls.value}-show-help`]; - return createVNode(Transition, _objectSpread2(_objectSpread2({}, getTransitionProps(`${prefixCls.value}-show-help`)), {}, { - "onAfterEnter": () => props4.onErrorVisibleChanged(true), - "onAfterLeave": () => props4.onErrorVisibleChanged(false) - }), { - default: () => [withDirectives(createVNode(TransitionGroup, _objectSpread2(_objectSpread2({}, transitionGroupProps), {}, { - "tag": "div" - }), { - default: () => [(_b = props4.errors) === null || _b === void 0 ? void 0 : _b.map((error, index3) => createVNode("div", { - "key": index3, - "class": innerStatus.value ? `${baseClassName.value}-${innerStatus.value}` : "" - }, [error]))] - }), [[vShow, !!((_a2 = props4.errors) === null || _a2 === void 0 ? void 0 : _a2.length)]])] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/form/FormItemInput.js -var FormItemInput = defineComponent({ - compatConfig: { - MODE: 3 - }, - slots: Object, - inheritAttrs: false, - props: ["prefixCls", "errors", "hasFeedback", "onDomErrorVisibleChange", "wrapperCol", "help", "extra", "status", "marginBottom", "onErrorVisibleChanged"], - setup(props4, _ref) { - let { - slots - } = _ref; - const formContext = useInjectForm(); - const { - wrapperCol: contextWrapperCol - } = formContext; - const subFormContext = _extends({}, formContext); - delete subFormContext.labelCol; - delete subFormContext.wrapperCol; - useProvideForm(subFormContext); - useProvideFormItemPrefix({ - prefixCls: computed(() => props4.prefixCls), - status: computed(() => props4.status) - }); - return () => { - var _a2, _b, _c; - const { - prefixCls, - wrapperCol, - marginBottom, - onErrorVisibleChanged, - help = (_a2 = slots.help) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - errors = filterEmpty((_b = slots.errors) === null || _b === void 0 ? void 0 : _b.call(slots)), - // hasFeedback, - // status, - extra = (_c = slots.extra) === null || _c === void 0 ? void 0 : _c.call(slots) - } = props4; - const baseClassName = `${prefixCls}-item`; - const mergedWrapperCol = wrapperCol || (contextWrapperCol === null || contextWrapperCol === void 0 ? void 0 : contextWrapperCol.value) || {}; - const className = classNames_default(`${baseClassName}-control`, mergedWrapperCol.class); - return createVNode(Col_default, _objectSpread2(_objectSpread2({}, mergedWrapperCol), {}, { - "class": className - }), { - default: () => { - var _a3; - return createVNode(Fragment, null, [createVNode("div", { - "class": `${baseClassName}-control-input` - }, [createVNode("div", { - "class": `${baseClassName}-control-input-content` - }, [(_a3 = slots.default) === null || _a3 === void 0 ? void 0 : _a3.call(slots)])]), marginBottom !== null || errors.length ? createVNode("div", { - "style": { - display: "flex", - flexWrap: "nowrap" - } - }, [createVNode(ErrorList_default, { - "errors": errors, - "help": help, - "class": `${baseClassName}-explain-connected`, - "onErrorVisibleChanged": onErrorVisibleChanged - }, null), !!marginBottom && createVNode("div", { - "style": { - width: 0, - height: `${marginBottom}px` - } - }, null)]) : null, extra ? createVNode("div", { - "class": `${baseClassName}-extra` - }, [extra]) : null]); - } - }); - }; - } -}); -var FormItemInput_default = FormItemInput; - -// node_modules/ant-design-vue/es/form/utils/useDebounce.js -function useDebounce(value) { - const cacheValue = shallowRef(value.value.slice()); - let timeout = null; - watchEffect(() => { - clearTimeout(timeout); - timeout = setTimeout(() => { - cacheValue.value = value.value; - }, value.value.length ? 0 : 10); - }); - return cacheValue; -} - -// node_modules/ant-design-vue/es/form/FormItem.js -var ValidateStatuses = tuple("success", "warning", "error", "validating", ""); -var iconMap = { - success: CheckCircleFilled_default, - warning: ExclamationCircleFilled_default, - error: CloseCircleFilled_default, - validating: LoadingOutlined_default -}; -function getPropByPath(obj, namePathList, strict) { - let tempObj = obj; - const keyArr = namePathList; - let i3 = 0; - try { - for (let len = keyArr.length; i3 < len - 1; ++i3) { - if (!tempObj && !strict) break; - const key2 = keyArr[i3]; - if (key2 in tempObj) { - tempObj = tempObj[key2]; - } else { - if (strict) { - throw Error("please transfer a valid name path to form item!"); - } - break; - } - } - if (strict && !tempObj) { - throw Error("please transfer a valid name path to form item!"); - } - } catch (error) { - console.error("please transfer a valid name path to form item!"); - } - return { - o: tempObj, - k: keyArr[i3], - v: tempObj ? tempObj[keyArr[i3]] : void 0 - }; -} -var formItemProps = () => ({ - htmlFor: String, - prefixCls: String, - label: vue_types_default.any, - help: vue_types_default.any, - extra: vue_types_default.any, - labelCol: { - type: Object - }, - wrapperCol: { - type: Object - }, - hasFeedback: { - type: Boolean, - default: false - }, - colon: { - type: Boolean, - default: void 0 - }, - labelAlign: String, - prop: { - type: [String, Number, Array] - }, - name: { - type: [String, Number, Array] - }, - rules: [Array, Object], - autoLink: { - type: Boolean, - default: true - }, - required: { - type: Boolean, - default: void 0 - }, - validateFirst: { - type: Boolean, - default: void 0 - }, - validateStatus: vue_types_default.oneOf(tuple("", "success", "warning", "error", "validating")), - validateTrigger: { - type: [String, Array] - }, - messageVariables: { - type: Object - }, - hidden: Boolean, - noStyle: Boolean, - tooltip: String -}); -var indexGuid3 = 0; -var defaultItemNamePrefixCls = "form_item"; -var FormItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AFormItem", - inheritAttrs: false, - __ANT_NEW_FORM_ITEM: true, - props: formItemProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - warning(props4.prop === void 0, `\`prop\` is deprecated. Please use \`name\` instead.`); - const eventKey = `form-item-${++indexGuid3}`; - const { - prefixCls - } = useConfigInject_default("form", props4); - const [wrapSSR, hashId] = style_default25(prefixCls); - const itemRef = shallowRef(); - const formContext = useInjectForm(); - const fieldName = computed(() => props4.name || props4.prop); - const errors = shallowRef([]); - const validateDisabled = shallowRef(false); - const inputRef = shallowRef(); - const namePath = computed(() => { - const val = fieldName.value; - return getNamePath(val); - }); - const fieldId = computed(() => { - if (!namePath.value.length) { - return void 0; - } else { - const formName = formContext.name.value; - const mergedId = namePath.value.join("_"); - return formName ? `${formName}_${mergedId}` : `${defaultItemNamePrefixCls}_${mergedId}`; - } - }); - const getNewFieldValue = () => { - const model = formContext.model.value; - if (!model || !fieldName.value) { - return; - } else { - return getPropByPath(model, namePath.value, true).v; - } - }; - const fieldValue = computed(() => getNewFieldValue()); - const initialValue = shallowRef(cloneDeep_default(fieldValue.value)); - const mergedValidateTrigger = computed(() => { - let validateTrigger = props4.validateTrigger !== void 0 ? props4.validateTrigger : formContext.validateTrigger.value; - validateTrigger = validateTrigger === void 0 ? "change" : validateTrigger; - return toArray4(validateTrigger); - }); - const rulesRef = computed(() => { - let formRules = formContext.rules.value; - const selfRules = props4.rules; - const requiredRule = props4.required !== void 0 ? { - required: !!props4.required, - trigger: mergedValidateTrigger.value - } : []; - const prop = getPropByPath(formRules, namePath.value); - formRules = formRules ? prop.o[prop.k] || prop.v : []; - const rules2 = [].concat(selfRules || formRules || []); - if (find_default(rules2, (rule) => rule.required)) { - return rules2; - } else { - return rules2.concat(requiredRule); - } - }); - const isRequired2 = computed(() => { - const rules2 = rulesRef.value; - let isRequired3 = false; - if (rules2 && rules2.length) { - rules2.every((rule) => { - if (rule.required) { - isRequired3 = true; - return false; - } - return true; - }); - } - return isRequired3 || props4.required; - }); - const validateState = shallowRef(); - watchEffect(() => { - validateState.value = props4.validateStatus; - }); - const messageVariables = computed(() => { - let variables = {}; - if (typeof props4.label === "string") { - variables.label = props4.label; - } else if (props4.name) { - variables.label = String(props4.name); - } - if (props4.messageVariables) { - variables = _extends(_extends({}, variables), props4.messageVariables); - } - return variables; - }); - const validateRules2 = (options) => { - if (namePath.value.length === 0) { - return; - } - const { - validateFirst = false - } = props4; - const { - triggerName - } = options || {}; - let filteredRules = rulesRef.value; - if (triggerName) { - filteredRules = filteredRules.filter((rule) => { - const { - trigger: trigger2 - } = rule; - if (!trigger2 && !mergedValidateTrigger.value.length) { - return true; - } - const triggerList = toArray4(trigger2 || mergedValidateTrigger.value); - return triggerList.includes(triggerName); - }); - } - if (!filteredRules.length) { - return Promise.resolve(); - } - const promise = validateRules(namePath.value, fieldValue.value, filteredRules, _extends({ - validateMessages: formContext.validateMessages.value - }, options), validateFirst, messageVariables.value); - validateState.value = "validating"; - errors.value = []; - promise.catch((e3) => e3).then(function() { - let results = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - if (validateState.value === "validating") { - const res = results.filter((result2) => result2 && result2.errors.length); - validateState.value = res.length ? "error" : "success"; - errors.value = res.map((r3) => r3.errors); - formContext.onValidate(fieldName.value, !errors.value.length, errors.value.length ? toRaw(errors.value[0]) : null); - } - }); - return promise; - }; - const onFieldBlur = () => { - validateRules2({ - triggerName: "blur" - }); - }; - const onFieldChange = () => { - if (validateDisabled.value) { - validateDisabled.value = false; - return; - } - validateRules2({ - triggerName: "change" - }); - }; - const clearValidate = () => { - validateState.value = props4.validateStatus; - validateDisabled.value = false; - errors.value = []; - }; - const resetField = () => { - var _a2; - validateState.value = props4.validateStatus; - validateDisabled.value = true; - errors.value = []; - const model = formContext.model.value || {}; - const value = fieldValue.value; - const prop = getPropByPath(model, namePath.value, true); - if (Array.isArray(value)) { - prop.o[prop.k] = [].concat((_a2 = initialValue.value) !== null && _a2 !== void 0 ? _a2 : []); - } else { - prop.o[prop.k] = initialValue.value; - } - nextTick(() => { - validateDisabled.value = false; - }); - }; - const htmlFor = computed(() => { - return props4.htmlFor === void 0 ? fieldId.value : props4.htmlFor; - }); - const onLabelClick = () => { - const id = htmlFor.value; - if (!id || !inputRef.value) { - return; - } - const control = inputRef.value.$el.querySelector(`[id="${id}"]`); - if (control && control.focus) { - control.focus(); - } - }; - expose({ - onFieldBlur, - onFieldChange, - clearValidate, - resetField - }); - useProvideFormItemContext({ - id: fieldId, - onFieldBlur: () => { - if (props4.autoLink) { - onFieldBlur(); - } - }, - onFieldChange: () => { - if (props4.autoLink) { - onFieldChange(); - } - }, - clearValidate - }, computed(() => { - return !!(props4.autoLink && formContext.model.value && fieldName.value); - })); - let registered = false; - watch(fieldName, (val) => { - if (val) { - if (!registered) { - registered = true; - formContext.addField(eventKey, { - fieldValue, - fieldId, - fieldName, - resetField, - clearValidate, - namePath, - validateRules: validateRules2, - rules: rulesRef - }); - } - } else { - registered = false; - formContext.removeField(eventKey); - } - }, { - immediate: true - }); - onBeforeUnmount(() => { - formContext.removeField(eventKey); - }); - const debounceErrors = useDebounce(errors); - const mergedValidateStatus = computed(() => { - if (props4.validateStatus !== void 0) { - return props4.validateStatus; - } else if (debounceErrors.value.length) { - return "error"; - } - return validateState.value; - }); - const itemClassName = computed(() => ({ - [`${prefixCls.value}-item`]: true, - [hashId.value]: true, - // Status - [`${prefixCls.value}-item-has-feedback`]: mergedValidateStatus.value && props4.hasFeedback, - [`${prefixCls.value}-item-has-success`]: mergedValidateStatus.value === "success", - [`${prefixCls.value}-item-has-warning`]: mergedValidateStatus.value === "warning", - [`${prefixCls.value}-item-has-error`]: mergedValidateStatus.value === "error", - [`${prefixCls.value}-item-is-validating`]: mergedValidateStatus.value === "validating", - [`${prefixCls.value}-item-hidden`]: props4.hidden - })); - const formItemInputContext = reactive({}); - FormItemInputContext.useProvide(formItemInputContext); - watchEffect(() => { - let feedbackIcon; - if (props4.hasFeedback) { - const IconNode = mergedValidateStatus.value && iconMap[mergedValidateStatus.value]; - feedbackIcon = IconNode ? createVNode("span", { - "class": classNames_default(`${prefixCls.value}-item-feedback-icon`, `${prefixCls.value}-item-feedback-icon-${mergedValidateStatus.value}`) - }, [createVNode(IconNode, null, null)]) : null; - } - _extends(formItemInputContext, { - status: mergedValidateStatus.value, - hasFeedback: props4.hasFeedback, - feedbackIcon, - isFormItemInput: true - }); - }); - const marginBottom = shallowRef(null); - const showMarginOffset = shallowRef(false); - const updateMarginBottom = () => { - if (itemRef.value) { - const itemStyle = getComputedStyle(itemRef.value); - marginBottom.value = parseInt(itemStyle.marginBottom, 10); - } - }; - onMounted(() => { - watch(showMarginOffset, () => { - if (showMarginOffset.value) { - updateMarginBottom(); - } - }, { - flush: "post", - immediate: true - }); - }); - const onErrorVisibleChanged = (nextVisible) => { - if (!nextVisible) { - marginBottom.value = null; - } - }; - return () => { - var _a2, _b; - if (props4.noStyle) return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - const help = (_b = props4.help) !== null && _b !== void 0 ? _b : slots.help ? filterEmpty(slots.help()) : null; - const withHelp = !!(help !== void 0 && help !== null && Array.isArray(help) && help.length || debounceErrors.value.length); - showMarginOffset.value = withHelp; - return wrapSSR(createVNode("div", { - "class": [itemClassName.value, withHelp ? `${prefixCls.value}-item-with-help` : "", attrs.class], - "ref": itemRef - }, [createVNode(Row_default, _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": `${prefixCls.value}-row`, - "key": "row" - }), { - default: () => { - var _a3, _b2; - return createVNode(Fragment, null, [createVNode(FormItemLabel_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "htmlFor": htmlFor.value, - "required": isRequired2.value, - "requiredMark": formContext.requiredMark.value, - "prefixCls": prefixCls.value, - "onClick": onLabelClick, - "label": props4.label - }), { - label: slots.label, - tooltip: slots.tooltip - }), createVNode(FormItemInput_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "errors": help !== void 0 && help !== null ? toArray4(help) : debounceErrors.value, - "marginBottom": marginBottom.value, - "prefixCls": prefixCls.value, - "status": mergedValidateStatus.value, - "ref": inputRef, - "help": help, - "extra": (_a3 = props4.extra) !== null && _a3 !== void 0 ? _a3 : (_b2 = slots.extra) === null || _b2 === void 0 ? void 0 : _b2.call(slots), - "onErrorVisibleChanged": onErrorVisibleChanged - }), { - default: slots.default - })]); - } - }), !!marginBottom.value && createVNode("div", { - "class": `${prefixCls.value}-margin-offset`, - "style": { - marginBottom: `-${marginBottom.value}px` - } - }, null)])); - }; - } -}); - -// node_modules/ant-design-vue/es/form/utils/asyncUtil.js -function allPromiseFinish(promiseList) { - let hasError = false; - let count = promiseList.length; - const results = []; - if (!promiseList.length) { - return Promise.resolve([]); - } - return new Promise((resolve, reject2) => { - promiseList.forEach((promise, index3) => { - promise.catch((e3) => { - hasError = true; - return e3; - }).then((result2) => { - count -= 1; - results[index3] = result2; - if (count > 0) { - return; - } - if (hasError) { - reject2(results); - } - resolve(results); - }); - }); - }); -} - -// node_modules/ant-design-vue/es/form/useForm.js -function isRequired(rules2) { - let isRequired2 = false; - if (rules2 && rules2.length) { - rules2.every((rule) => { - if (rule.required) { - isRequired2 = true; - return false; - } - return true; - }); - } - return isRequired2; -} -function toArray5(value) { - if (value === void 0 || value === null) { - return []; - } - return Array.isArray(value) ? value : [value]; -} -function getPropByPath2(obj, path2, strict) { - let tempObj = obj; - path2 = path2.replace(/\[(\w+)\]/g, ".$1"); - path2 = path2.replace(/^\./, ""); - const keyArr = path2.split("."); - let i3 = 0; - for (let len = keyArr.length; i3 < len - 1; ++i3) { - if (!tempObj && !strict) break; - const key2 = keyArr[i3]; - if (key2 in tempObj) { - tempObj = tempObj[key2]; - } else { - if (strict) { - throw new Error("please transfer a valid name path to validate!"); - } - break; - } - } - return { - o: tempObj, - k: keyArr[i3], - v: tempObj ? tempObj[keyArr[i3]] : null, - isValid: tempObj && keyArr[i3] in tempObj - }; -} -function useForm(modelRef) { - let rulesRef = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ref({}); - let options = arguments.length > 2 ? arguments[2] : void 0; - const initialModel = cloneDeep_default(unref(modelRef)); - const validateInfos = reactive({}); - const rulesKeys = shallowRef([]); - const resetFields = (newValues) => { - _extends(unref(modelRef), _extends(_extends({}, cloneDeep_default(initialModel)), newValues)); - nextTick(() => { - Object.keys(validateInfos).forEach((key2) => { - validateInfos[key2] = { - autoLink: false, - required: isRequired(unref(rulesRef)[key2]) - }; - }); - }); - }; - const filterRules = function() { - let rules2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - let trigger2 = arguments.length > 1 ? arguments[1] : void 0; - if (!trigger2.length) { - return rules2; - } else { - return rules2.filter((rule) => { - const triggerList = toArray5(rule.trigger || "change"); - return intersection_default(triggerList, trigger2).length; - }); - } - }; - let lastValidatePromise = null; - const validateFields = function(names) { - let option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let strict = arguments.length > 2 ? arguments[2] : void 0; - const promiseList = []; - const values2 = {}; - for (let i3 = 0; i3 < names.length; i3++) { - const name = names[i3]; - const prop = getPropByPath2(unref(modelRef), name, strict); - if (!prop.isValid) continue; - values2[name] = prop.v; - const rules2 = filterRules(unref(rulesRef)[name], toArray5(option && option.trigger)); - if (rules2.length) { - promiseList.push(validateField(name, prop.v, rules2, option || {}).then(() => ({ - name, - errors: [], - warnings: [] - })).catch((ruleErrors) => { - const mergedErrors = []; - const mergedWarnings = []; - ruleErrors.forEach((_ref) => { - let { - rule: { - warningOnly - }, - errors - } = _ref; - if (warningOnly) { - mergedWarnings.push(...errors); - } else { - mergedErrors.push(...errors); - } - }); - if (mergedErrors.length) { - return Promise.reject({ - name, - errors: mergedErrors, - warnings: mergedWarnings - }); - } - return { - name, - errors: mergedErrors, - warnings: mergedWarnings - }; - })); - } - } - const summaryPromise = allPromiseFinish(promiseList); - lastValidatePromise = summaryPromise; - const returnPromise = summaryPromise.then(() => { - if (lastValidatePromise === summaryPromise) { - return Promise.resolve(values2); - } - return Promise.reject([]); - }).catch((results) => { - const errorList = results.filter((result2) => result2 && result2.errors.length); - return Promise.reject({ - values: values2, - errorFields: errorList, - outOfDate: lastValidatePromise !== summaryPromise - }); - }); - returnPromise.catch((e3) => e3); - return returnPromise; - }; - const validateField = function(name, value, rules2) { - let option = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; - const promise = validateRules([name], value, rules2, _extends({ - validateMessages: defaultValidateMessages - }, option), !!option.validateFirst); - if (!validateInfos[name]) { - return promise.catch((e3) => e3); - } - validateInfos[name].validateStatus = "validating"; - promise.catch((e3) => e3).then(function() { - let results = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - var _a2; - if (validateInfos[name].validateStatus === "validating") { - const res = results.filter((result2) => result2 && result2.errors.length); - validateInfos[name].validateStatus = res.length ? "error" : "success"; - validateInfos[name].help = res.length ? res.map((r3) => r3.errors) : null; - (_a2 = options === null || options === void 0 ? void 0 : options.onValidate) === null || _a2 === void 0 ? void 0 : _a2.call(options, name, !res.length, res.length ? toRaw(validateInfos[name].help[0]) : null); - } - }); - return promise; - }; - const validate = (names, option) => { - let keys2 = []; - let strict = true; - if (!names) { - strict = false; - keys2 = rulesKeys.value; - } else if (Array.isArray(names)) { - keys2 = names; - } else { - keys2 = [names]; - } - const promises = validateFields(keys2, option || {}, strict); - promises.catch((e3) => e3); - return promises; - }; - const clearValidate = (names) => { - let keys2 = []; - if (!names) { - keys2 = rulesKeys.value; - } else if (Array.isArray(names)) { - keys2 = names; - } else { - keys2 = [names]; - } - keys2.forEach((key2) => { - validateInfos[key2] && _extends(validateInfos[key2], { - validateStatus: "", - help: null - }); - }); - }; - const mergeValidateInfo = (items) => { - const info = { - autoLink: false - }; - const help = []; - const infos = Array.isArray(items) ? items : [items]; - for (let i3 = 0; i3 < infos.length; i3++) { - const arg = infos[i3]; - if ((arg === null || arg === void 0 ? void 0 : arg.validateStatus) === "error") { - info.validateStatus = "error"; - arg.help && help.push(arg.help); - } - info.required = info.required || (arg === null || arg === void 0 ? void 0 : arg.required); - } - info.help = help; - return info; - }; - let oldModel = initialModel; - let isFirstTime = true; - const modelFn = (model) => { - const names = []; - rulesKeys.value.forEach((key2) => { - const prop = getPropByPath2(model, key2, false); - const oldProp = getPropByPath2(oldModel, key2, false); - const isFirstValidation = isFirstTime && (options === null || options === void 0 ? void 0 : options.immediate) && prop.isValid; - if (isFirstValidation || !isEqual_default(prop.v, oldProp.v)) { - names.push(key2); - } - }); - validate(names, { - trigger: "change" - }); - isFirstTime = false; - oldModel = cloneDeep_default(toRaw(model)); - }; - const debounceOptions = options === null || options === void 0 ? void 0 : options.debounce; - let first = true; - watch(rulesRef, () => { - rulesKeys.value = rulesRef ? Object.keys(unref(rulesRef)) : []; - if (!first && options && options.validateOnRuleChange) { - validate(); - } - first = false; - }, { - deep: true, - immediate: true - }); - watch(rulesKeys, () => { - const newValidateInfos = {}; - rulesKeys.value.forEach((key2) => { - newValidateInfos[key2] = _extends({}, validateInfos[key2], { - autoLink: false, - required: isRequired(unref(rulesRef)[key2]) - }); - delete validateInfos[key2]; - }); - for (const key2 in validateInfos) { - if (Object.prototype.hasOwnProperty.call(validateInfos, key2)) { - delete validateInfos[key2]; - } - } - _extends(validateInfos, newValidateInfos); - }, { - immediate: true - }); - watch(modelRef, debounceOptions && debounceOptions.wait ? debounce_default(modelFn, debounceOptions.wait, omit_default2(debounceOptions, ["wait"])) : modelFn, { - immediate: options && !!options.immediate, - deep: true - }); - return { - modelRef, - rulesRef, - initialModel, - validateInfos, - resetFields, - validate, - validateField, - mergeValidateInfo, - clearValidate - }; -} -var useForm_default = useForm; - -// node_modules/ant-design-vue/es/form/Form.js -var formProps = () => ({ - layout: vue_types_default.oneOf(tuple("horizontal", "inline", "vertical")), - labelCol: objectType(), - wrapperCol: objectType(), - colon: booleanType(), - labelAlign: stringType(), - labelWrap: booleanType(), - prefixCls: String, - requiredMark: someType([String, Boolean]), - /** @deprecated Will warning in future branch. Pls use `requiredMark` instead. */ - hideRequiredMark: booleanType(), - model: vue_types_default.object, - rules: objectType(), - validateMessages: objectType(), - validateOnRuleChange: booleanType(), - // 提交失败自动滚动到第一个错误字段 - scrollToFirstError: anyType(), - onSubmit: functionType(), - name: String, - validateTrigger: someType([String, Array]), - size: stringType(), - disabled: booleanType(), - onValuesChange: functionType(), - onFieldsChange: functionType(), - onFinish: functionType(), - onFinishFailed: functionType(), - onValidate: functionType() -}); -function isEqualName(name1, name2) { - return isEqual_default(toArray4(name1), toArray4(name2)); -} -var Form = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AForm", - inheritAttrs: false, - props: initDefaultProps_default(formProps(), { - layout: "horizontal", - hideRequiredMark: false, - colon: true - }), - Item: FormItem_default, - useForm: useForm_default, - // emits: ['finishFailed', 'submit', 'finish', 'validate'], - setup(props4, _ref) { - let { - emit, - slots, - expose, - attrs - } = _ref; - const { - prefixCls, - direction, - form: contextForm, - size: size2, - disabled - } = useConfigInject_default("form", props4); - const requiredMark = computed(() => props4.requiredMark === "" || props4.requiredMark); - const mergedRequiredMark = computed(() => { - var _a2; - if (requiredMark.value !== void 0) { - return requiredMark.value; - } - if (contextForm && ((_a2 = contextForm.value) === null || _a2 === void 0 ? void 0 : _a2.requiredMark) !== void 0) { - return contextForm.value.requiredMark; - } - if (props4.hideRequiredMark) { - return false; - } - return true; - }); - useProviderSize(size2); - useProviderDisabled(disabled); - const mergedColon = computed(() => { - var _a2, _b; - return (_a2 = props4.colon) !== null && _a2 !== void 0 ? _a2 : (_b = contextForm.value) === null || _b === void 0 ? void 0 : _b.colon; - }); - const { - validateMessages: globalValidateMessages - } = useInjectGlobalForm(); - const validateMessages = computed(() => { - return _extends(_extends(_extends({}, defaultValidateMessages), globalValidateMessages.value), props4.validateMessages); - }); - const [wrapSSR, hashId] = style_default25(prefixCls); - const formClassName = computed(() => classNames_default(prefixCls.value, { - [`${prefixCls.value}-${props4.layout}`]: true, - [`${prefixCls.value}-hide-required-mark`]: mergedRequiredMark.value === false, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-${size2.value}`]: size2.value - }, hashId.value)); - const lastValidatePromise = ref(); - const fields = {}; - const addField = (eventKey, field) => { - fields[eventKey] = field; - }; - const removeField = (eventKey) => { - delete fields[eventKey]; - }; - const getFieldsByNameList = (nameList) => { - const provideNameList = !!nameList; - const namePathList = provideNameList ? toArray4(nameList).map(getNamePath) : []; - if (!provideNameList) { - return Object.values(fields); - } else { - return Object.values(fields).filter((field) => namePathList.findIndex((namePath) => isEqualName(namePath, field.fieldName.value)) > -1); - } - }; - const resetFields = (name) => { - if (!props4.model) { - warning_default2(false, "Form", "model is required for resetFields to work."); - return; - } - getFieldsByNameList(name).forEach((field) => { - field.resetField(); - }); - }; - const clearValidate = (name) => { - getFieldsByNameList(name).forEach((field) => { - field.clearValidate(); - }); - }; - const handleFinishFailed = (errorInfo) => { - const { - scrollToFirstError - } = props4; - emit("finishFailed", errorInfo); - if (scrollToFirstError && errorInfo.errorFields.length) { - let scrollToFieldOptions = {}; - if (typeof scrollToFirstError === "object") { - scrollToFieldOptions = scrollToFirstError; - } - scrollToField(errorInfo.errorFields[0].name, scrollToFieldOptions); - } - }; - const validate = function() { - return validateField(...arguments); - }; - const scrollToField = function(name) { - let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const fields2 = getFieldsByNameList(name ? [name] : void 0); - if (fields2.length) { - const fieldId = fields2[0].fieldId.value; - const node2 = fieldId ? document.getElementById(fieldId) : null; - if (node2) { - es_default(node2, _extends({ - scrollMode: "if-needed", - block: "nearest" - }, options)); - } - } - }; - const getFieldsValue = function() { - let nameList = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - if (nameList === true) { - const allNameList = []; - Object.values(fields).forEach((_ref2) => { - let { - namePath - } = _ref2; - allNameList.push(namePath.value); - }); - return cloneByNamePathList(props4.model, allNameList); - } else { - return cloneByNamePathList(props4.model, nameList); - } - }; - const validateFields = (nameList, options) => { - warning_default2(!(nameList instanceof Function), "Form", "validateFields/validateField/validate not support callback, please use promise instead"); - if (!props4.model) { - warning_default2(false, "Form", "model is required for validateFields to work."); - return Promise.reject("Form `model` is required for validateFields to work."); - } - const provideNameList = !!nameList; - const namePathList = provideNameList ? toArray4(nameList).map(getNamePath) : []; - const promiseList = []; - Object.values(fields).forEach((field) => { - var _a2; - if (!provideNameList) { - namePathList.push(field.namePath.value); - } - if (!((_a2 = field.rules) === null || _a2 === void 0 ? void 0 : _a2.value.length)) { - return; - } - const fieldNamePath = field.namePath.value; - if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) { - const promise = field.validateRules(_extends({ - validateMessages: validateMessages.value - }, options)); - promiseList.push(promise.then(() => ({ - name: fieldNamePath, - errors: [], - warnings: [] - })).catch((ruleErrors) => { - const mergedErrors = []; - const mergedWarnings = []; - ruleErrors.forEach((_ref3) => { - let { - rule: { - warningOnly - }, - errors - } = _ref3; - if (warningOnly) { - mergedWarnings.push(...errors); - } else { - mergedErrors.push(...errors); - } - }); - if (mergedErrors.length) { - return Promise.reject({ - name: fieldNamePath, - errors: mergedErrors, - warnings: mergedWarnings - }); - } - return { - name: fieldNamePath, - errors: mergedErrors, - warnings: mergedWarnings - }; - })); - } - }); - const summaryPromise = allPromiseFinish(promiseList); - lastValidatePromise.value = summaryPromise; - const returnPromise = summaryPromise.then(() => { - if (lastValidatePromise.value === summaryPromise) { - return Promise.resolve(getFieldsValue(namePathList)); - } - return Promise.reject([]); - }).catch((results) => { - const errorList = results.filter((result2) => result2 && result2.errors.length); - return Promise.reject({ - values: getFieldsValue(namePathList), - errorFields: errorList, - outOfDate: lastValidatePromise.value !== summaryPromise - }); - }); - returnPromise.catch((e3) => e3); - return returnPromise; - }; - const validateField = function() { - return validateFields(...arguments); - }; - const handleSubmit = (e3) => { - e3.preventDefault(); - e3.stopPropagation(); - emit("submit", e3); - if (props4.model) { - const res = validateFields(); - res.then((values2) => { - emit("finish", values2); - }).catch((errors) => { - handleFinishFailed(errors); - }); - } - }; - expose({ - resetFields, - clearValidate, - validateFields, - getFieldsValue, - validate, - scrollToField - }); - useProvideForm({ - model: computed(() => props4.model), - name: computed(() => props4.name), - labelAlign: computed(() => props4.labelAlign), - labelCol: computed(() => props4.labelCol), - labelWrap: computed(() => props4.labelWrap), - wrapperCol: computed(() => props4.wrapperCol), - vertical: computed(() => props4.layout === "vertical"), - colon: mergedColon, - requiredMark: mergedRequiredMark, - validateTrigger: computed(() => props4.validateTrigger), - rules: computed(() => props4.rules), - addField, - removeField, - onValidate: (name, status, errors) => { - emit("validate", name, status, errors); - }, - validateMessages - }); - watch(() => props4.rules, () => { - if (props4.validateOnRuleChange) { - validateFields(); - } - }); - return () => { - var _a2; - return wrapSSR(createVNode("form", _objectSpread2(_objectSpread2({}, attrs), {}, { - "onSubmit": handleSubmit, - "class": [formClassName.value, attrs.class] - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); -var Form_default = Form; - -// node_modules/ant-design-vue/es/form/index.js -Form_default.useInjectFormItemContext = useInjectFormItemContext; -Form_default.ItemRest = FormItemContext_default; -Form_default.install = function(app) { - app.component(Form_default.name, Form_default); - app.component(Form_default.Item.name, Form_default.Item); - app.component(FormItemContext_default.name, FormItemContext_default); - return app; -}; -var form_default = Form_default; - -// node_modules/ant-design-vue/es/checkbox/style/index.js -var antCheckboxEffect = new Keyframes_default("antCheckboxEffect", { - "0%": { - transform: "scale(1)", - opacity: 0.5 - }, - "100%": { - transform: "scale(1.6)", - opacity: 0 - } -}); -var genCheckboxStyle = (token2) => { - const { - checkboxCls - } = token2; - const wrapperCls = `${checkboxCls}-wrapper`; - return [ - // ===================== Basic ===================== - { - // Group - [`${checkboxCls}-group`]: _extends(_extends({}, resetComponent(token2)), { - display: "inline-flex", - flexWrap: "wrap", - columnGap: token2.marginXS, - // Group > Grid - [`> ${token2.antCls}-row`]: { - flex: 1 - } - }), - // Wrapper - [wrapperCls]: _extends(_extends({}, resetComponent(token2)), { - display: "inline-flex", - alignItems: "baseline", - cursor: "pointer", - // Fix checkbox & radio in flex align #30260 - "&:after": { - display: "inline-block", - width: 0, - overflow: "hidden", - content: "'\\a0'" - }, - // Checkbox near checkbox - [`& + ${wrapperCls}`]: { - marginInlineStart: 0 - }, - [`&${wrapperCls}-in-form-item`]: { - 'input[type="checkbox"]': { - width: 14, - height: 14 - // FIXME: magic - } - } - }), - // Wrapper > Checkbox - [checkboxCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - whiteSpace: "nowrap", - lineHeight: 1, - cursor: "pointer", - // To make alignment right when `controlHeight` is changed - // Ref: https://github.com/ant-design/ant-design/issues/41564 - alignSelf: "center", - // Wrapper > Checkbox > input - [`${checkboxCls}-input`]: { - position: "absolute", - // Since baseline align will get additional space offset, - // we need to move input to top to make it align with text. - // Ref: https://github.com/ant-design/ant-design/issues/38926#issuecomment-1486137799 - inset: 0, - zIndex: 1, - cursor: "pointer", - opacity: 0, - margin: 0, - [`&:focus-visible + ${checkboxCls}-inner`]: _extends({}, genFocusOutline(token2)) - }, - // Wrapper > Checkbox > inner - [`${checkboxCls}-inner`]: { - boxSizing: "border-box", - position: "relative", - top: 0, - insetInlineStart: 0, - display: "block", - width: token2.checkboxSize, - height: token2.checkboxSize, - direction: "ltr", - backgroundColor: token2.colorBgContainer, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: token2.borderRadiusSM, - borderCollapse: "separate", - transition: `all ${token2.motionDurationSlow}`, - "&:after": { - boxSizing: "border-box", - position: "absolute", - top: "50%", - insetInlineStart: "21.5%", - display: "table", - width: token2.checkboxSize / 14 * 5, - height: token2.checkboxSize / 14 * 8, - border: `${token2.lineWidthBold}px solid ${token2.colorWhite}`, - borderTop: 0, - borderInlineStart: 0, - transform: "rotate(45deg) scale(0) translate(-50%,-50%)", - opacity: 0, - content: '""', - transition: `all ${token2.motionDurationFast} ${token2.motionEaseInBack}, opacity ${token2.motionDurationFast}` - } - }, - // Wrapper > Checkbox + Text - "& + span": { - paddingInlineStart: token2.paddingXS, - paddingInlineEnd: token2.paddingXS - } - }) - }, - // ================= Indeterminate ================= - { - [checkboxCls]: { - "&-indeterminate": { - // Wrapper > Checkbox > inner - [`${checkboxCls}-inner`]: { - "&:after": { - top: "50%", - insetInlineStart: "50%", - width: token2.fontSizeLG / 2, - height: token2.fontSizeLG / 2, - backgroundColor: token2.colorPrimary, - border: 0, - transform: "translate(-50%, -50%) scale(1)", - opacity: 1, - content: '""' - } - } - } - } - }, - // ===================== Hover ===================== - { - // Wrapper - [`${wrapperCls}:hover ${checkboxCls}:after`]: { - visibility: "visible" - }, - // Wrapper & Wrapper > Checkbox - [` - ${wrapperCls}:not(${wrapperCls}-disabled), - ${checkboxCls}:not(${checkboxCls}-disabled) - `]: { - [`&:hover ${checkboxCls}-inner`]: { - borderColor: token2.colorPrimary - } - }, - [`${wrapperCls}:not(${wrapperCls}-disabled)`]: { - [`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled) ${checkboxCls}-inner`]: { - backgroundColor: token2.colorPrimaryHover, - borderColor: "transparent" - }, - [`&:hover ${checkboxCls}-checked:not(${checkboxCls}-disabled):after`]: { - borderColor: token2.colorPrimaryHover - } - } - }, - // ==================== Checked ==================== - { - // Wrapper > Checkbox - [`${checkboxCls}-checked`]: { - [`${checkboxCls}-inner`]: { - backgroundColor: token2.colorPrimary, - borderColor: token2.colorPrimary, - "&:after": { - opacity: 1, - transform: "rotate(45deg) scale(1) translate(-50%,-50%)", - transition: `all ${token2.motionDurationMid} ${token2.motionEaseOutBack} ${token2.motionDurationFast}` - } - }, - // Checked Effect - "&:after": { - position: "absolute", - top: 0, - insetInlineStart: 0, - width: "100%", - height: "100%", - borderRadius: token2.borderRadiusSM, - visibility: "hidden", - border: `${token2.lineWidthBold}px solid ${token2.colorPrimary}`, - animationName: antCheckboxEffect, - animationDuration: token2.motionDurationSlow, - animationTimingFunction: "ease-in-out", - animationFillMode: "backwards", - content: '""', - transition: `all ${token2.motionDurationSlow}` - } - }, - [` - ${wrapperCls}-checked:not(${wrapperCls}-disabled), - ${checkboxCls}-checked:not(${checkboxCls}-disabled) - `]: { - [`&:hover ${checkboxCls}-inner`]: { - backgroundColor: token2.colorPrimaryHover, - borderColor: "transparent" - }, - [`&:hover ${checkboxCls}:after`]: { - borderColor: token2.colorPrimaryHover - } - } - }, - // ==================== Disable ==================== - { - // Wrapper - [`${wrapperCls}-disabled`]: { - cursor: "not-allowed" - }, - // Wrapper > Checkbox - [`${checkboxCls}-disabled`]: { - // Wrapper > Checkbox > input - [`&, ${checkboxCls}-input`]: { - cursor: "not-allowed", - // Disabled for native input to enable Tooltip event handler - // ref: https://github.com/ant-design/ant-design/issues/39822#issuecomment-1365075901 - pointerEvents: "none" - }, - // Wrapper > Checkbox > inner - [`${checkboxCls}-inner`]: { - background: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - "&:after": { - borderColor: token2.colorTextDisabled - } - }, - "&:after": { - display: "none" - }, - "& + span": { - color: token2.colorTextDisabled - }, - [`&${checkboxCls}-indeterminate ${checkboxCls}-inner::after`]: { - background: token2.colorTextDisabled - } - } - } - ]; -}; -function getStyle2(prefixCls, token2) { - const checkboxToken = merge(token2, { - checkboxCls: `.${prefixCls}`, - checkboxSize: token2.controlInteractiveSize - }); - return [genCheckboxStyle(checkboxToken)]; -} -var style_default26 = genComponentStyleHook("Checkbox", (token2, _ref) => { - let { - prefixCls - } = _ref; - return [getStyle2(prefixCls, token2)]; -}); - -// node_modules/ant-design-vue/es/cascader/style/index.js -var genBaseStyle8 = (token2) => { - const { - prefixCls, - componentCls, - antCls - } = token2; - const cascaderMenuItemCls = `${componentCls}-menu-item`; - const iconCls = ` - &${cascaderMenuItemCls}-expand ${cascaderMenuItemCls}-expand-icon, - ${cascaderMenuItemCls}-loading-icon - `; - const itemPaddingVertical = Math.round((token2.controlHeight - token2.fontSize * token2.lineHeight) / 2); - return [ - // ===================================================== - // == Control == - // ===================================================== - { - [componentCls]: { - width: token2.controlWidth - } - }, - // ===================================================== - // == Popup == - // ===================================================== - { - [`${componentCls}-dropdown`]: [ - // ==================== Checkbox ==================== - getStyle2(`${prefixCls}-checkbox`, token2), - { - [`&${antCls}-select-dropdown`]: { - padding: 0 - } - }, - { - [componentCls]: { - // ================== Checkbox ================== - "&-checkbox": { - top: 0, - marginInlineEnd: token2.paddingXS - }, - // ==================== Menu ==================== - // >>> Menus - "&-menus": { - display: "flex", - flexWrap: "nowrap", - alignItems: "flex-start", - [`&${componentCls}-menu-empty`]: { - [`${componentCls}-menu`]: { - width: "100%", - height: "auto", - [cascaderMenuItemCls]: { - color: token2.colorTextDisabled - } - } - } - }, - // >>> Menu - "&-menu": { - flexGrow: 1, - minWidth: token2.controlItemWidth, - height: token2.dropdownHeight, - margin: 0, - padding: token2.paddingXXS, - overflow: "auto", - verticalAlign: "top", - listStyle: "none", - "-ms-overflow-style": "-ms-autohiding-scrollbar", - "&:not(:last-child)": { - borderInlineEnd: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - "&-item": _extends(_extends({}, textEllipsis), { - display: "flex", - flexWrap: "nowrap", - alignItems: "center", - padding: `${itemPaddingVertical}px ${token2.paddingSM}px`, - lineHeight: token2.lineHeight, - cursor: "pointer", - transition: `all ${token2.motionDurationMid}`, - borderRadius: token2.borderRadiusSM, - "&:hover": { - background: token2.controlItemBgHover - }, - "&-disabled": { - color: token2.colorTextDisabled, - cursor: "not-allowed", - "&:hover": { - background: "transparent" - }, - [iconCls]: { - color: token2.colorTextDisabled - } - }, - [`&-active:not(${cascaderMenuItemCls}-disabled)`]: { - [`&, &:hover`]: { - fontWeight: token2.fontWeightStrong, - backgroundColor: token2.controlItemBgActive - } - }, - "&-content": { - flex: "auto" - }, - [iconCls]: { - marginInlineStart: token2.paddingXXS, - color: token2.colorTextDescription, - fontSize: token2.fontSizeIcon - }, - "&-keyword": { - color: token2.colorHighlight - } - }) - } - } - } - ] - }, - // ===================================================== - // == RTL == - // ===================================================== - { - [`${componentCls}-dropdown-rtl`]: { - direction: "rtl" - } - }, - // ===================================================== - // == Space Compact == - // ===================================================== - genCompactItemStyle(token2) - ]; -}; -var style_default27 = genComponentStyleHook("Cascader", (token2) => [genBaseStyle8(token2)], { - controlWidth: 184, - controlItemWidth: 111, - dropdownHeight: 180 -}); - -// node_modules/ant-design-vue/es/cascader/index.js -var __rest26 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function highlightKeyword(str, lowerKeyword, prefixCls) { - const cells = str.toLowerCase().split(lowerKeyword).reduce((list, cur, index3) => index3 === 0 ? [cur] : [...list, lowerKeyword, cur], []); - const fillCells = []; - let start = 0; - cells.forEach((cell, index3) => { - const end = start + cell.length; - let originWorld = str.slice(start, end); - start = end; - if (index3 % 2 === 1) { - const _originWorld = /* @__PURE__ */ function() { - return originWorld; - }(); - originWorld = createVNode("span", { - "class": `${prefixCls}-menu-item-keyword`, - "key": "seperator" - }, [originWorld]); - } - fillCells.push(originWorld); - }); - return fillCells; -} -var defaultSearchRender = (_ref) => { - let { - inputValue, - path: path2, - prefixCls, - fieldNames - } = _ref; - const optionList = []; - const lower2 = inputValue.toLowerCase(); - path2.forEach((node2, index3) => { - if (index3 !== 0) { - optionList.push(" / "); - } - let label = node2[fieldNames.label]; - const type4 = typeof label; - if (type4 === "string" || type4 === "number") { - label = highlightKeyword(String(label), lower2, prefixCls); - } - optionList.push(label); - }); - return optionList; -}; -function cascaderProps() { - return _extends(_extends({}, omit_default(internalCascaderProps(), ["customSlots", "checkable", "options"])), { - multiple: { - type: Boolean, - default: void 0 - }, - size: String, - bordered: { - type: Boolean, - default: void 0 - }, - placement: { - type: String - }, - suffixIcon: vue_types_default.any, - status: String, - options: Array, - popupClassName: String, - /** @deprecated Please use `popupClassName` instead */ - dropdownClassName: String, - "onUpdate:value": Function - }); -} -var Cascader = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACascader", - inheritAttrs: false, - props: initDefaultProps_default(cascaderProps(), { - bordered: true, - choiceTransitionName: "", - allowClear: true - }), - setup(props4, _ref2) { - let { - attrs, - expose, - slots, - emit - } = _ref2; - if (true) { - devWarning_default(!props4.dropdownClassName, "Cascader", "`dropdownClassName` is deprecated. Please use `popupClassName` instead."); - } - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const { - prefixCls: cascaderPrefixCls, - rootPrefixCls, - getPrefixCls, - direction, - getPopupContainer, - renderEmpty: renderEmpty2, - size: contextSize, - disabled - } = useConfigInject_default("cascader", props4); - const prefixCls = computed(() => getPrefixCls("select", props4.prefixCls)); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => compactSize.value || contextSize.value); - const contextDisabled = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : contextDisabled.value; - }); - const [wrapSelectSSR, hashId] = style_default5(prefixCls); - const [wrapCascaderSSR] = style_default27(cascaderPrefixCls); - const isRtl = computed(() => direction.value === "rtl"); - if (true) { - watchEffect(() => { - devWarning_default(!props4.multiple || !props4.displayRender || !slots.displayRender, "Cascader", "`displayRender` not work on `multiple`. Please use `tagRender` instead."); - }); - } - const mergedShowSearch = computed(() => { - if (!props4.showSearch) { - return props4.showSearch; - } - let searchConfig = { - render: defaultSearchRender - }; - if (typeof props4.showSearch === "object") { - searchConfig = _extends(_extends({}, searchConfig), props4.showSearch); - } - return searchConfig; - }); - const mergedDropdownClassName = computed(() => classNames_default(props4.popupClassName || props4.dropdownClassName, `${cascaderPrefixCls.value}-dropdown`, { - [`${cascaderPrefixCls.value}-dropdown-rtl`]: isRtl.value - }, hashId.value)); - const selectRef = ref(); - expose({ - focus() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const handleChange = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - emit("update:value", args[0]); - emit("change", ...args); - formItemContext.onFieldChange(); - }; - const handleBlur = function() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - emit("blur", ...args); - formItemContext.onFieldBlur(); - }; - const mergedShowArrow = computed(() => props4.showArrow !== void 0 ? props4.showArrow : props4.loading || !props4.multiple); - const placement = computed(() => { - if (props4.placement !== void 0) { - return props4.placement; - } - return direction.value === "rtl" ? "bottomRight" : "bottomLeft"; - }); - return () => { - var _a2, _b; - const { - notFoundContent = (_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - expandIcon = (_b = slots.expandIcon) === null || _b === void 0 ? void 0 : _b.call(slots), - multiple, - bordered, - allowClear, - choiceTransitionName, - transitionName: transitionName2, - id = formItemContext.id.value - } = props4, restProps = __rest26(props4, ["notFoundContent", "expandIcon", "multiple", "bordered", "allowClear", "choiceTransitionName", "transitionName", "id"]); - const mergedNotFoundContent = notFoundContent || renderEmpty2("Cascader"); - let mergedExpandIcon = expandIcon; - if (!expandIcon) { - mergedExpandIcon = isRtl.value ? createVNode(LeftOutlined_default, null, null) : createVNode(RightOutlined_default, null, null); - } - const loadingIcon = createVNode("span", { - "class": `${prefixCls.value}-menu-item-loading-icon` - }, [createVNode(LoadingOutlined_default, { - "spin": true - }, null)]); - const { - suffixIcon, - removeIcon, - clearIcon - } = getIcons(_extends(_extends({}, props4), { - hasFeedback: formItemInputContext.hasFeedback, - feedbackIcon: formItemInputContext.feedbackIcon, - multiple, - prefixCls: prefixCls.value, - showArrow: mergedShowArrow.value - }), slots); - return wrapCascaderSSR(wrapSelectSSR(createVNode(vc_cascader_default, _objectSpread2(_objectSpread2(_objectSpread2({}, restProps), attrs), {}, { - "id": id, - "prefixCls": prefixCls.value, - "class": [cascaderPrefixCls.value, { - [`${prefixCls.value}-lg`]: mergedSize.value === "large", - [`${prefixCls.value}-sm`]: mergedSize.value === "small", - [`${prefixCls.value}-rtl`]: isRtl.value, - [`${prefixCls.value}-borderless`]: !bordered, - [`${prefixCls.value}-in-form-item`]: formItemInputContext.isFormItemInput - }, getStatusClassNames(prefixCls.value, mergedStatus.value, formItemInputContext.hasFeedback), compactItemClassnames.value, attrs.class, hashId.value], - "disabled": mergedDisabled.value, - "direction": direction.value, - "placement": placement.value, - "notFoundContent": mergedNotFoundContent, - "allowClear": allowClear, - "showSearch": mergedShowSearch.value, - "expandIcon": mergedExpandIcon, - "inputIcon": suffixIcon, - "removeIcon": removeIcon, - "clearIcon": clearIcon, - "loadingIcon": loadingIcon, - "checkable": !!multiple, - "dropdownClassName": mergedDropdownClassName.value, - "dropdownPrefixCls": cascaderPrefixCls.value, - "choiceTransitionName": getTransitionName2(rootPrefixCls.value, "", choiceTransitionName), - "transitionName": getTransitionName2(rootPrefixCls.value, getTransitionDirection(placement.value), transitionName2), - "getPopupContainer": getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - "customSlots": _extends(_extends({}, slots), { - checkable: () => createVNode("span", { - "class": `${cascaderPrefixCls.value}-checkbox-inner` - }, null) - }), - "tagRender": props4.tagRender || slots.tagRender, - "displayRender": props4.displayRender || slots.displayRender, - "maxTagPlaceholder": props4.maxTagPlaceholder || slots.maxTagPlaceholder, - "showArrow": formItemInputContext.hasFeedback || props4.showArrow, - "onChange": handleChange, - "onBlur": handleBlur, - "ref": selectRef - }), slots))); - }; - } -}); -var cascader_default = withInstall(_extends(Cascader, { - SHOW_CHILD, - SHOW_PARENT -})); - -// node_modules/ant-design-vue/es/checkbox/interface.js -var abstractCheckboxGroupProps = () => { - return { - name: String, - prefixCls: String, - options: arrayType([]), - disabled: Boolean, - id: String - }; -}; -var checkboxGroupProps = () => { - return _extends(_extends({}, abstractCheckboxGroupProps()), { - defaultValue: arrayType(), - value: arrayType(), - onChange: functionType(), - "onUpdate:value": functionType() - }); -}; -var abstractCheckboxProps = () => { - return { - prefixCls: String, - defaultChecked: booleanType(), - checked: booleanType(), - disabled: booleanType(), - isGroup: booleanType(), - value: vue_types_default.any, - name: String, - id: String, - indeterminate: booleanType(), - type: stringType("checkbox"), - autofocus: booleanType(), - onChange: functionType(), - "onUpdate:checked": functionType(), - onClick: functionType(), - skipGroup: booleanType(false) - }; -}; -var checkboxProps2 = () => { - return _extends(_extends({}, abstractCheckboxProps()), { - indeterminate: booleanType(false) - }); -}; -var CheckboxGroupContextKey = Symbol("CheckboxGroupContext"); - -// node_modules/ant-design-vue/es/checkbox/Checkbox.js -var __rest27 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Checkbox_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACheckbox", - inheritAttrs: false, - __ANT_CHECKBOX: true, - props: checkboxProps2(), - // emits: ['change', 'update:checked'], - setup(props4, _ref) { - let { - emit, - attrs, - slots, - expose - } = _ref; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const { - prefixCls, - direction, - disabled - } = useConfigInject_default("checkbox", props4); - const contextDisabled = useInjectDisabled(); - const [wrapSSR, hashId] = style_default26(prefixCls); - const checkboxGroup = inject(CheckboxGroupContextKey, void 0); - const uniId = Symbol("checkboxUniId"); - const mergedDisabled = computed(() => { - return (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.disabled.value) || disabled.value; - }); - watchEffect(() => { - if (!props4.skipGroup && checkboxGroup) { - checkboxGroup.registerValue(uniId, props4.value); - } - }); - onBeforeUnmount(() => { - if (checkboxGroup) { - checkboxGroup.cancelValue(uniId); - } - }); - onMounted(() => { - warning_default2(!!(props4.checked !== void 0 || checkboxGroup || props4.value === void 0), "Checkbox", "`value` is not validate prop, do you mean `checked`?"); - }); - const handleChange = (event) => { - const targetChecked = event.target.checked; - emit("update:checked", targetChecked); - emit("change", event); - formItemContext.onFieldChange(); - }; - const checkboxRef = ref(); - const focus = () => { - var _a2; - (_a2 = checkboxRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = checkboxRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - return () => { - var _a2; - const children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - const { - indeterminate, - skipGroup, - id = formItemContext.id.value - } = props4, restProps = __rest27(props4, ["indeterminate", "skipGroup", "id"]); - const { - onMouseenter, - onMouseleave, - onInput, - class: className, - style - } = attrs, restAttrs = __rest27(attrs, ["onMouseenter", "onMouseleave", "onInput", "class", "style"]); - const checkboxProps3 = _extends(_extends(_extends(_extends({}, restProps), { - id, - prefixCls: prefixCls.value - }), restAttrs), { - disabled: mergedDisabled.value - }); - if (checkboxGroup && !skipGroup) { - checkboxProps3.onChange = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - emit("change", ...args); - checkboxGroup.toggleOption({ - label: children, - value: props4.value - }); - }; - checkboxProps3.name = checkboxGroup.name.value; - checkboxProps3.checked = checkboxGroup.mergedValue.value.includes(props4.value); - checkboxProps3.disabled = mergedDisabled.value || contextDisabled.value; - checkboxProps3.indeterminate = indeterminate; - } else { - checkboxProps3.onChange = handleChange; - } - const classString = classNames_default({ - [`${prefixCls.value}-wrapper`]: true, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-wrapper-checked`]: checkboxProps3.checked, - [`${prefixCls.value}-wrapper-disabled`]: checkboxProps3.disabled, - [`${prefixCls.value}-wrapper-in-form-item`]: formItemInputContext.isFormItemInput - }, className, hashId.value); - const checkboxClass = classNames_default({ - [`${prefixCls.value}-indeterminate`]: indeterminate - }, hashId.value); - const ariaChecked = indeterminate ? "mixed" : void 0; - return wrapSSR(createVNode("label", { - "class": classString, - "style": style, - "onMouseenter": onMouseenter, - "onMouseleave": onMouseleave - }, [createVNode(Checkbox_default, _objectSpread2(_objectSpread2({ - "aria-checked": ariaChecked - }, checkboxProps3), {}, { - "class": checkboxClass, - "ref": checkboxRef - }), null), children.length ? createVNode("span", null, [children]) : null])); - }; - } -}); - -// node_modules/ant-design-vue/es/checkbox/Group.js -var Group_default3 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACheckboxGroup", - inheritAttrs: false, - props: checkboxGroupProps(), - // emits: ['change', 'update:value'], - setup(props4, _ref) { - let { - slots, - attrs, - emit, - expose - } = _ref; - const formItemContext = useInjectFormItemContext(); - const { - prefixCls, - direction - } = useConfigInject_default("checkbox", props4); - const groupPrefixCls = computed(() => `${prefixCls.value}-group`); - const [wrapSSR, hashId] = style_default26(groupPrefixCls); - const mergedValue = ref((props4.value === void 0 ? props4.defaultValue : props4.value) || []); - watch(() => props4.value, () => { - mergedValue.value = props4.value || []; - }); - const options = computed(() => { - return props4.options.map((option) => { - if (typeof option === "string" || typeof option === "number") { - return { - label: option, - value: option - }; - } - return option; - }); - }); - const triggerUpdate = ref(Symbol()); - const registeredValuesMap = ref(/* @__PURE__ */ new Map()); - const cancelValue = (id) => { - registeredValuesMap.value.delete(id); - triggerUpdate.value = Symbol(); - }; - const registerValue = (id, value) => { - registeredValuesMap.value.set(id, value); - triggerUpdate.value = Symbol(); - }; - const registeredValues = ref(/* @__PURE__ */ new Map()); - watch(triggerUpdate, () => { - const valuseMap = /* @__PURE__ */ new Map(); - for (const value of registeredValuesMap.value.values()) { - valuseMap.set(value, true); - } - registeredValues.value = valuseMap; - }); - const toggleOption = (option) => { - const optionIndex = mergedValue.value.indexOf(option.value); - const value = [...mergedValue.value]; - if (optionIndex === -1) { - value.push(option.value); - } else { - value.splice(optionIndex, 1); - } - if (props4.value === void 0) { - mergedValue.value = value; - } - const val = value.filter((val2) => registeredValues.value.has(val2)).sort((a2, b2) => { - const indexA = options.value.findIndex((opt) => opt.value === a2); - const indexB = options.value.findIndex((opt) => opt.value === b2); - return indexA - indexB; - }); - emit("update:value", val); - emit("change", val); - formItemContext.onFieldChange(); - }; - provide(CheckboxGroupContextKey, { - cancelValue, - registerValue, - toggleOption, - mergedValue, - name: computed(() => props4.name), - disabled: computed(() => props4.disabled) - }); - expose({ - mergedValue - }); - return () => { - var _a2; - const { - id = formItemContext.id.value - } = props4; - let children = null; - if (options.value && options.value.length > 0) { - children = options.value.map((option) => { - var _a3; - return createVNode(Checkbox_default2, { - "prefixCls": prefixCls.value, - "key": option.value.toString(), - "disabled": "disabled" in option ? option.disabled : props4.disabled, - "indeterminate": option.indeterminate, - "value": option.value, - "checked": mergedValue.value.indexOf(option.value) !== -1, - "onChange": option.onChange, - "class": `${groupPrefixCls.value}-item` - }, { - default: () => [slots.label !== void 0 ? (_a3 = slots.label) === null || _a3 === void 0 ? void 0 : _a3.call(slots, option) : option.label] - }); - }); - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [groupPrefixCls.value, { - [`${groupPrefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value], - "id": id - }), [children || ((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))])); - }; - } -}); - -// node_modules/ant-design-vue/es/checkbox/index.js -Checkbox_default2.Group = Group_default3; -Checkbox_default2.install = function(app) { - app.component(Checkbox_default2.name, Checkbox_default2); - app.component(Group_default3.name, Group_default3); - return app; -}; -var checkbox_default = Checkbox_default2; - -// node_modules/ant-design-vue/es/grid/index.js -var grid_default = { - useBreakpoint: useBreakpoint_default -}; - -// node_modules/ant-design-vue/es/col/index.js -var col_default = withInstall(Col_default); - -// node_modules/ant-design-vue/es/comment/style/index.js -var genBaseStyle9 = (token2) => { - const { - componentCls, - commentBg, - commentPaddingBase, - commentNestIndent, - commentFontSizeBase, - commentFontSizeSm, - commentAuthorNameColor, - commentAuthorTimeColor, - commentActionColor, - commentActionHoverColor, - commentActionsMarginBottom, - commentActionsMarginTop, - commentContentDetailPMarginBottom - } = token2; - return { - [componentCls]: { - position: "relative", - backgroundColor: commentBg, - [`${componentCls}-inner`]: { - display: "flex", - padding: commentPaddingBase - }, - [`${componentCls}-avatar`]: { - position: "relative", - flexShrink: 0, - marginRight: token2.marginSM, - cursor: "pointer", - [`img`]: { - width: "32px", - height: "32px", - borderRadius: "50%" - } - }, - [`${componentCls}-content`]: { - position: "relative", - flex: `1 1 auto`, - minWidth: `1px`, - fontSize: commentFontSizeBase, - wordWrap: "break-word", - [`&-author`]: { - display: "flex", - flexWrap: "wrap", - justifyContent: "flex-start", - marginBottom: token2.marginXXS, - fontSize: commentFontSizeBase, - [`& > a,& > span`]: { - paddingRight: token2.paddingXS, - fontSize: commentFontSizeSm, - lineHeight: `18px` - }, - [`&-name`]: { - color: commentAuthorNameColor, - fontSize: commentFontSizeBase, - transition: `color ${token2.motionDurationSlow}`, - [`> *`]: { - color: commentAuthorNameColor, - [`&:hover`]: { - color: commentAuthorNameColor - } - } - }, - [`&-time`]: { - color: commentAuthorTimeColor, - whiteSpace: "nowrap", - cursor: "auto" - } - }, - [`&-detail p`]: { - marginBottom: commentContentDetailPMarginBottom, - whiteSpace: "pre-wrap" - } - }, - [`${componentCls}-actions`]: { - marginTop: commentActionsMarginTop, - marginBottom: commentActionsMarginBottom, - paddingLeft: 0, - [`> li`]: { - display: "inline-block", - color: commentActionColor, - [`> span`]: { - marginRight: "10px", - color: commentActionColor, - fontSize: commentFontSizeSm, - cursor: "pointer", - transition: `color ${token2.motionDurationSlow}`, - userSelect: "none", - [`&:hover`]: { - color: commentActionHoverColor - } - } - } - }, - [`${componentCls}-nested`]: { - marginLeft: commentNestIndent - }, - "&-rtl": { - direction: "rtl" - } - } - }; -}; -var style_default28 = genComponentStyleHook("Comment", (token2) => { - const commentToken = merge(token2, { - commentBg: "inherit", - commentPaddingBase: `${token2.paddingMD}px 0`, - commentNestIndent: `44px`, - commentFontSizeBase: token2.fontSize, - commentFontSizeSm: token2.fontSizeSM, - commentAuthorNameColor: token2.colorTextTertiary, - commentAuthorTimeColor: token2.colorTextPlaceholder, - commentActionColor: token2.colorTextTertiary, - commentActionHoverColor: token2.colorTextSecondary, - commentActionsMarginBottom: "inherit", - commentActionsMarginTop: token2.marginSM, - commentContentDetailPMarginBottom: "inherit" - }); - return [genBaseStyle9(commentToken)]; -}); - -// node_modules/ant-design-vue/es/comment/index.js -var commentProps = () => ({ - actions: Array, - /** The element to display as the comment author. */ - author: vue_types_default.any, - /** The element to display as the comment avatar - generally an antd Avatar */ - avatar: vue_types_default.any, - /** The main content of the comment */ - content: vue_types_default.any, - /** Comment prefix defaults to '.ant-comment' */ - prefixCls: String, - /** A datetime element containing the time to be displayed */ - datetime: vue_types_default.any -}); -var Comment2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AComment", - inheritAttrs: false, - props: commentProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("comment", props4); - const [wrapSSR, hashId] = style_default28(prefixCls); - const renderNested = (prefixCls2, children) => { - return createVNode("div", { - "class": `${prefixCls2}-nested` - }, [children]); - }; - const getAction = (actions) => { - if (!actions || !actions.length) { - return null; - } - const actionList = actions.map((action, index3) => createVNode("li", { - "key": `action-${index3}` - }, [action])); - return actionList; - }; - return () => { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; - const pre = prefixCls.value; - const actions = (_a2 = props4.actions) !== null && _a2 !== void 0 ? _a2 : (_b = slots.actions) === null || _b === void 0 ? void 0 : _b.call(slots); - const author = (_c = props4.author) !== null && _c !== void 0 ? _c : (_d = slots.author) === null || _d === void 0 ? void 0 : _d.call(slots); - const avatar = (_e = props4.avatar) !== null && _e !== void 0 ? _e : (_f = slots.avatar) === null || _f === void 0 ? void 0 : _f.call(slots); - const content = (_g = props4.content) !== null && _g !== void 0 ? _g : (_h = slots.content) === null || _h === void 0 ? void 0 : _h.call(slots); - const datetime = (_j = props4.datetime) !== null && _j !== void 0 ? _j : (_k = slots.datetime) === null || _k === void 0 ? void 0 : _k.call(slots); - const avatarDom = createVNode("div", { - "class": `${pre}-avatar` - }, [typeof avatar === "string" ? createVNode("img", { - "src": avatar, - "alt": "comment-avatar" - }, null) : avatar]); - const actionDom = actions ? createVNode("ul", { - "class": `${pre}-actions` - }, [getAction(Array.isArray(actions) ? actions : [actions])]) : null; - const authorContent = createVNode("div", { - "class": `${pre}-content-author` - }, [author && createVNode("span", { - "class": `${pre}-content-author-name` - }, [author]), datetime && createVNode("span", { - "class": `${pre}-content-author-time` - }, [datetime])]); - const contentDom = createVNode("div", { - "class": `${pre}-content` - }, [authorContent, createVNode("div", { - "class": `${pre}-content-detail` - }, [content]), actionDom]); - const comment2 = createVNode("div", { - "class": `${pre}-inner` - }, [avatarDom, contentDom]); - const children = flattenChildren((_l = slots.default) === null || _l === void 0 ? void 0 : _l.call(slots)); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [pre, { - [`${pre}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value] - }), [comment2, children && children.length ? renderNested(pre, children) : null])); - }; - } -}); -var comment_default = withInstall(Comment2); - -// node_modules/ant-design-vue/es/modal/locale.js -var runtimeLocale = _extends({}, en_US_default6.Modal); -function changeConfirmLocale(newLocale) { - if (newLocale) { - runtimeLocale = _extends(_extends({}, runtimeLocale), newLocale); - } else { - runtimeLocale = _extends({}, en_US_default6.Modal); - } -} -function getConfirmLocale() { - return runtimeLocale; -} - -// node_modules/ant-design-vue/es/locale/index.js -var ANT_MARK = "internalMark"; -var LocaleProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ALocaleProvider", - props: { - locale: { - type: Object - }, - ANT_MARK__: String - }, - setup(props4, _ref) { - let { - slots - } = _ref; - warning_default2(props4.ANT_MARK__ === ANT_MARK, "LocaleProvider", "`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead"); - const state = reactive({ - antLocale: _extends(_extends({}, props4.locale), { - exist: true - }), - ANT_MARK__: ANT_MARK - }); - provide("localeData", state); - watch(() => props4.locale, (locale4) => { - changeConfirmLocale(locale4 && locale4.Modal); - state.antLocale = _extends(_extends({}, locale4), { - exist: true - }); - }, { - immediate: true - }); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -LocaleProvider.install = function(app) { - app.component(LocaleProvider.name, LocaleProvider); - return app; -}; -var locale_default = withInstall(LocaleProvider); - -// node_modules/ant-design-vue/es/locale-provider/index.js -var locale_provider_default = locale_default; - -// node_modules/ant-design-vue/es/vc-notification/Notice.js -var Notice_default = defineComponent({ - name: "Notice", - inheritAttrs: false, - props: ["prefixCls", "duration", "updateMark", "noticeKey", "closeIcon", "closable", "props", "onClick", "onClose", "holder", "visible"], - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - let closeTimer; - let isUnMounted = false; - const duration = computed(() => props4.duration === void 0 ? 4.5 : props4.duration); - const startCloseTimer = () => { - if (duration.value && !isUnMounted) { - closeTimer = setTimeout(() => { - close(); - }, duration.value * 1e3); - } - }; - const clearCloseTimer = () => { - if (closeTimer) { - clearTimeout(closeTimer); - closeTimer = null; - } - }; - const close = (e3) => { - if (e3) { - e3.stopPropagation(); - } - clearCloseTimer(); - const { - onClose, - noticeKey - } = props4; - if (onClose) { - onClose(noticeKey); - } - }; - const restartCloseTimer = () => { - clearCloseTimer(); - startCloseTimer(); - }; - onMounted(() => { - startCloseTimer(); - }); - onUnmounted(() => { - isUnMounted = true; - clearCloseTimer(); - }); - watch([duration, () => props4.updateMark, () => props4.visible], (_ref2, _ref3) => { - let [preDuration, preUpdateMark, preVisible] = _ref2; - let [newDuration, newUpdateMark, newVisible] = _ref3; - if (preDuration !== newDuration || preUpdateMark !== newUpdateMark || preVisible !== newVisible && newVisible) { - restartCloseTimer(); - } - }, { - flush: "post" - }); - return () => { - var _a2, _b; - const { - prefixCls, - closable, - closeIcon = (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - onClick, - holder - } = props4; - const { - class: className, - style - } = attrs; - const componentClass = `${prefixCls}-notice`; - const dataOrAriaAttributeProps = Object.keys(attrs).reduce((acc, key2) => { - if (key2.startsWith("data-") || key2.startsWith("aria-") || key2 === "role") { - acc[key2] = attrs[key2]; - } - return acc; - }, {}); - const node2 = createVNode("div", _objectSpread2({ - "class": classNames_default(componentClass, className, { - [`${componentClass}-closable`]: closable - }), - "style": style, - "onMouseenter": clearCloseTimer, - "onMouseleave": startCloseTimer, - "onClick": onClick - }, dataOrAriaAttributeProps), [createVNode("div", { - "class": `${componentClass}-content` - }, [(_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)]), closable ? createVNode("a", { - "tabindex": 0, - "onClick": close, - "class": `${componentClass}-close` - }, [closeIcon || createVNode("span", { - "class": `${componentClass}-close-x` - }, null)]) : null]); - if (holder) { - return createVNode(Teleport, { - "to": holder - }, { - default: () => node2 - }); - } - return node2; - }; - } -}); - -// node_modules/ant-design-vue/es/vc-notification/Notification.js -var __rest28 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var seed = 0; -var now2 = Date.now(); -function getUuid() { - const id = seed; - seed += 1; - return `rcNotification_${now2}_${id}`; -} -var Notification = defineComponent({ - name: "Notification", - inheritAttrs: false, - props: ["prefixCls", "transitionName", "animation", "maxCount", "closeIcon", "hashId"], - setup(props4, _ref) { - let { - attrs, - expose, - slots - } = _ref; - const hookRefs = /* @__PURE__ */ new Map(); - const notices = ref([]); - const transitionProps = computed(() => { - const { - prefixCls, - animation = "fade" - } = props4; - let name = props4.transitionName; - if (!name && animation) { - name = `${prefixCls}-${animation}`; - } - return getTransitionGroupProps(name); - }); - const add2 = (originNotice, holderCallback) => { - const key2 = originNotice.key || getUuid(); - const notice3 = _extends(_extends({}, originNotice), { - key: key2 - }); - const { - maxCount: maxCount3 - } = props4; - const noticeIndex = notices.value.map((v2) => v2.notice.key).indexOf(key2); - const updatedNotices = notices.value.concat(); - if (noticeIndex !== -1) { - updatedNotices.splice(noticeIndex, 1, { - notice: notice3, - holderCallback - }); - } else { - if (maxCount3 && notices.value.length >= maxCount3) { - notice3.key = updatedNotices[0].notice.key; - notice3.updateMark = getUuid(); - notice3.userPassKey = key2; - updatedNotices.shift(); - } - updatedNotices.push({ - notice: notice3, - holderCallback - }); - } - notices.value = updatedNotices; - }; - const remove2 = (removeKey) => { - notices.value = notices.value.filter((_ref2) => { - let { - notice: { - key: key2, - userPassKey - } - } = _ref2; - const mergedKey = userPassKey || key2; - return mergedKey !== removeKey; - }); - }; - expose({ - add: add2, - remove: remove2, - notices - }); - return () => { - var _a2; - const { - prefixCls, - closeIcon = (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots, { - prefixCls - }) - } = props4; - const noticeNodes = notices.value.map((_ref3, index3) => { - let { - notice: notice3, - holderCallback - } = _ref3; - const updateMark = index3 === notices.value.length - 1 ? notice3.updateMark : void 0; - const { - key: key2, - userPassKey - } = notice3; - const { - content - } = notice3; - const noticeProps = _extends(_extends(_extends({ - prefixCls, - closeIcon: typeof closeIcon === "function" ? closeIcon({ - prefixCls - }) : closeIcon - }, notice3), notice3.props), { - key: key2, - noticeKey: userPassKey || key2, - updateMark, - onClose: (noticeKey) => { - var _a3; - remove2(noticeKey); - (_a3 = notice3.onClose) === null || _a3 === void 0 ? void 0 : _a3.call(notice3); - }, - onClick: notice3.onClick - }); - if (holderCallback) { - return createVNode("div", { - "key": key2, - "class": `${prefixCls}-hook-holder`, - "ref": (div) => { - if (typeof key2 === "undefined") { - return; - } - if (div) { - hookRefs.set(key2, div); - holderCallback(div, noticeProps); - } else { - hookRefs.delete(key2); - } - } - }, null); - } - return createVNode(Notice_default, _objectSpread2(_objectSpread2({}, noticeProps), {}, { - "class": classNames_default(noticeProps.class, props4.hashId) - }), { - default: () => [typeof content === "function" ? content({ - prefixCls - }) : content] - }); - }); - const className = { - [prefixCls]: 1, - [attrs.class]: !!attrs.class, - [props4.hashId]: true - }; - return createVNode("div", { - "class": className, - "style": attrs.style || { - top: "65px", - left: "50%" - } - }, [createVNode(TransitionGroup, _objectSpread2({ - "tag": "div" - }, transitionProps.value), { - default: () => [noticeNodes] - })]); - }; - } -}); -Notification.newInstance = function newNotificationInstance(properties, callback) { - const _a2 = properties || {}, { - name = "notification", - getContainer: getContainer3, - appContext, - prefixCls: customizePrefixCls, - rootPrefixCls: customRootPrefixCls, - transitionName: customTransitionName, - hasTransitionName: hasTransitionName2, - useStyle: useStyle2 - } = _a2, props4 = __rest28(_a2, ["name", "getContainer", "appContext", "prefixCls", "rootPrefixCls", "transitionName", "hasTransitionName", "useStyle"]); - const div = document.createElement("div"); - if (getContainer3) { - const root2 = getContainer3(); - root2.appendChild(div); - } else { - document.body.appendChild(div); - } - const Wrapper = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "NotificationWrapper", - setup(_props, _ref4) { - let { - attrs - } = _ref4; - const notiRef = shallowRef(); - const prefixCls = computed(() => globalConfigForApi.getPrefixCls(name, customizePrefixCls)); - const [, hashId] = useStyle2(prefixCls); - onMounted(() => { - callback({ - notice(noticeProps) { - var _a3; - (_a3 = notiRef.value) === null || _a3 === void 0 ? void 0 : _a3.add(noticeProps); - }, - removeNotice(key2) { - var _a3; - (_a3 = notiRef.value) === null || _a3 === void 0 ? void 0 : _a3.remove(key2); - }, - destroy() { - render(null, div); - if (div.parentNode) { - div.parentNode.removeChild(div); - } - }, - component: notiRef - }); - }); - return () => { - const global2 = globalConfigForApi; - const rootPrefixCls = global2.getRootPrefixCls(customRootPrefixCls, prefixCls.value); - const transitionName2 = hasTransitionName2 ? customTransitionName : `${prefixCls.value}-${customTransitionName}`; - return createVNode(config_provider_default, _objectSpread2(_objectSpread2({}, global2), {}, { - "prefixCls": rootPrefixCls - }), { - default: () => [createVNode(Notification, _objectSpread2(_objectSpread2({ - "ref": notiRef - }, attrs), {}, { - "prefixCls": prefixCls.value, - "transitionName": transitionName2, - "hashId": hashId.value - }), null)] - }); - }; - } - }); - const vm = createVNode(Wrapper, props4); - vm.appContext = appContext || vm.appContext; - render(vm, div); -}; -var Notification_default = Notification; - -// node_modules/ant-design-vue/es/vc-notification/HookNotification.js -var seed2 = 0; -var now3 = Date.now(); -function getUuid2() { - const id = seed2; - seed2 += 1; - return `rcNotification_${now3}_${id}`; -} -var Notification2 = defineComponent({ - name: "HookNotification", - inheritAttrs: false, - props: ["prefixCls", "transitionName", "animation", "maxCount", "closeIcon", "hashId", "remove", "notices", "getStyles", "getClassName", "onAllRemoved", "getContainer"], - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const hookRefs = /* @__PURE__ */ new Map(); - const notices = computed(() => props4.notices); - const transitionProps = computed(() => { - let name = props4.transitionName; - if (!name && props4.animation) { - switch (typeof props4.animation) { - case "string": - name = props4.animation; - break; - case "function": - name = props4.animation().name; - break; - case "object": - name = props4.animation.name; - break; - default: - name = `${props4.prefixCls}-fade`; - break; - } - } - return getTransitionGroupProps(name); - }); - const remove2 = (key2) => props4.remove(key2); - const placements5 = ref({}); - watch(notices, () => { - const nextPlacements = {}; - Object.keys(placements5.value).forEach((placement) => { - nextPlacements[placement] = []; - }); - props4.notices.forEach((config) => { - const { - placement = "topRight" - } = config.notice; - if (placement) { - nextPlacements[placement] = nextPlacements[placement] || []; - nextPlacements[placement].push(config); - } - }); - placements5.value = nextPlacements; - }); - const placementList = computed(() => Object.keys(placements5.value)); - return () => { - var _a2; - const { - prefixCls, - closeIcon = (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots, { - prefixCls - }) - } = props4; - const noticeNodes = placementList.value.map((placement) => { - var _a3, _b; - const noticesForPlacement = placements5.value[placement]; - const classes = (_a3 = props4.getClassName) === null || _a3 === void 0 ? void 0 : _a3.call(props4, placement); - const styles = (_b = props4.getStyles) === null || _b === void 0 ? void 0 : _b.call(props4, placement); - const noticeNodesForPlacement = noticesForPlacement.map((_ref2, index3) => { - let { - notice: notice3, - holderCallback - } = _ref2; - const updateMark = index3 === notices.value.length - 1 ? notice3.updateMark : void 0; - const { - key: key2, - userPassKey - } = notice3; - const { - content - } = notice3; - const noticeProps = _extends(_extends(_extends({ - prefixCls, - closeIcon: typeof closeIcon === "function" ? closeIcon({ - prefixCls - }) : closeIcon - }, notice3), notice3.props), { - key: key2, - noticeKey: userPassKey || key2, - updateMark, - onClose: (noticeKey) => { - var _a4; - remove2(noticeKey); - (_a4 = notice3.onClose) === null || _a4 === void 0 ? void 0 : _a4.call(notice3); - }, - onClick: notice3.onClick - }); - if (holderCallback) { - return createVNode("div", { - "key": key2, - "class": `${prefixCls}-hook-holder`, - "ref": (div) => { - if (typeof key2 === "undefined") { - return; - } - if (div) { - hookRefs.set(key2, div); - holderCallback(div, noticeProps); - } else { - hookRefs.delete(key2); - } - } - }, null); - } - return createVNode(Notice_default, _objectSpread2(_objectSpread2({}, noticeProps), {}, { - "class": classNames_default(noticeProps.class, props4.hashId) - }), { - default: () => [typeof content === "function" ? content({ - prefixCls - }) : content] - }); - }); - const className = { - [prefixCls]: 1, - [`${prefixCls}-${placement}`]: 1, - [attrs.class]: !!attrs.class, - [props4.hashId]: true, - [classes]: !!classes - }; - function onAfterLeave() { - var _a4; - if (noticesForPlacement.length > 0) { - return; - } - Reflect.deleteProperty(placements5.value, placement); - (_a4 = props4.onAllRemoved) === null || _a4 === void 0 ? void 0 : _a4.call(props4); - } - return createVNode("div", { - "key": placement, - "class": className, - "style": attrs.style || styles || { - top: "65px", - left: "50%" - } - }, [createVNode(TransitionGroup, _objectSpread2(_objectSpread2({ - "tag": "div" - }, transitionProps.value), {}, { - "onAfterLeave": onAfterLeave - }), { - default: () => [noticeNodesForPlacement] - })]); - }); - return createVNode(Portal_default, { - "getContainer": props4.getContainer - }, { - default: () => [noticeNodes] - }); - }; - } -}); -var HookNotification_default = Notification2; - -// node_modules/ant-design-vue/es/vc-notification/useNotification.js -var __rest29 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var defaultGetContainer = () => document.body; -var uniqueKey = 0; -function mergeConfig() { - const clone3 = {}; - for (var _len = arguments.length, objList = new Array(_len), _key = 0; _key < _len; _key++) { - objList[_key] = arguments[_key]; - } - objList.forEach((obj) => { - if (obj) { - Object.keys(obj).forEach((key2) => { - const val = obj[key2]; - if (val !== void 0) { - clone3[key2] = val; - } - }); - } - }); - return clone3; -} -function useNotification() { - let rootConfig = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - const { - getContainer: getContainer3 = defaultGetContainer, - motion, - prefixCls, - maxCount: maxCount3, - getClassName, - getStyles, - onAllRemoved - } = rootConfig, shareConfig = __rest29(rootConfig, ["getContainer", "motion", "prefixCls", "maxCount", "getClassName", "getStyles", "onAllRemoved"]); - const notices = shallowRef([]); - const notificationsRef = shallowRef(); - const add2 = (originNotice, holderCallback) => { - const key2 = originNotice.key || getUuid2(); - const notice3 = _extends(_extends({}, originNotice), { - key: key2 - }); - const noticeIndex = notices.value.map((v2) => v2.notice.key).indexOf(key2); - const updatedNotices = notices.value.concat(); - if (noticeIndex !== -1) { - updatedNotices.splice(noticeIndex, 1, { - notice: notice3, - holderCallback - }); - } else { - if (maxCount3 && notices.value.length >= maxCount3) { - notice3.key = updatedNotices[0].notice.key; - notice3.updateMark = getUuid2(); - notice3.userPassKey = key2; - updatedNotices.shift(); - } - updatedNotices.push({ - notice: notice3, - holderCallback - }); - } - notices.value = updatedNotices; - }; - const removeNotice = (removeKey) => { - notices.value = notices.value.filter((_ref) => { - let { - notice: { - key: key2, - userPassKey - } - } = _ref; - const mergedKey = userPassKey || key2; - return mergedKey !== removeKey; - }); - }; - const destroy = () => { - notices.value = []; - }; - const contextHolder = () => createVNode(HookNotification_default, { - "ref": notificationsRef, - "prefixCls": prefixCls, - "maxCount": maxCount3, - "notices": notices.value, - "remove": removeNotice, - "getClassName": getClassName, - "getStyles": getStyles, - "animation": motion, - "hashId": rootConfig.hashId, - "onAllRemoved": onAllRemoved, - "getContainer": getContainer3 - }, null); - const taskQueue = shallowRef([]); - const api3 = { - open: (config) => { - const mergedConfig = mergeConfig(shareConfig, config); - if (mergedConfig.key === null || mergedConfig.key === void 0) { - mergedConfig.key = `vc-notification-${uniqueKey}`; - uniqueKey += 1; - } - taskQueue.value = [...taskQueue.value, { - type: "open", - config: mergedConfig - }]; - }, - close: (key2) => { - taskQueue.value = [...taskQueue.value, { - type: "close", - key: key2 - }]; - }, - destroy: () => { - taskQueue.value = [...taskQueue.value, { - type: "destroy" - }]; - } - }; - watch(taskQueue, () => { - if (taskQueue.value.length) { - taskQueue.value.forEach((task) => { - switch (task.type) { - case "open": - add2(task.config); - break; - case "close": - removeNotice(task.key); - break; - case "destroy": - destroy(); - break; - } - }); - taskQueue.value = []; - } - }); - return [api3, contextHolder]; -} - -// node_modules/ant-design-vue/es/vc-notification/index.js -var vc_notification_default = Notification_default; - -// node_modules/ant-design-vue/es/message/style/index.js -var genMessageStyle = (token2) => { - const { - componentCls, - iconCls, - boxShadowSecondary, - colorBgElevated, - colorSuccess, - colorError, - colorWarning, - colorInfo, - fontSizeLG, - motionEaseInOutCirc, - motionDurationSlow, - marginXS, - paddingXS, - borderRadiusLG, - zIndexPopup, - // Custom token - messageNoticeContentPadding - } = token2; - const messageMoveIn = new Keyframes_default("MessageMoveIn", { - "0%": { - padding: 0, - transform: "translateY(-100%)", - opacity: 0 - }, - "100%": { - padding: paddingXS, - transform: "translateY(0)", - opacity: 1 - } - }); - const messageMoveOut = new Keyframes_default("MessageMoveOut", { - "0%": { - maxHeight: token2.height, - padding: paddingXS, - opacity: 1 - }, - "100%": { - maxHeight: 0, - padding: 0, - opacity: 0 - } - }); - return [ - // ============================ Holder ============================ - { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "fixed", - top: marginXS, - left: "50%", - transform: "translateX(-50%)", - width: "100%", - pointerEvents: "none", - zIndex: zIndexPopup, - [`${componentCls}-move-up`]: { - animationFillMode: "forwards" - }, - [` - ${componentCls}-move-up-appear, - ${componentCls}-move-up-enter - `]: { - animationName: messageMoveIn, - animationDuration: motionDurationSlow, - animationPlayState: "paused", - animationTimingFunction: motionEaseInOutCirc - }, - [` - ${componentCls}-move-up-appear${componentCls}-move-up-appear-active, - ${componentCls}-move-up-enter${componentCls}-move-up-enter-active - `]: { - animationPlayState: "running" - }, - [`${componentCls}-move-up-leave`]: { - animationName: messageMoveOut, - animationDuration: motionDurationSlow, - animationPlayState: "paused", - animationTimingFunction: motionEaseInOutCirc - }, - [`${componentCls}-move-up-leave${componentCls}-move-up-leave-active`]: { - animationPlayState: "running" - }, - "&-rtl": { - direction: "rtl", - span: { - direction: "rtl" - } - } - }) - }, - // ============================ Notice ============================ - { - [`${componentCls}-notice`]: { - padding: paddingXS, - textAlign: "center", - [iconCls]: { - verticalAlign: "text-bottom", - marginInlineEnd: marginXS, - fontSize: fontSizeLG - }, - [`${componentCls}-notice-content`]: { - display: "inline-block", - padding: messageNoticeContentPadding, - background: colorBgElevated, - borderRadius: borderRadiusLG, - boxShadow: boxShadowSecondary, - pointerEvents: "all" - }, - [`${componentCls}-success ${iconCls}`]: { - color: colorSuccess - }, - [`${componentCls}-error ${iconCls}`]: { - color: colorError - }, - [`${componentCls}-warning ${iconCls}`]: { - color: colorWarning - }, - [` - ${componentCls}-info ${iconCls}, - ${componentCls}-loading ${iconCls}`]: { - color: colorInfo - } - } - }, - // ============================= Pure ============================= - { - [`${componentCls}-notice-pure-panel`]: { - padding: 0, - textAlign: "start" - } - } - ]; -}; -var style_default29 = genComponentStyleHook("Message", (token2) => { - const combinedToken = merge(token2, { - messageNoticeContentPadding: `${(token2.controlHeightLG - token2.fontSize * token2.lineHeight) / 2}px ${token2.paddingSM}px` - }); - return [genMessageStyle(combinedToken)]; -}, (token2) => ({ - height: 150, - zIndexPopup: token2.zIndexPopupBase + 10 -})); - -// node_modules/ant-design-vue/es/message/PurePanel.js -var TypeIcon = { - info: createVNode(InfoCircleFilled_default, null, null), - success: createVNode(CheckCircleFilled_default, null, null), - error: createVNode(CloseCircleFilled_default, null, null), - warning: createVNode(ExclamationCircleFilled_default, null, null), - loading: createVNode(LoadingOutlined_default, null, null) -}; -var PureContent = defineComponent({ - name: "PureContent", - inheritAttrs: false, - props: ["prefixCls", "type", "icon"], - setup(props4, _ref) { - let { - slots - } = _ref; - return () => { - var _a2; - return createVNode("div", { - "class": classNames_default(`${props4.prefixCls}-custom-content`, `${props4.prefixCls}-${props4.type}`) - }, [props4.icon || TypeIcon[props4.type], createVNode("span", null, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])]); - }; - } -}); -var PurePanel_default = defineComponent({ - name: "PurePanel", - inheritAttrs: false, - props: ["prefixCls", "class", "type", "icon", "content"], - setup(props4, _ref2) { - let { - slots, - attrs - } = _ref2; - var _a2; - const { - getPrefixCls - } = useConfigContextInject(); - const prefixCls = computed(() => props4.prefixCls || getPrefixCls("message")); - const [, hashId] = style_default29(prefixCls); - return createVNode(Notice_default, _objectSpread2(_objectSpread2({}, attrs), {}, { - "prefixCls": prefixCls.value, - "class": classNames_default(hashId.value, `${prefixCls.value}-notice-pure-panel`), - "noticeKey": "pure", - "duration": null - }), { - default: () => [createVNode(PureContent, { - "prefixCls": prefixCls.value, - "type": props4.type, - "icon": props4.icon - }, { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - })] - }); - } -}); - -// node_modules/ant-design-vue/es/message/useMessage.js -var __rest30 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var DEFAULT_OFFSET = 8; -var DEFAULT_DURATION = 3; -var Holder = defineComponent({ - name: "Holder", - inheritAttrs: false, - props: ["top", "prefixCls", "getContainer", "maxCount", "duration", "rtl", "transitionName", "onAllRemoved"], - setup(props4, _ref) { - let { - expose - } = _ref; - var _a2, _b; - const { - getPrefixCls, - getPopupContainer - } = useConfigInject_default("message", props4); - const prefixCls = computed(() => getPrefixCls("message", props4.prefixCls)); - const [, hashId] = style_default29(prefixCls); - const getStyles = () => { - var _a3; - const top = (_a3 = props4.top) !== null && _a3 !== void 0 ? _a3 : DEFAULT_OFFSET; - return { - left: "50%", - transform: "translateX(-50%)", - top: typeof top === "number" ? `${top}px` : top - }; - }; - const getClassName = () => classNames_default(hashId.value, props4.rtl ? `${prefixCls.value}-rtl` : ""); - const getNotificationMotion = () => { - var _a3; - return getMotion({ - prefixCls: prefixCls.value, - animation: (_a3 = props4.animation) !== null && _a3 !== void 0 ? _a3 : `move-up`, - transitionName: props4.transitionName - }); - }; - const mergedCloseIcon = createVNode("span", { - "class": `${prefixCls.value}-close-x` - }, [createVNode(CloseOutlined_default, { - "class": `${prefixCls.value}-close-icon` - }, null)]); - const [api3, holder] = useNotification({ - //@ts-ignore - getStyles, - prefixCls: prefixCls.value, - getClassName, - motion: getNotificationMotion, - closable: false, - closeIcon: mergedCloseIcon, - duration: (_a2 = props4.duration) !== null && _a2 !== void 0 ? _a2 : DEFAULT_DURATION, - getContainer: (_b = props4.staticGetContainer) !== null && _b !== void 0 ? _b : getPopupContainer.value, - maxCount: props4.maxCount, - onAllRemoved: props4.onAllRemoved - }); - expose(_extends(_extends({}, api3), { - prefixCls, - hashId - })); - return holder; - } -}); -var keyIndex = 0; -function useInternalMessage(messageConfig) { - const holderRef = shallowRef(null); - const holderKey = Symbol("messageHolderKey"); - const close = (key2) => { - var _a2; - (_a2 = holderRef.value) === null || _a2 === void 0 ? void 0 : _a2.close(key2); - }; - const open2 = (config) => { - if (!holderRef.value) { - const fakeResult = () => { - }; - fakeResult.then = () => { - }; - return fakeResult; - } - const { - open: originOpen, - prefixCls, - hashId - } = holderRef.value; - const noticePrefixCls = `${prefixCls}-notice`; - const { - content, - icon, - type: type4, - key: key2, - class: className, - onClose - } = config, restConfig = __rest30(config, ["content", "icon", "type", "key", "class", "onClose"]); - let mergedKey = key2; - if (mergedKey === void 0 || mergedKey === null) { - keyIndex += 1; - mergedKey = `antd-message-${keyIndex}`; - } - return wrapPromiseFn((resolve) => { - originOpen(_extends(_extends({}, restConfig), { - key: mergedKey, - content: () => createVNode(PureContent, { - "prefixCls": prefixCls, - "type": type4, - "icon": typeof icon === "function" ? icon() : icon - }, { - default: () => [typeof content === "function" ? content() : content] - }), - placement: "top", - // @ts-ignore - class: classNames_default(type4 && `${noticePrefixCls}-${type4}`, hashId, className), - onClose: () => { - onClose === null || onClose === void 0 ? void 0 : onClose(); - resolve(); - } - })); - return () => { - close(mergedKey); - }; - }); - }; - const destroy = (key2) => { - var _a2; - if (key2 !== void 0) { - close(key2); - } else { - (_a2 = holderRef.value) === null || _a2 === void 0 ? void 0 : _a2.destroy(); - } - }; - const wrapAPI = { - open: open2, - destroy - }; - const keys2 = ["info", "success", "warning", "error", "loading"]; - keys2.forEach((type4) => { - const typeOpen = (jointContent, duration, onClose) => { - let config; - if (jointContent && typeof jointContent === "object" && "content" in jointContent) { - config = jointContent; - } else { - config = { - content: jointContent - }; - } - let mergedDuration; - let mergedOnClose; - if (typeof duration === "function") { - mergedOnClose = duration; - } else { - mergedDuration = duration; - mergedOnClose = onClose; - } - const mergedConfig = _extends(_extends({ - onClose: mergedOnClose, - duration: mergedDuration - }, config), { - type: type4 - }); - return open2(mergedConfig); - }; - wrapAPI[type4] = typeOpen; - }); - return [wrapAPI, () => createVNode(Holder, _objectSpread2(_objectSpread2({ - "key": holderKey - }, messageConfig), {}, { - "ref": holderRef - }), null)]; -} -function useMessage(messageConfig) { - return useInternalMessage(messageConfig); -} - -// node_modules/ant-design-vue/es/message/index.js -var defaultDuration = 3; -var defaultTop; -var messageInstance; -var key = 1; -var localPrefixCls = ""; -var transitionName = "move-up"; -var hasTransitionName = false; -var getContainer2 = () => document.body; -var maxCount; -var rtl = false; -function getKeyThenIncreaseKey() { - return key++; -} -function setMessageConfig(options) { - if (options.top !== void 0) { - defaultTop = options.top; - messageInstance = null; - } - if (options.duration !== void 0) { - defaultDuration = options.duration; - } - if (options.prefixCls !== void 0) { - localPrefixCls = options.prefixCls; - } - if (options.getContainer !== void 0) { - getContainer2 = options.getContainer; - messageInstance = null; - } - if (options.transitionName !== void 0) { - transitionName = options.transitionName; - messageInstance = null; - hasTransitionName = true; - } - if (options.maxCount !== void 0) { - maxCount = options.maxCount; - messageInstance = null; - } - if (options.rtl !== void 0) { - rtl = options.rtl; - } -} -function getMessageInstance(args, callback) { - if (messageInstance) { - callback(messageInstance); - return; - } - vc_notification_default.newInstance({ - appContext: args.appContext, - prefixCls: args.prefixCls || localPrefixCls, - rootPrefixCls: args.rootPrefixCls, - transitionName, - hasTransitionName, - style: { - top: defaultTop - }, - getContainer: getContainer2 || args.getPopupContainer, - maxCount, - name: "message", - useStyle: style_default29 - }, (instance) => { - if (messageInstance) { - callback(messageInstance); - return; - } - messageInstance = instance; - callback(instance); - }); -} -var typeToIcon = { - info: InfoCircleFilled_default, - success: CheckCircleFilled_default, - error: CloseCircleFilled_default, - warning: ExclamationCircleFilled_default, - loading: LoadingOutlined_default -}; -var typeList = Object.keys(typeToIcon); -function notice(args) { - const duration = args.duration !== void 0 ? args.duration : defaultDuration; - const target = args.key || getKeyThenIncreaseKey(); - const closePromise = new Promise((resolve) => { - const callback = () => { - if (typeof args.onClose === "function") { - args.onClose(); - } - return resolve(true); - }; - getMessageInstance(args, (instance) => { - instance.notice({ - key: target, - duration, - style: args.style || {}, - class: args.class, - content: (_ref) => { - let { - prefixCls - } = _ref; - const Icon = typeToIcon[args.type]; - const iconNode = Icon ? createVNode(Icon, null, null) : ""; - const messageClass = classNames_default(`${prefixCls}-custom-content`, { - [`${prefixCls}-${args.type}`]: args.type, - [`${prefixCls}-rtl`]: rtl === true - }); - return createVNode("div", { - "class": messageClass - }, [typeof args.icon === "function" ? args.icon() : args.icon || iconNode, createVNode("span", null, [typeof args.content === "function" ? args.content() : args.content])]); - }, - onClose: callback, - onClick: args.onClick - }); - }); - }); - const result2 = () => { - if (messageInstance) { - messageInstance.removeNotice(target); - } - }; - result2.then = (filled, rejected) => closePromise.then(filled, rejected); - result2.promise = closePromise; - return result2; -} -function isArgsProps(content) { - return Object.prototype.toString.call(content) === "[object Object]" && !!content.content; -} -var api = { - open: notice, - config: setMessageConfig, - destroy(messageKey) { - if (messageInstance) { - if (messageKey) { - const { - removeNotice - } = messageInstance; - removeNotice(messageKey); - } else { - const { - destroy - } = messageInstance; - destroy(); - messageInstance = null; - } - } - } -}; -function attachTypeApi(originalApi, type4) { - originalApi[type4] = (content, duration, onClose) => { - if (isArgsProps(content)) { - return originalApi.open(_extends(_extends({}, content), { - type: type4 - })); - } - if (typeof duration === "function") { - onClose = duration; - duration = void 0; - } - return originalApi.open({ - content, - duration, - type: type4, - onClose - }); - }; -} -typeList.forEach((type4) => attachTypeApi(api, type4)); -api.warn = api.warning; -api.useMessage = useMessage; -var message_default = api; - -// node_modules/ant-design-vue/es/notification/style/placement.js -var genNotificationPlacementStyle = (token2) => { - const { - componentCls, - width, - notificationMarginEdge - } = token2; - const notificationTopFadeIn = new Keyframes_default("antNotificationTopFadeIn", { - "0%": { - marginTop: "-100%", - opacity: 0 - }, - "100%": { - marginTop: 0, - opacity: 1 - } - }); - const notificationBottomFadeIn = new Keyframes_default("antNotificationBottomFadeIn", { - "0%": { - marginBottom: "-100%", - opacity: 0 - }, - "100%": { - marginBottom: 0, - opacity: 1 - } - }); - const notificationLeftFadeIn = new Keyframes_default("antNotificationLeftFadeIn", { - "0%": { - right: { - _skip_check_: true, - value: width - }, - opacity: 0 - }, - "100%": { - right: { - _skip_check_: true, - value: 0 - }, - opacity: 1 - } - }); - return { - [`&${componentCls}-top, &${componentCls}-bottom`]: { - marginInline: 0 - }, - [`&${componentCls}-top`]: { - [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]: { - animationName: notificationTopFadeIn - } - }, - [`&${componentCls}-bottom`]: { - [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]: { - animationName: notificationBottomFadeIn - } - }, - [`&${componentCls}-topLeft, &${componentCls}-bottomLeft`]: { - marginInlineEnd: 0, - marginInlineStart: notificationMarginEdge, - [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]: { - animationName: notificationLeftFadeIn - } - } - }; -}; -var placement_default = genNotificationPlacementStyle; - -// node_modules/ant-design-vue/es/notification/style/index.js -var genNotificationStyle = (token2) => { - const { - iconCls, - componentCls, - // .ant-notification - boxShadowSecondary, - fontSizeLG, - notificationMarginBottom, - borderRadiusLG, - colorSuccess, - colorInfo, - colorWarning, - colorError, - colorTextHeading, - notificationBg, - notificationPadding, - notificationMarginEdge, - motionDurationMid, - motionEaseInOut, - fontSize, - lineHeight, - width, - notificationIconSize - } = token2; - const noticeCls = `${componentCls}-notice`; - const notificationFadeIn = new Keyframes_default("antNotificationFadeIn", { - "0%": { - left: { - _skip_check_: true, - value: width - }, - opacity: 0 - }, - "100%": { - left: { - _skip_check_: true, - value: 0 - }, - opacity: 1 - } - }); - const notificationFadeOut = new Keyframes_default("antNotificationFadeOut", { - "0%": { - maxHeight: token2.animationMaxHeight, - marginBottom: notificationMarginBottom, - opacity: 1 - }, - "100%": { - maxHeight: 0, - marginBottom: 0, - paddingTop: 0, - paddingBottom: 0, - opacity: 0 - } - }); - return [ - // ============================ Holder ============================ - { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "fixed", - zIndex: token2.zIndexPopup, - marginInlineEnd: notificationMarginEdge, - [`${componentCls}-hook-holder`]: { - position: "relative" - }, - [`&${componentCls}-top, &${componentCls}-bottom`]: { - [`${componentCls}-notice`]: { - marginInline: "auto auto" - } - }, - [`&${componentCls}-topLeft, &${componentCls}-bottomLeft`]: { - [`${componentCls}-notice`]: { - marginInlineEnd: "auto", - marginInlineStart: 0 - } - }, - // animation - [`${componentCls}-fade-enter, ${componentCls}-fade-appear`]: { - animationDuration: token2.motionDurationMid, - animationTimingFunction: motionEaseInOut, - animationFillMode: "both", - opacity: 0, - animationPlayState: "paused" - }, - [`${componentCls}-fade-leave`]: { - animationTimingFunction: motionEaseInOut, - animationFillMode: "both", - animationDuration: motionDurationMid, - animationPlayState: "paused" - }, - [`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]: { - animationName: notificationFadeIn, - animationPlayState: "running" - }, - [`${componentCls}-fade-leave${componentCls}-fade-leave-active`]: { - animationName: notificationFadeOut, - animationPlayState: "running" - } - }), placement_default(token2)), { - // RTL - "&-rtl": { - direction: "rtl", - [`${componentCls}-notice-btn`]: { - float: "left" - } - } - }) - }, - // ============================ Notice ============================ - { - [noticeCls]: { - position: "relative", - width, - maxWidth: `calc(100vw - ${notificationMarginEdge * 2}px)`, - marginBottom: notificationMarginBottom, - marginInlineStart: "auto", - padding: notificationPadding, - overflow: "hidden", - lineHeight, - wordWrap: "break-word", - background: notificationBg, - borderRadius: borderRadiusLG, - boxShadow: boxShadowSecondary, - [`${componentCls}-close-icon`]: { - fontSize, - cursor: "pointer" - }, - [`${noticeCls}-message`]: { - marginBottom: token2.marginXS, - color: colorTextHeading, - fontSize: fontSizeLG, - lineHeight: token2.lineHeightLG - }, - [`${noticeCls}-description`]: { - fontSize - }, - [`&${noticeCls}-closable ${noticeCls}-message`]: { - paddingInlineEnd: token2.paddingLG - }, - [`${noticeCls}-with-icon ${noticeCls}-message`]: { - marginBottom: token2.marginXS, - marginInlineStart: token2.marginSM + notificationIconSize, - fontSize: fontSizeLG - }, - [`${noticeCls}-with-icon ${noticeCls}-description`]: { - marginInlineStart: token2.marginSM + notificationIconSize, - fontSize - }, - // Icon & color style in different selector level - // https://github.com/ant-design/ant-design/issues/16503 - // https://github.com/ant-design/ant-design/issues/15512 - [`${noticeCls}-icon`]: { - position: "absolute", - fontSize: notificationIconSize, - lineHeight: 0, - // icon-font - [`&-success${iconCls}`]: { - color: colorSuccess - }, - [`&-info${iconCls}`]: { - color: colorInfo - }, - [`&-warning${iconCls}`]: { - color: colorWarning - }, - [`&-error${iconCls}`]: { - color: colorError - } - }, - [`${noticeCls}-close`]: { - position: "absolute", - top: token2.notificationPaddingVertical, - insetInlineEnd: token2.notificationPaddingHorizontal, - color: token2.colorIcon, - outline: "none", - width: token2.notificationCloseButtonSize, - height: token2.notificationCloseButtonSize, - borderRadius: token2.borderRadiusSM, - transition: `background-color ${token2.motionDurationMid}, color ${token2.motionDurationMid}`, - display: "flex", - alignItems: "center", - justifyContent: "center", - "&:hover": { - color: token2.colorIconHover, - backgroundColor: token2.wireframe ? "transparent" : token2.colorFillContent - } - }, - [`${noticeCls}-btn`]: { - float: "right", - marginTop: token2.marginSM - } - } - }, - // ============================= Pure ============================= - { - [`${noticeCls}-pure-panel`]: { - margin: 0 - } - } - ]; -}; -var style_default30 = genComponentStyleHook("Notification", (token2) => { - const notificationPaddingVertical = token2.paddingMD; - const notificationPaddingHorizontal = token2.paddingLG; - const notificationToken = merge(token2, { - // default.less variables - notificationBg: token2.colorBgElevated, - notificationPaddingVertical, - notificationPaddingHorizontal, - // index.less variables - notificationPadding: `${token2.paddingMD}px ${token2.paddingContentHorizontalLG}px`, - notificationMarginBottom: token2.margin, - notificationMarginEdge: token2.marginLG, - animationMaxHeight: 150, - notificationIconSize: token2.fontSizeLG * token2.lineHeightLG, - notificationCloseButtonSize: token2.controlHeightLG * 0.55 - }); - return [genNotificationStyle(notificationToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase + 50, - width: 384 -})); - -// node_modules/ant-design-vue/es/notification/PurePanel.js -function getCloseIcon(prefixCls, closeIcon) { - return closeIcon || createVNode("span", { - "class": `${prefixCls}-close-x` - }, [createVNode(CloseOutlined_default, { - "class": `${prefixCls}-close-icon` - }, null)]); -} -var TypeIcon2 = { - info: createVNode(InfoCircleFilled_default, null, null), - success: createVNode(CheckCircleFilled_default, null, null), - error: createVNode(CloseCircleFilled_default, null, null), - warning: createVNode(ExclamationCircleFilled_default, null, null), - loading: createVNode(LoadingOutlined_default, null, null) -}; -var typeToIcon2 = { - success: CheckCircleFilled_default, - info: InfoCircleFilled_default, - error: CloseCircleFilled_default, - warning: ExclamationCircleFilled_default -}; -function PureContent2(_ref) { - let { - prefixCls, - icon, - type: type4, - message, - description, - btn - } = _ref; - let iconNode = null; - if (icon) { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [renderHelper(icon)]); - } else if (type4) { - const Icon = typeToIcon2[type4]; - iconNode = createVNode(Icon, { - "class": `${prefixCls}-icon ${prefixCls}-icon-${type4}` - }, null); - } - return createVNode("div", { - "class": classNames_default({ - [`${prefixCls}-with-icon`]: iconNode - }), - "role": "alert" - }, [iconNode, createVNode("div", { - "class": `${prefixCls}-message` - }, [message]), createVNode("div", { - "class": `${prefixCls}-description` - }, [description]), btn && createVNode("div", { - "class": `${prefixCls}-btn` - }, [btn])]); -} -var PurePanel_default2 = defineComponent({ - name: "PurePanel", - inheritAttrs: false, - props: ["prefixCls", "icon", "type", "message", "description", "btn", "closeIcon"], - setup(props4) { - const { - getPrefixCls - } = useConfigInject_default("notification", props4); - const prefixCls = computed(() => props4.prefixCls || getPrefixCls("notification")); - const noticePrefixCls = computed(() => `${prefixCls.value}-notice`); - const [, hashId] = style_default30(prefixCls); - return () => { - return createVNode(Notice_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls.value, - "class": classNames_default(hashId.value, `${noticePrefixCls.value}-pure-panel`), - "noticeKey": "pure", - "duration": null, - "closable": props4.closable, - "closeIcon": getCloseIcon(prefixCls.value, props4.closeIcon) - }), { - default: () => [createVNode(PureContent2, { - "prefixCls": noticePrefixCls.value, - "icon": props4.icon, - "type": props4.type, - "message": props4.message, - "description": props4.description, - "btn": props4.btn - }, null)] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/notification/util.js -function getPlacementStyle(placement, top, bottom) { - let style; - top = typeof top === "number" ? `${top}px` : top; - bottom = typeof bottom === "number" ? `${bottom}px` : bottom; - switch (placement) { - case "top": - style = { - left: "50%", - transform: "translateX(-50%)", - right: "auto", - top, - bottom: "auto" - }; - break; - case "topLeft": - style = { - left: 0, - top, - bottom: "auto" - }; - break; - case "topRight": - style = { - right: 0, - top, - bottom: "auto" - }; - break; - case "bottom": - style = { - left: "50%", - transform: "translateX(-50%)", - right: "auto", - top: "auto", - bottom - }; - break; - case "bottomLeft": - style = { - left: 0, - top: "auto", - bottom - }; - break; - default: - style = { - right: 0, - top: "auto", - bottom - }; - break; - } - return style; -} -function getMotion2(prefixCls) { - return { - name: `${prefixCls}-fade` - }; -} - -// node_modules/ant-design-vue/es/notification/useNotification.js -var __rest31 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var DEFAULT_OFFSET2 = 24; -var DEFAULT_DURATION2 = 4.5; -var Holder2 = defineComponent({ - name: "Holder", - inheritAttrs: false, - props: ["prefixCls", "class", "type", "icon", "content", "onAllRemoved"], - setup(props4, _ref) { - let { - expose - } = _ref; - const { - getPrefixCls, - getPopupContainer - } = useConfigInject_default("notification", props4); - const prefixCls = computed(() => props4.prefixCls || getPrefixCls("notification")); - const getStyles = (placement) => { - var _a2, _b; - return getPlacementStyle(placement, (_a2 = props4.top) !== null && _a2 !== void 0 ? _a2 : DEFAULT_OFFSET2, (_b = props4.bottom) !== null && _b !== void 0 ? _b : DEFAULT_OFFSET2); - }; - const [, hashId] = style_default30(prefixCls); - const getClassName = () => classNames_default(hashId.value, { - [`${prefixCls.value}-rtl`]: props4.rtl - }); - const getNotificationMotion = () => getMotion2(prefixCls.value); - const [api3, holder] = useNotification({ - prefixCls: prefixCls.value, - getStyles, - getClassName, - motion: getNotificationMotion, - closable: true, - closeIcon: getCloseIcon(prefixCls.value), - duration: DEFAULT_DURATION2, - getContainer: () => { - var _a2, _b; - return ((_a2 = props4.getPopupContainer) === null || _a2 === void 0 ? void 0 : _a2.call(props4)) || ((_b = getPopupContainer.value) === null || _b === void 0 ? void 0 : _b.call(getPopupContainer)) || document.body; - }, - maxCount: props4.maxCount, - hashId: hashId.value, - onAllRemoved: props4.onAllRemoved - }); - expose(_extends(_extends({}, api3), { - prefixCls: prefixCls.value, - hashId - })); - return holder; - } -}); -function useInternalNotification(notificationConfig) { - const holderRef = shallowRef(null); - const holderKey = Symbol("notificationHolderKey"); - const open2 = (config) => { - if (!holderRef.value) { - return; - } - const { - open: originOpen, - prefixCls, - hashId - } = holderRef.value; - const noticePrefixCls = `${prefixCls}-notice`; - const { - message, - description, - icon, - type: type4, - btn, - class: className - } = config, restConfig = __rest31(config, ["message", "description", "icon", "type", "btn", "class"]); - return originOpen(_extends(_extends({ - placement: "topRight" - }, restConfig), { - content: () => createVNode(PureContent2, { - "prefixCls": noticePrefixCls, - "icon": typeof icon === "function" ? icon() : icon, - "type": type4, - "message": typeof message === "function" ? message() : message, - "description": typeof description === "function" ? description() : description, - "btn": typeof btn === "function" ? btn() : btn - }, null), - // @ts-ignore - class: classNames_default(type4 && `${noticePrefixCls}-${type4}`, hashId, className) - })); - }; - const destroy = (key2) => { - var _a2, _b; - if (key2 !== void 0) { - (_a2 = holderRef.value) === null || _a2 === void 0 ? void 0 : _a2.close(key2); - } else { - (_b = holderRef.value) === null || _b === void 0 ? void 0 : _b.destroy(); - } - }; - const wrapAPI = { - open: open2, - destroy - }; - const keys2 = ["success", "info", "warning", "error"]; - keys2.forEach((type4) => { - wrapAPI[type4] = (config) => open2(_extends(_extends({}, config), { - type: type4 - })); - }); - return [wrapAPI, () => createVNode(Holder2, _objectSpread2(_objectSpread2({ - "key": holderKey - }, notificationConfig), {}, { - "ref": holderRef - }), null)]; -} -function useNotification2(notificationConfig) { - return useInternalNotification(notificationConfig); -} - -// node_modules/ant-design-vue/es/notification/index.js -var notificationInstance = {}; -var defaultDuration2 = 4.5; -var defaultTop2 = "24px"; -var defaultBottom = "24px"; -var defaultPrefixCls = ""; -var defaultPlacement = "topRight"; -var defaultGetContainer2 = () => document.body; -var defaultCloseIcon = null; -var rtl2 = false; -var maxCount2; -function setNotificationConfig(options) { - const { - duration, - placement, - bottom, - top, - getContainer: getContainer3, - closeIcon, - prefixCls - } = options; - if (prefixCls !== void 0) { - defaultPrefixCls = prefixCls; - } - if (duration !== void 0) { - defaultDuration2 = duration; - } - if (placement !== void 0) { - defaultPlacement = placement; - } - if (bottom !== void 0) { - defaultBottom = typeof bottom === "number" ? `${bottom}px` : bottom; - } - if (top !== void 0) { - defaultTop2 = typeof top === "number" ? `${top}px` : top; - } - if (getContainer3 !== void 0) { - defaultGetContainer2 = getContainer3; - } - if (closeIcon !== void 0) { - defaultCloseIcon = closeIcon; - } - if (options.rtl !== void 0) { - rtl2 = options.rtl; - } - if (options.maxCount !== void 0) { - maxCount2 = options.maxCount; - } -} -function getNotificationInstance(_ref, callback) { - let { - prefixCls: customizePrefixCls, - placement = defaultPlacement, - getContainer: getContainer3 = defaultGetContainer2, - top, - bottom, - closeIcon = defaultCloseIcon, - appContext - } = _ref; - const { - getPrefixCls - } = globalConfig(); - const prefixCls = getPrefixCls("notification", customizePrefixCls || defaultPrefixCls); - const cacheKey = `${prefixCls}-${placement}-${rtl2}`; - const cacheInstance = notificationInstance[cacheKey]; - if (cacheInstance) { - Promise.resolve(cacheInstance).then((instance) => { - callback(instance); - }); - return; - } - const notificationClass = classNames_default(`${prefixCls}-${placement}`, { - [`${prefixCls}-rtl`]: rtl2 === true - }); - vc_notification_default.newInstance({ - name: "notification", - prefixCls: customizePrefixCls || defaultPrefixCls, - useStyle: style_default30, - class: notificationClass, - style: getPlacementStyle(placement, top !== null && top !== void 0 ? top : defaultTop2, bottom !== null && bottom !== void 0 ? bottom : defaultBottom), - appContext, - getContainer: getContainer3, - closeIcon: (_ref2) => { - let { - prefixCls: prefixCls2 - } = _ref2; - const closeIconToRender = createVNode("span", { - "class": `${prefixCls2}-close-x` - }, [renderHelper(closeIcon, {}, createVNode(CloseOutlined_default, { - "class": `${prefixCls2}-close-icon` - }, null))]); - return closeIconToRender; - }, - maxCount: maxCount2, - hasTransitionName: true - }, (notification) => { - notificationInstance[cacheKey] = notification; - callback(notification); - }); -} -var typeToIcon3 = { - success: CheckCircleOutlined_default, - info: InfoCircleOutlined_default, - error: CloseCircleOutlined_default, - warning: ExclamationCircleOutlined_default -}; -function notice2(args) { - const { - icon, - type: type4, - description, - message, - btn - } = args; - const duration = args.duration === void 0 ? defaultDuration2 : args.duration; - getNotificationInstance(args, (notification) => { - notification.notice({ - content: (_ref3) => { - let { - prefixCls: outerPrefixCls - } = _ref3; - const prefixCls = `${outerPrefixCls}-notice`; - let iconNode = null; - if (icon) { - iconNode = () => createVNode("span", { - "class": `${prefixCls}-icon` - }, [renderHelper(icon)]); - } else if (type4) { - const Icon = typeToIcon3[type4]; - iconNode = () => createVNode(Icon, { - "class": `${prefixCls}-icon ${prefixCls}-icon-${type4}` - }, null); - } - return createVNode("div", { - "class": iconNode ? `${prefixCls}-with-icon` : "" - }, [iconNode && iconNode(), createVNode("div", { - "class": `${prefixCls}-message` - }, [!description && iconNode ? createVNode("span", { - "class": `${prefixCls}-message-single-line-auto-margin` - }, null) : null, renderHelper(message)]), createVNode("div", { - "class": `${prefixCls}-description` - }, [renderHelper(description)]), btn ? createVNode("span", { - "class": `${prefixCls}-btn` - }, [renderHelper(btn)]) : null]); - }, - duration, - closable: true, - onClose: args.onClose, - onClick: args.onClick, - key: args.key, - style: args.style || {}, - class: args.class - }); - }); -} -var api2 = { - open: notice2, - close(key2) { - Object.keys(notificationInstance).forEach((cacheKey) => Promise.resolve(notificationInstance[cacheKey]).then((instance) => { - instance.removeNotice(key2); - })); - }, - config: setNotificationConfig, - destroy() { - Object.keys(notificationInstance).forEach((cacheKey) => { - Promise.resolve(notificationInstance[cacheKey]).then((instance) => { - instance.destroy(); - }); - delete notificationInstance[cacheKey]; - }); - } -}; -var iconTypes = ["success", "info", "warning", "error"]; -iconTypes.forEach((type4) => { - api2[type4] = (args) => api2.open(_extends(_extends({}, args), { - type: type4 - })); -}); -api2.warn = api2.warning; -api2.useNotification = useNotification2; -var notification_default = api2; - -// node_modules/ant-design-vue/es/config-provider/cssVariables.js -var dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`; -function getStyle3(globalPrefixCls, theme) { - const variables = {}; - const formatColor = (color, updater) => { - let clone3 = color.clone(); - clone3 = (updater === null || updater === void 0 ? void 0 : updater(clone3)) || clone3; - return clone3.toRgbString(); - }; - const fillColor = (colorVal, type4) => { - const baseColor = new TinyColor(colorVal); - const colorPalettes = generate(baseColor.toRgbString()); - variables[`${type4}-color`] = formatColor(baseColor); - variables[`${type4}-color-disabled`] = colorPalettes[1]; - variables[`${type4}-color-hover`] = colorPalettes[4]; - variables[`${type4}-color-active`] = colorPalettes[6]; - variables[`${type4}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString(); - variables[`${type4}-color-deprecated-bg`] = colorPalettes[0]; - variables[`${type4}-color-deprecated-border`] = colorPalettes[2]; - }; - if (theme.primaryColor) { - fillColor(theme.primaryColor, "primary"); - const primaryColor = new TinyColor(theme.primaryColor); - const primaryColors = generate(primaryColor.toRgbString()); - primaryColors.forEach((color, index3) => { - variables[`primary-${index3 + 1}`] = color; - }); - variables["primary-color-deprecated-l-35"] = formatColor(primaryColor, (c2) => c2.lighten(35)); - variables["primary-color-deprecated-l-20"] = formatColor(primaryColor, (c2) => c2.lighten(20)); - variables["primary-color-deprecated-t-20"] = formatColor(primaryColor, (c2) => c2.tint(20)); - variables["primary-color-deprecated-t-50"] = formatColor(primaryColor, (c2) => c2.tint(50)); - variables["primary-color-deprecated-f-12"] = formatColor(primaryColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.12)); - const primaryActiveColor = new TinyColor(primaryColors[0]); - variables["primary-color-active-deprecated-f-30"] = formatColor(primaryActiveColor, (c2) => c2.setAlpha(c2.getAlpha() * 0.3)); - variables["primary-color-active-deprecated-d-02"] = formatColor(primaryActiveColor, (c2) => c2.darken(2)); - } - if (theme.successColor) { - fillColor(theme.successColor, "success"); - } - if (theme.warningColor) { - fillColor(theme.warningColor, "warning"); - } - if (theme.errorColor) { - fillColor(theme.errorColor, "error"); - } - if (theme.infoColor) { - fillColor(theme.infoColor, "info"); - } - const cssList = Object.keys(variables).map((key2) => `--${globalPrefixCls}-${key2}: ${variables[key2]};`); - return ` - :root { - ${cssList.join("\n")} - } - `.trim(); -} -function registerTheme(globalPrefixCls, theme) { - const style = getStyle3(globalPrefixCls, theme); - if (canUseDom_default()) { - updateCSS(style, `${dynamicStyleMark}-dynamic-theme`); - } else { - warning_default2(false, "ConfigProvider", "SSR do not support dynamic theme with css variables."); - } -} - -// node_modules/ant-design-vue/es/config-provider/style/index.js -var useStyle = (iconPrefixCls) => { - const [theme, token2] = useToken(); - return useStyleRegister(computed(() => ({ - theme: theme.value, - token: token2.value, - hashId: "", - path: ["ant-design-icons", iconPrefixCls.value] - })), () => [{ - [`.${iconPrefixCls.value}`]: _extends(_extends({}, resetIcon()), { - [`.${iconPrefixCls.value} .${iconPrefixCls.value}-icon`]: { - display: "block" - } - }) - }]); -}; -var style_default31 = useStyle; - -// node_modules/ant-design-vue/es/config-provider/hooks/useTheme.js -function useTheme(theme, parentTheme) { - const themeConfig = computed(() => (theme === null || theme === void 0 ? void 0 : theme.value) || {}); - const parentThemeConfig = computed(() => themeConfig.value.inherit === false || !(parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value) ? defaultConfig : parentTheme.value); - const mergedTheme = computed(() => { - if (!(theme === null || theme === void 0 ? void 0 : theme.value)) { - return parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value; - } - const mergedComponents = _extends({}, parentThemeConfig.value.components); - Object.keys(theme.value.components || {}).forEach((componentName) => { - mergedComponents[componentName] = _extends(_extends({}, mergedComponents[componentName]), theme.value.components[componentName]); - }); - return _extends(_extends(_extends({}, parentThemeConfig.value), themeConfig.value), { - token: _extends(_extends({}, parentThemeConfig.value.token), themeConfig.value.token), - components: mergedComponents - }); - }); - return mergedTheme; -} - -// node_modules/ant-design-vue/es/config-provider/index.js -var __rest32 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var defaultPrefixCls2 = "ant"; -function getGlobalPrefixCls() { - return globalConfigForApi.prefixCls || defaultPrefixCls2; -} -function getGlobalIconPrefixCls() { - return globalConfigForApi.iconPrefixCls || defaultIconPrefixCls; -} -var globalConfigBySet = reactive({}); -var globalConfigForApi = reactive({}); -watchEffect(() => { - _extends(globalConfigForApi, globalConfigBySet); - globalConfigForApi.prefixCls = getGlobalPrefixCls(); - globalConfigForApi.iconPrefixCls = getGlobalIconPrefixCls(); - globalConfigForApi.getPrefixCls = (suffixCls, customizePrefixCls) => { - if (customizePrefixCls) return customizePrefixCls; - return suffixCls ? `${globalConfigForApi.prefixCls}-${suffixCls}` : globalConfigForApi.prefixCls; - }; - globalConfigForApi.getRootPrefixCls = () => { - if (globalConfigForApi.prefixCls) { - return globalConfigForApi.prefixCls; - } - return getGlobalPrefixCls(); - }; -}); -var stopWatchEffect; -var setGlobalConfig = (params) => { - if (stopWatchEffect) { - stopWatchEffect(); - } - stopWatchEffect = watchEffect(() => { - _extends(globalConfigBySet, reactive(params)); - _extends(globalConfigForApi, reactive(params)); - }); - if (params.theme) { - registerTheme(getGlobalPrefixCls(), params.theme); - } -}; -var globalConfig = () => ({ - getPrefixCls: (suffixCls, customizePrefixCls) => { - if (customizePrefixCls) return customizePrefixCls; - return suffixCls ? `${getGlobalPrefixCls()}-${suffixCls}` : getGlobalPrefixCls(); - }, - getIconPrefixCls: getGlobalIconPrefixCls, - getRootPrefixCls: () => { - if (globalConfigForApi.prefixCls) { - return globalConfigForApi.prefixCls; - } - return getGlobalPrefixCls(); - } -}); -var ConfigProvider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AConfigProvider", - inheritAttrs: false, - props: configProviderProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const parentContext = useConfigContextInject(); - const getPrefixCls = (suffixCls, customizePrefixCls) => { - const { - prefixCls = "ant" - } = props4; - if (customizePrefixCls) return customizePrefixCls; - const mergedPrefixCls = prefixCls || parentContext.getPrefixCls(""); - return suffixCls ? `${mergedPrefixCls}-${suffixCls}` : mergedPrefixCls; - }; - const iconPrefixCls = computed(() => props4.iconPrefixCls || parentContext.iconPrefixCls.value || defaultIconPrefixCls); - const shouldWrapSSR = computed(() => iconPrefixCls.value !== parentContext.iconPrefixCls.value); - const csp = computed(() => { - var _a2; - return props4.csp || ((_a2 = parentContext.csp) === null || _a2 === void 0 ? void 0 : _a2.value); - }); - const wrapSSR = style_default31(iconPrefixCls); - const mergedTheme = useTheme(computed(() => props4.theme), computed(() => { - var _a2; - return (_a2 = parentContext.theme) === null || _a2 === void 0 ? void 0 : _a2.value; - })); - const renderEmptyComponent = (name) => { - const renderEmpty2 = props4.renderEmpty || slots.renderEmpty || parentContext.renderEmpty || renderEmpty_default; - return renderEmpty2(name); - }; - const autoInsertSpaceInButton = computed(() => { - var _a2, _b; - return (_a2 = props4.autoInsertSpaceInButton) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.autoInsertSpaceInButton) === null || _b === void 0 ? void 0 : _b.value; - }); - const locale4 = computed(() => { - var _a2; - return props4.locale || ((_a2 = parentContext.locale) === null || _a2 === void 0 ? void 0 : _a2.value); - }); - watch(locale4, () => { - globalConfigBySet.locale = locale4.value; - }, { - immediate: true - }); - const direction = computed(() => { - var _a2; - return props4.direction || ((_a2 = parentContext.direction) === null || _a2 === void 0 ? void 0 : _a2.value); - }); - const space = computed(() => { - var _a2, _b; - return (_a2 = props4.space) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.space) === null || _b === void 0 ? void 0 : _b.value; - }); - const virtual = computed(() => { - var _a2, _b; - return (_a2 = props4.virtual) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.virtual) === null || _b === void 0 ? void 0 : _b.value; - }); - const dropdownMatchSelectWidth = computed(() => { - var _a2, _b; - return (_a2 = props4.dropdownMatchSelectWidth) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.dropdownMatchSelectWidth) === null || _b === void 0 ? void 0 : _b.value; - }); - const getTargetContainer = computed(() => { - var _a2; - return props4.getTargetContainer !== void 0 ? props4.getTargetContainer : (_a2 = parentContext.getTargetContainer) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const getPopupContainer = computed(() => { - var _a2; - return props4.getPopupContainer !== void 0 ? props4.getPopupContainer : (_a2 = parentContext.getPopupContainer) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const pageHeader = computed(() => { - var _a2; - return props4.pageHeader !== void 0 ? props4.pageHeader : (_a2 = parentContext.pageHeader) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const input = computed(() => { - var _a2; - return props4.input !== void 0 ? props4.input : (_a2 = parentContext.input) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const pagination = computed(() => { - var _a2; - return props4.pagination !== void 0 ? props4.pagination : (_a2 = parentContext.pagination) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const form = computed(() => { - var _a2; - return props4.form !== void 0 ? props4.form : (_a2 = parentContext.form) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const select = computed(() => { - var _a2; - return props4.select !== void 0 ? props4.select : (_a2 = parentContext.select) === null || _a2 === void 0 ? void 0 : _a2.value; - }); - const componentSize = computed(() => props4.componentSize); - const componentDisabled = computed(() => props4.componentDisabled); - const wave = computed(() => { - var _a2, _b; - return (_a2 = props4.wave) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.wave) === null || _b === void 0 ? void 0 : _b.value; - }); - const configProvider = { - csp, - autoInsertSpaceInButton, - locale: locale4, - direction, - space, - virtual, - dropdownMatchSelectWidth, - getPrefixCls, - iconPrefixCls, - theme: computed(() => { - var _a2, _b; - return (_a2 = mergedTheme.value) !== null && _a2 !== void 0 ? _a2 : (_b = parentContext.theme) === null || _b === void 0 ? void 0 : _b.value; - }), - renderEmpty: renderEmptyComponent, - getTargetContainer, - getPopupContainer, - pageHeader, - input, - pagination, - form, - select, - componentSize, - componentDisabled, - transformCellText: computed(() => props4.transformCellText), - wave - }; - const memoTheme = computed(() => { - const _a2 = mergedTheme.value || {}, { - algorithm, - token: token2 - } = _a2, rest2 = __rest32(_a2, ["algorithm", "token"]); - const themeObj = algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) ? createTheme(algorithm) : void 0; - return _extends(_extends({}, rest2), { - theme: themeObj, - token: _extends(_extends({}, seed_default), token2) - }); - }); - const validateMessagesRef = computed(() => { - var _a2, _b; - let validateMessages = {}; - if (locale4.value) { - validateMessages = ((_a2 = locale4.value.Form) === null || _a2 === void 0 ? void 0 : _a2.defaultValidateMessages) || ((_b = en_US_default6.Form) === null || _b === void 0 ? void 0 : _b.defaultValidateMessages) || {}; - } - if (props4.form && props4.form.validateMessages) { - validateMessages = _extends(_extends({}, validateMessages), props4.form.validateMessages); - } - return validateMessages; - }); - useConfigContextProvider(configProvider); - useProvideGlobalForm({ - validateMessages: validateMessagesRef - }); - useProviderSize(componentSize); - useProviderDisabled(componentDisabled); - const renderProvider = (legacyLocale) => { - var _a2, _b; - let childNode = shouldWrapSSR.value ? wrapSSR((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) : (_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots); - if (props4.theme) { - const _childNode = /* @__PURE__ */ function() { - return childNode; - }(); - childNode = createVNode(DesignTokenProvider, { - "value": memoTheme.value - }, { - default: () => [_childNode] - }); - } - return createVNode(locale_provider_default, { - "locale": locale4.value || legacyLocale, - "ANT_MARK__": ANT_MARK - }, { - default: () => [childNode] - }); - }; - watchEffect(() => { - if (direction.value) { - message_default.config({ - rtl: direction.value === "rtl" - }); - notification_default.config({ - rtl: direction.value === "rtl" - }); - } - }); - return () => createVNode(LocaleReceiver_default2, { - "children": (_2, __, legacyLocale) => renderProvider(legacyLocale) - }, null); - } -}); -ConfigProvider.config = setGlobalConfig; -ConfigProvider.install = function(app) { - app.component(ConfigProvider.name, ConfigProvider); -}; -var config_provider_default = ConfigProvider; - -// node_modules/ant-design-vue/es/date-picker/PickerButton.js -var PickerButton = (props4, _ref) => { - let { - attrs, - slots - } = _ref; - return createVNode(button_default2, _objectSpread2(_objectSpread2({ - "size": "small", - "type": "primary" - }, props4), attrs), slots); -}; -var PickerButton_default = PickerButton; - -// node_modules/ant-design-vue/es/tag/style/index.js -var genTagStatusStyle = (token2, status, cssVariableType) => { - const capitalizedCssVariableType = capitalize(cssVariableType); - return { - [`${token2.componentCls}-${status}`]: { - color: token2[`color${cssVariableType}`], - background: token2[`color${capitalizedCssVariableType}Bg`], - borderColor: token2[`color${capitalizedCssVariableType}Border`], - [`&${token2.componentCls}-borderless`]: { - borderColor: "transparent" - } - } - }; -}; -var genPresetStyle = (token2) => genPresetColor(token2, (colorKey, _ref) => { - let { - textColor, - lightBorderColor, - lightColor, - darkColor - } = _ref; - return { - [`${token2.componentCls}-${colorKey}`]: { - color: textColor, - background: lightColor, - borderColor: lightBorderColor, - // Inverse color - "&-inverse": { - color: token2.colorTextLightSolid, - background: darkColor, - borderColor: darkColor - }, - [`&${token2.componentCls}-borderless`]: { - borderColor: "transparent" - } - } - }; -}); -var genBaseStyle10 = (token2) => { - const { - paddingXXS, - lineWidth, - tagPaddingHorizontal, - componentCls - } = token2; - const paddingInline = tagPaddingHorizontal - lineWidth; - const iconMarginInline = paddingXXS - lineWidth; - return { - // Result - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - display: "inline-block", - height: "auto", - marginInlineEnd: token2.marginXS, - paddingInline, - fontSize: token2.tagFontSize, - lineHeight: `${token2.tagLineHeight}px`, - whiteSpace: "nowrap", - background: token2.tagDefaultBg, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: token2.borderRadiusSM, - opacity: 1, - transition: `all ${token2.motionDurationMid}`, - textAlign: "start", - // RTL - [`&${componentCls}-rtl`]: { - direction: "rtl" - }, - "&, a, a:hover": { - color: token2.tagDefaultColor - }, - [`${componentCls}-close-icon`]: { - marginInlineStart: iconMarginInline, - color: token2.colorTextDescription, - fontSize: token2.tagIconSize, - cursor: "pointer", - transition: `all ${token2.motionDurationMid}`, - "&:hover": { - color: token2.colorTextHeading - } - }, - [`&${componentCls}-has-color`]: { - borderColor: "transparent", - [`&, a, a:hover, ${token2.iconCls}-close, ${token2.iconCls}-close:hover`]: { - color: token2.colorTextLightSolid - } - }, - [`&-checkable`]: { - backgroundColor: "transparent", - borderColor: "transparent", - cursor: "pointer", - [`&:not(${componentCls}-checkable-checked):hover`]: { - color: token2.colorPrimary, - backgroundColor: token2.colorFillSecondary - }, - "&:active, &-checked": { - color: token2.colorTextLightSolid - }, - "&-checked": { - backgroundColor: token2.colorPrimary, - "&:hover": { - backgroundColor: token2.colorPrimaryHover - } - }, - "&:active": { - backgroundColor: token2.colorPrimaryActive - } - }, - [`&-hidden`]: { - display: "none" - }, - // To ensure that a space will be placed between character and `Icon`. - [`> ${token2.iconCls} + span, > span + ${token2.iconCls}`]: { - marginInlineStart: paddingInline - } - }), - [`${componentCls}-borderless`]: { - borderColor: "transparent", - background: token2.tagBorderlessBg - } - }; -}; -var style_default32 = genComponentStyleHook("Tag", (token2) => { - const { - fontSize, - lineHeight, - lineWidth, - fontSizeIcon - } = token2; - const tagHeight = Math.round(fontSize * lineHeight); - const tagFontSize = token2.fontSizeSM; - const tagLineHeight = tagHeight - lineWidth * 2; - const tagDefaultBg = token2.colorFillAlter; - const tagDefaultColor = token2.colorText; - const tagToken = merge(token2, { - tagFontSize, - tagLineHeight, - tagDefaultBg, - tagDefaultColor, - tagIconSize: fontSizeIcon - 2 * lineWidth, - tagPaddingHorizontal: 8, - tagBorderlessBg: token2.colorFillTertiary - }); - return [genBaseStyle10(tagToken), genPresetStyle(tagToken), genTagStatusStyle(tagToken, "success", "Success"), genTagStatusStyle(tagToken, "processing", "Info"), genTagStatusStyle(tagToken, "error", "Error"), genTagStatusStyle(tagToken, "warning", "Warning")]; -}); - -// node_modules/ant-design-vue/es/tag/CheckableTag.js -var checkableTagProps = () => ({ - prefixCls: String, - checked: { - type: Boolean, - default: void 0 - }, - onChange: { - type: Function - }, - onClick: { - type: Function - }, - "onUpdate:checked": Function -}); -var CheckableTag = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ACheckableTag", - inheritAttrs: false, - props: checkableTagProps(), - // emits: ['update:checked', 'change', 'click'], - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const { - prefixCls - } = useConfigInject_default("tag", props4); - const [wrapSSR, hashId] = style_default32(prefixCls); - const handleClick = (e3) => { - const { - checked - } = props4; - emit("update:checked", !checked); - emit("change", !checked); - emit("click", e3); - }; - const cls = computed(() => classNames_default(prefixCls.value, hashId.value, { - [`${prefixCls.value}-checkable`]: true, - [`${prefixCls.value}-checkable-checked`]: props4.checked - })); - return () => { - var _a2; - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [cls.value, attrs.class], - "onClick": handleClick - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); -var CheckableTag_default = CheckableTag; - -// node_modules/ant-design-vue/es/tag/index.js -var tagProps = () => ({ - prefixCls: String, - color: { - type: String - }, - closable: { - type: Boolean, - default: false - }, - closeIcon: vue_types_default.any, - /** @deprecated `visible` will be removed in next major version. */ - visible: { - type: Boolean, - default: void 0 - }, - onClose: { - type: Function - }, - onClick: eventType(), - "onUpdate:visible": Function, - icon: vue_types_default.any, - bordered: { - type: Boolean, - default: true - } -}); -var Tag = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATag", - inheritAttrs: false, - props: tagProps(), - // emits: ['update:visible', 'close'], - slots: Object, - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("tag", props4); - const [wrapSSR, hashId] = style_default32(prefixCls); - const visible = shallowRef(true); - if (true) { - warning_default2(props4.visible === void 0, "Tag", '`visible` is deprecated, please use `` instead.'); - } - watchEffect(() => { - if (props4.visible !== void 0) { - visible.value = props4.visible; - } - }); - const handleCloseClick = (e3) => { - e3.stopPropagation(); - emit("update:visible", false); - emit("close", e3); - if (e3.defaultPrevented) { - return; - } - if (props4.visible === void 0) { - visible.value = false; - } - }; - const isInternalColor = computed(() => isPresetColor(props4.color) || isPresetStatusColor(props4.color)); - const tagClassName = computed(() => classNames_default(prefixCls.value, hashId.value, { - [`${prefixCls.value}-${props4.color}`]: isInternalColor.value, - [`${prefixCls.value}-has-color`]: props4.color && !isInternalColor.value, - [`${prefixCls.value}-hidden`]: !visible.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-borderless`]: !props4.bordered - })); - const handleClick = (e3) => { - emit("click", e3); - }; - return () => { - var _a2, _b, _c; - const { - icon = (_a2 = slots.icon) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - color, - closeIcon = (_b = slots.closeIcon) === null || _b === void 0 ? void 0 : _b.call(slots), - closable = false - } = props4; - const renderCloseIcon = () => { - if (closable) { - return closeIcon ? createVNode("span", { - "class": `${prefixCls.value}-close-icon`, - "onClick": handleCloseClick - }, [closeIcon]) : createVNode(CloseOutlined_default, { - "class": `${prefixCls.value}-close-icon`, - "onClick": handleCloseClick - }, null); - } - return null; - }; - const tagStyle = { - backgroundColor: color && !isInternalColor.value ? color : void 0 - }; - const iconNode = icon || null; - const children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots); - const kids = iconNode ? createVNode(Fragment, null, [iconNode, createVNode("span", null, [children])]) : children; - const isNeedWave = props4.onClick !== void 0; - const tagNode = createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "onClick": handleClick, - "class": [tagClassName.value, attrs.class], - "style": [tagStyle, attrs.style] - }), [kids, renderCloseIcon()]); - return wrapSSR(isNeedWave ? createVNode(wave_default, null, { - default: () => [tagNode] - }) : tagNode); - }; - } -}); -Tag.CheckableTag = CheckableTag_default; -Tag.install = function(app) { - app.component(Tag.name, Tag); - app.component(CheckableTag_default.name, CheckableTag_default); - return app; -}; -var tag_default = Tag; - -// node_modules/ant-design-vue/es/date-picker/PickerTag.js -function PickerTag(props4, _ref) { - let { - slots, - attrs - } = _ref; - return createVNode(tag_default, _objectSpread2(_objectSpread2({ - "color": "blue" - }, props4), attrs), slots); -} - -// node_modules/ant-design-vue/es/date-picker/util.js -function getPlaceholder(locale4, picker, customizePlaceholder) { - if (customizePlaceholder !== void 0) { - return customizePlaceholder; - } - if (picker === "year" && locale4.lang.yearPlaceholder) { - return locale4.lang.yearPlaceholder; - } - if (picker === "quarter" && locale4.lang.quarterPlaceholder) { - return locale4.lang.quarterPlaceholder; - } - if (picker === "month" && locale4.lang.monthPlaceholder) { - return locale4.lang.monthPlaceholder; - } - if (picker === "week" && locale4.lang.weekPlaceholder) { - return locale4.lang.weekPlaceholder; - } - if (picker === "time" && locale4.timePickerLocale.placeholder) { - return locale4.timePickerLocale.placeholder; - } - return locale4.lang.placeholder; -} -function getRangePlaceholder(locale4, picker, customizePlaceholder) { - if (customizePlaceholder !== void 0) { - return customizePlaceholder; - } - if (picker === "year" && locale4.lang.yearPlaceholder) { - return locale4.lang.rangeYearPlaceholder; - } - if (picker === "month" && locale4.lang.monthPlaceholder) { - return locale4.lang.rangeMonthPlaceholder; - } - if (picker === "week" && locale4.lang.weekPlaceholder) { - return locale4.lang.rangeWeekPlaceholder; - } - if (picker === "time" && locale4.timePickerLocale.placeholder) { - return locale4.timePickerLocale.rangePlaceholder; - } - return locale4.lang.rangePlaceholder; -} -function transPlacement2DropdownAlign(direction, placement) { - const overflow = { - adjustX: 1, - adjustY: 1 - }; - switch (placement) { - case "bottomLeft": { - return { - points: ["tl", "bl"], - offset: [0, 4], - overflow - }; - } - case "bottomRight": { - return { - points: ["tr", "br"], - offset: [0, 4], - overflow - }; - } - case "topLeft": { - return { - points: ["bl", "tl"], - offset: [0, -4], - overflow - }; - } - case "topRight": { - return { - points: ["br", "tr"], - offset: [0, -4], - overflow - }; - } - default: { - return { - points: direction === "rtl" ? ["tr", "br"] : ["tl", "bl"], - offset: [0, 4], - overflow - }; - } - } -} - -// node_modules/ant-design-vue/es/date-picker/generatePicker/props.js -function commonProps() { - return { - id: String, - /** - * @deprecated `dropdownClassName` is deprecated which will be removed in next major - * version.Please use `popupClassName` instead. - */ - dropdownClassName: String, - popupClassName: String, - popupStyle: objectType(), - transitionName: String, - placeholder: String, - allowClear: booleanType(), - autofocus: booleanType(), - disabled: booleanType(), - tabindex: Number, - open: booleanType(), - defaultOpen: booleanType(), - /** Make input readOnly to avoid popup keyboard in mobile */ - inputReadOnly: booleanType(), - format: someType([String, Function, Array]), - // Value - // format: string | CustomFormat | (string | CustomFormat)[]; - // Render - // suffixIcon?: VueNode; - // clearIcon?: VueNode; - // prevIcon?: VueNode; - // nextIcon?: VueNode; - // superPrevIcon?: VueNode; - // superNextIcon?: VueNode; - getPopupContainer: functionType(), - panelRender: functionType(), - // // Events - onChange: functionType(), - "onUpdate:value": functionType(), - onOk: functionType(), - onOpenChange: functionType(), - "onUpdate:open": functionType(), - onFocus: functionType(), - onBlur: functionType(), - onMousedown: functionType(), - onMouseup: functionType(), - onMouseenter: functionType(), - onMouseleave: functionType(), - onClick: functionType(), - onContextmenu: functionType(), - onKeydown: functionType(), - // WAI-ARIA - role: String, - name: String, - autocomplete: String, - direction: stringType(), - showToday: booleanType(), - showTime: someType([Boolean, Object]), - locale: objectType(), - size: stringType(), - bordered: booleanType(), - dateRender: functionType(), - disabledDate: functionType(), - mode: stringType(), - picker: stringType(), - valueFormat: String, - placement: stringType(), - status: stringType(), - /** @deprecated Please use `disabledTime` instead. */ - disabledHours: functionType(), - /** @deprecated Please use `disabledTime` instead. */ - disabledMinutes: functionType(), - /** @deprecated Please use `disabledTime` instead. */ - disabledSeconds: functionType() - }; -} -function datePickerProps() { - return { - defaultPickerValue: someType([Object, String]), - defaultValue: someType([Object, String]), - value: someType([Object, String]), - presets: arrayType(), - disabledTime: functionType(), - renderExtraFooter: functionType(), - showNow: booleanType(), - monthCellRender: functionType(), - // deprecated Please use `monthCellRender"` instead.', - monthCellContentRender: functionType() - }; -} -function rangePickerProps() { - return { - allowEmpty: arrayType(), - dateRender: functionType(), - defaultPickerValue: arrayType(), - defaultValue: arrayType(), - value: arrayType(), - presets: arrayType(), - disabledTime: functionType(), - disabled: someType([Boolean, Array]), - renderExtraFooter: functionType(), - separator: { - type: String - }, - showTime: someType([Boolean, Object]), - ranges: objectType(), - placeholder: arrayType(), - mode: arrayType(), - onChange: functionType(), - "onUpdate:value": functionType(), - onCalendarChange: functionType(), - onPanelChange: functionType(), - onOk: functionType() - }; -} - -// node_modules/ant-design-vue/es/date-picker/generatePicker/generateSinglePicker.js -var __rest33 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function generateSinglePicker(generateConfig2, extraProps) { - function getPicker(picker, displayName) { - const comProps = _extends(_extends(_extends({}, commonProps()), datePickerProps()), extraProps); - return defineComponent({ - compatConfig: { - MODE: 3 - }, - name: displayName, - inheritAttrs: false, - props: comProps, - slots: Object, - setup(_props, _ref) { - let { - slots, - expose, - attrs, - emit - } = _ref; - const props4 = _props; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - if (true) { - devWarning_default(picker !== "quarter", displayName || "DatePicker", `DatePicker.${displayName} is legacy usage. Please use DatePicker[picker='${picker}'] directly.`); - devWarning_default(!props4.dropdownClassName, displayName || "DatePicker", "`dropdownClassName` is deprecated. Please use `popupClassName` instead."); - devWarning_default(!(props4.monthCellContentRender || slots.monthCellContentRender), displayName || "DatePicker", '`monthCellContentRender` is deprecated. Please use `monthCellRender"` instead.'); - devWarning_default(!attrs.getCalendarContainer, displayName || "DatePicker", '`getCalendarContainer` is deprecated. Please use `getPopupContainer"` instead.'); - } - const { - prefixCls, - direction, - getPopupContainer, - size: size2, - rootPrefixCls, - disabled - } = useConfigInject_default("picker", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => compactSize.value || size2.value); - const [wrapSSR, hashId] = style_default18(prefixCls); - const pickerRef = ref(); - expose({ - focus: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const maybeToString = (date4) => { - return props4.valueFormat ? generateConfig2.toString(date4, props4.valueFormat) : date4; - }; - const onChange = (date4, dateString) => { - const value2 = maybeToString(date4); - emit("update:value", value2); - emit("change", value2, dateString); - formItemContext.onFieldChange(); - }; - const onOpenChange = (open2) => { - emit("update:open", open2); - emit("openChange", open2); - }; - const onFocus = (e3) => { - emit("focus", e3); - }; - const onBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const onPanelChange = (date4, mode) => { - const value2 = maybeToString(date4); - emit("panelChange", value2, mode); - }; - const onOk = (date4) => { - const value2 = maybeToString(date4); - emit("ok", value2); - }; - const [contextLocale] = useLocaleReceiver("DatePicker", en_US_default4); - const value = computed(() => { - if (props4.value) { - return props4.valueFormat ? generateConfig2.toDate(props4.value, props4.valueFormat) : props4.value; - } - return props4.value === "" ? void 0 : props4.value; - }); - const defaultValue = computed(() => { - if (props4.defaultValue) { - return props4.valueFormat ? generateConfig2.toDate(props4.defaultValue, props4.valueFormat) : props4.defaultValue; - } - return props4.defaultValue === "" ? void 0 : props4.defaultValue; - }); - const defaultPickerValue = computed(() => { - if (props4.defaultPickerValue) { - return props4.valueFormat ? generateConfig2.toDate(props4.defaultPickerValue, props4.valueFormat) : props4.defaultPickerValue; - } - return props4.defaultPickerValue === "" ? void 0 : props4.defaultPickerValue; - }); - return () => { - var _a2, _b, _c, _d, _e, _f; - const locale4 = _extends(_extends({}, contextLocale.value), props4.locale); - const p = _extends(_extends({}, props4), attrs); - const { - bordered = true, - placeholder, - suffixIcon = (_a2 = slots.suffixIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - showToday = true, - transitionName: transitionName2, - allowClear = true, - dateRender = slots.dateRender, - renderExtraFooter = slots.renderExtraFooter, - monthCellRender = slots.monthCellRender || props4.monthCellContentRender || slots.monthCellContentRender, - clearIcon = (_b = slots.clearIcon) === null || _b === void 0 ? void 0 : _b.call(slots), - id = formItemContext.id.value - } = p, restProps = __rest33(p, ["bordered", "placeholder", "suffixIcon", "showToday", "transitionName", "allowClear", "dateRender", "renderExtraFooter", "monthCellRender", "clearIcon", "id"]); - const showTime = p.showTime === "" ? true : p.showTime; - const { - format: format3 - } = p; - let additionalOverrideProps = {}; - if (picker) { - additionalOverrideProps.picker = picker; - } - const mergedPicker = picker || p.picker || "date"; - additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({ - format: format3, - picker: mergedPicker - }, typeof showTime === "object" ? showTime : {})) : {}), mergedPicker === "time" ? getTimeProps(_extends(_extends({ - format: format3 - }, restProps), { - picker: mergedPicker - })) : {}); - const pre = prefixCls.value; - const suffixNode = createVNode(Fragment, null, [suffixIcon || (picker === "time" ? createVNode(ClockCircleOutlined_default, null, null) : createVNode(CalendarOutlined_default, null, null)), formItemInputContext.hasFeedback && formItemInputContext.feedbackIcon]); - return wrapSSR(createVNode(vc_picker_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "monthCellRender": monthCellRender, - "dateRender": dateRender, - "renderExtraFooter": renderExtraFooter, - "ref": pickerRef, - "placeholder": getPlaceholder(locale4, mergedPicker, placeholder), - "suffixIcon": suffixNode, - "dropdownAlign": transPlacement2DropdownAlign(direction.value, props4.placement), - "clearIcon": clearIcon || createVNode(CloseCircleFilled_default, null, null), - "allowClear": allowClear, - "transitionName": transitionName2 || `${rootPrefixCls.value}-slide-up` - }, restProps), additionalOverrideProps), {}, { - "id": id, - "picker": mergedPicker, - "value": value.value, - "defaultValue": defaultValue.value, - "defaultPickerValue": defaultPickerValue.value, - "showToday": showToday, - "locale": locale4.lang, - "class": classNames_default({ - [`${pre}-${mergedSize.value}`]: mergedSize.value, - [`${pre}-borderless`]: !bordered - }, getStatusClassNames(pre, getMergedStatus(formItemInputContext.status, props4.status), formItemInputContext.hasFeedback), attrs.class, hashId.value, compactItemClassnames.value), - "disabled": disabled.value, - "prefixCls": pre, - "getPopupContainer": attrs.getCalendarContainer || getPopupContainer.value, - "generateConfig": generateConfig2, - "prevIcon": ((_c = slots.prevIcon) === null || _c === void 0 ? void 0 : _c.call(slots)) || createVNode("span", { - "class": `${pre}-prev-icon` - }, null), - "nextIcon": ((_d = slots.nextIcon) === null || _d === void 0 ? void 0 : _d.call(slots)) || createVNode("span", { - "class": `${pre}-next-icon` - }, null), - "superPrevIcon": ((_e = slots.superPrevIcon) === null || _e === void 0 ? void 0 : _e.call(slots)) || createVNode("span", { - "class": `${pre}-super-prev-icon` - }, null), - "superNextIcon": ((_f = slots.superNextIcon) === null || _f === void 0 ? void 0 : _f.call(slots)) || createVNode("span", { - "class": `${pre}-super-next-icon` - }, null), - "components": Components, - "direction": direction.value, - "dropdownClassName": classNames_default(hashId.value, props4.popupClassName, props4.dropdownClassName), - "onChange": onChange, - "onOpenChange": onOpenChange, - "onFocus": onFocus, - "onBlur": onBlur, - "onPanelChange": onPanelChange, - "onOk": onOk - }), null)); - }; - } - }); - } - const DatePicker2 = getPicker(void 0, "ADatePicker"); - const WeekPicker2 = getPicker("week", "AWeekPicker"); - const MonthPicker2 = getPicker("month", "AMonthPicker"); - const YearPicker2 = getPicker("year", "AYearPicker"); - const TimePicker3 = getPicker("time", "TimePicker"); - const QuarterPicker2 = getPicker("quarter", "AQuarterPicker"); - return { - DatePicker: DatePicker2, - WeekPicker: WeekPicker2, - MonthPicker: MonthPicker2, - YearPicker: YearPicker2, - TimePicker: TimePicker3, - QuarterPicker: QuarterPicker2 - }; -} - -// node_modules/ant-design-vue/es/date-picker/generatePicker/generateRangePicker.js -var __rest34 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function generateRangePicker(generateConfig2, extraProps) { - const RangePicker2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARangePicker", - inheritAttrs: false, - props: _extends(_extends(_extends({}, commonProps()), rangePickerProps()), extraProps), - slots: Object, - setup(_props, _ref) { - let { - expose, - slots, - attrs, - emit - } = _ref; - const props4 = _props; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - if (true) { - devWarning_default(!props4.dropdownClassName, "RangePicker", "`dropdownClassName` is deprecated. Please use `popupClassName` instead."); - devWarning_default(!attrs.getCalendarContainer, "DatePicker", '`getCalendarContainer` is deprecated. Please use `getPopupContainer"` instead.'); - } - const { - prefixCls, - direction, - getPopupContainer, - size: size2, - rootPrefixCls, - disabled - } = useConfigInject_default("picker", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => compactSize.value || size2.value); - const [wrapSSR, hashId] = style_default18(prefixCls); - const pickerRef = ref(); - expose({ - focus: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const maybeToStrings = (dates) => { - return props4.valueFormat ? generateConfig2.toString(dates, props4.valueFormat) : dates; - }; - const onChange = (dates, dateStrings) => { - const values2 = maybeToStrings(dates); - emit("update:value", values2); - emit("change", values2, dateStrings); - formItemContext.onFieldChange(); - }; - const onOpenChange = (open2) => { - emit("update:open", open2); - emit("openChange", open2); - }; - const onFocus = (e3) => { - emit("focus", e3); - }; - const onBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const onPanelChange = (dates, modes) => { - const values2 = maybeToStrings(dates); - emit("panelChange", values2, modes); - }; - const onOk = (dates) => { - const value2 = maybeToStrings(dates); - emit("ok", value2); - }; - const onCalendarChange = (dates, dateStrings, info) => { - const values2 = maybeToStrings(dates); - emit("calendarChange", values2, dateStrings, info); - }; - const [contextLocale] = useLocaleReceiver("DatePicker", en_US_default4); - const value = computed(() => { - if (props4.value) { - return props4.valueFormat ? generateConfig2.toDate(props4.value, props4.valueFormat) : props4.value; - } - return props4.value; - }); - const defaultValue = computed(() => { - if (props4.defaultValue) { - return props4.valueFormat ? generateConfig2.toDate(props4.defaultValue, props4.valueFormat) : props4.defaultValue; - } - return props4.defaultValue; - }); - const defaultPickerValue = computed(() => { - if (props4.defaultPickerValue) { - return props4.valueFormat ? generateConfig2.toDate(props4.defaultPickerValue, props4.valueFormat) : props4.defaultPickerValue; - } - return props4.defaultPickerValue; - }); - return () => { - var _a2, _b, _c, _d, _e, _f, _g; - const locale4 = _extends(_extends({}, contextLocale.value), props4.locale); - const p = _extends(_extends({}, props4), attrs); - const { - prefixCls: customizePrefixCls, - bordered = true, - placeholder, - suffixIcon = (_a2 = slots.suffixIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - picker = "date", - transitionName: transitionName2, - allowClear = true, - dateRender = slots.dateRender, - renderExtraFooter = slots.renderExtraFooter, - separator = (_b = slots.separator) === null || _b === void 0 ? void 0 : _b.call(slots), - clearIcon = (_c = slots.clearIcon) === null || _c === void 0 ? void 0 : _c.call(slots), - id = formItemContext.id.value - } = p, restProps = __rest34(p, ["prefixCls", "bordered", "placeholder", "suffixIcon", "picker", "transitionName", "allowClear", "dateRender", "renderExtraFooter", "separator", "clearIcon", "id"]); - delete restProps["onUpdate:value"]; - delete restProps["onUpdate:open"]; - const { - format: format3, - showTime - } = p; - let additionalOverrideProps = {}; - additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({ - format: format3, - picker - }, showTime)) : {}), picker === "time" ? getTimeProps(_extends(_extends({ - format: format3 - }, omit_default(restProps, ["disabledTime"])), { - picker - })) : {}); - const pre = prefixCls.value; - const suffixNode = createVNode(Fragment, null, [suffixIcon || (picker === "time" ? createVNode(ClockCircleOutlined_default, null, null) : createVNode(CalendarOutlined_default, null, null)), formItemInputContext.hasFeedback && formItemInputContext.feedbackIcon]); - return wrapSSR(createVNode(RangePicker_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "dateRender": dateRender, - "renderExtraFooter": renderExtraFooter, - "separator": separator || createVNode("span", { - "aria-label": "to", - "class": `${pre}-separator` - }, [createVNode(SwapRightOutlined_default, null, null)]), - "ref": pickerRef, - "dropdownAlign": transPlacement2DropdownAlign(direction.value, props4.placement), - "placeholder": getRangePlaceholder(locale4, picker, placeholder), - "suffixIcon": suffixNode, - "clearIcon": clearIcon || createVNode(CloseCircleFilled_default, null, null), - "allowClear": allowClear, - "transitionName": transitionName2 || `${rootPrefixCls.value}-slide-up` - }, restProps), additionalOverrideProps), {}, { - "disabled": disabled.value, - "id": id, - "value": value.value, - "defaultValue": defaultValue.value, - "defaultPickerValue": defaultPickerValue.value, - "picker": picker, - "class": classNames_default({ - [`${pre}-${mergedSize.value}`]: mergedSize.value, - [`${pre}-borderless`]: !bordered - }, getStatusClassNames(pre, getMergedStatus(formItemInputContext.status, props4.status), formItemInputContext.hasFeedback), attrs.class, hashId.value, compactItemClassnames.value), - "locale": locale4.lang, - "prefixCls": pre, - "getPopupContainer": attrs.getCalendarContainer || getPopupContainer.value, - "generateConfig": generateConfig2, - "prevIcon": ((_d = slots.prevIcon) === null || _d === void 0 ? void 0 : _d.call(slots)) || createVNode("span", { - "class": `${pre}-prev-icon` - }, null), - "nextIcon": ((_e = slots.nextIcon) === null || _e === void 0 ? void 0 : _e.call(slots)) || createVNode("span", { - "class": `${pre}-next-icon` - }, null), - "superPrevIcon": ((_f = slots.superPrevIcon) === null || _f === void 0 ? void 0 : _f.call(slots)) || createVNode("span", { - "class": `${pre}-super-prev-icon` - }, null), - "superNextIcon": ((_g = slots.superNextIcon) === null || _g === void 0 ? void 0 : _g.call(slots)) || createVNode("span", { - "class": `${pre}-super-next-icon` - }, null), - "components": Components, - "direction": direction.value, - "dropdownClassName": classNames_default(hashId.value, props4.popupClassName, props4.dropdownClassName), - "onChange": onChange, - "onOpenChange": onOpenChange, - "onFocus": onFocus, - "onBlur": onBlur, - "onPanelChange": onPanelChange, - "onOk": onOk, - "onCalendarChange": onCalendarChange - }), null)); - }; - } - }); - return RangePicker2; -} - -// node_modules/ant-design-vue/es/date-picker/generatePicker/index.js -var Components = { - button: PickerButton_default, - rangeItem: PickerTag -}; -function toArray6(list) { - if (!list) { - return []; - } - return Array.isArray(list) ? list : [list]; -} -function getTimeProps(props4) { - const { - format: format3, - picker, - showHour, - showMinute, - showSecond, - use12Hours - } = props4; - const firstFormat = toArray6(format3)[0]; - const showTimeObj = _extends({}, props4); - if (firstFormat && typeof firstFormat === "string") { - if (!firstFormat.includes("s") && showSecond === void 0) { - showTimeObj.showSecond = false; - } - if (!firstFormat.includes("m") && showMinute === void 0) { - showTimeObj.showMinute = false; - } - if (!firstFormat.includes("H") && !firstFormat.includes("h") && showHour === void 0) { - showTimeObj.showHour = false; - } - if ((firstFormat.includes("a") || firstFormat.includes("A")) && use12Hours === void 0) { - showTimeObj.use12Hours = true; - } - } - if (picker === "time") { - return showTimeObj; - } - if (typeof firstFormat === "function") { - delete showTimeObj.format; - } - return { - showTime: showTimeObj - }; -} -function generatePicker(generateConfig2, extraProps) { - const { - DatePicker: DatePicker2, - WeekPicker: WeekPicker2, - MonthPicker: MonthPicker2, - YearPicker: YearPicker2, - TimePicker: TimePicker3, - QuarterPicker: QuarterPicker2 - } = generateSinglePicker(generateConfig2, extraProps); - const RangePicker2 = generateRangePicker(generateConfig2, extraProps); - return { - DatePicker: DatePicker2, - WeekPicker: WeekPicker2, - MonthPicker: MonthPicker2, - YearPicker: YearPicker2, - TimePicker: TimePicker3, - QuarterPicker: QuarterPicker2, - RangePicker: RangePicker2 - }; -} -var generatePicker_default = generatePicker; - -// node_modules/ant-design-vue/es/date-picker/dayjs.js -var { - DatePicker, - WeekPicker, - MonthPicker, - YearPicker, - TimePicker, - QuarterPicker, - RangePicker -} = generatePicker_default(dayjs_default); -var dayjs_default3 = _extends(DatePicker, { - WeekPicker, - MonthPicker, - YearPicker, - RangePicker, - TimePicker, - QuarterPicker, - install: (app) => { - app.component(DatePicker.name, DatePicker); - app.component(RangePicker.name, RangePicker); - app.component(MonthPicker.name, MonthPicker); - app.component(WeekPicker.name, WeekPicker); - app.component(QuarterPicker.name, QuarterPicker); - return app; - } -}); - -// node_modules/ant-design-vue/es/date-picker/index.js -var date_picker_default = dayjs_default3; - -// node_modules/ant-design-vue/es/descriptions/Cell.js -function notEmpty(val) { - return val !== void 0 && val !== null; -} -var Cell = (props4) => { - const { - itemPrefixCls, - component, - span, - labelStyle, - contentStyle, - bordered, - label, - content, - colon - } = props4; - const Component = component; - if (bordered) { - return createVNode(Component, { - "class": [{ - [`${itemPrefixCls}-item-label`]: notEmpty(label), - [`${itemPrefixCls}-item-content`]: notEmpty(content) - }], - "colSpan": span - }, { - default: () => [notEmpty(label) && createVNode("span", { - "style": labelStyle - }, [label]), notEmpty(content) && createVNode("span", { - "style": contentStyle - }, [content])] - }); - } - return createVNode(Component, { - "class": [`${itemPrefixCls}-item`], - "colSpan": span - }, { - default: () => [createVNode("div", { - "class": `${itemPrefixCls}-item-container` - }, [(label || label === 0) && createVNode("span", { - "class": [`${itemPrefixCls}-item-label`, { - [`${itemPrefixCls}-item-no-colon`]: !colon - }], - "style": labelStyle - }, [label]), (content || content === 0) && createVNode("span", { - "class": `${itemPrefixCls}-item-content`, - "style": contentStyle - }, [content])])] - }); -}; -var Cell_default = Cell; - -// node_modules/ant-design-vue/es/descriptions/Row.js -var Row = (props4) => { - const renderCells = (items, _ref, _ref2) => { - let { - colon, - prefixCls: prefixCls2, - bordered: bordered2 - } = _ref; - let { - component, - type: type4, - showLabel, - showContent, - labelStyle: rootLabelStyle, - contentStyle: rootContentStyle - } = _ref2; - return items.map((item, index4) => { - var _a2, _b; - const itemProps = item.props || {}; - const { - prefixCls: itemPrefixCls = prefixCls2, - span = 1, - labelStyle: labelStyle2 = itemProps["label-style"], - contentStyle: contentStyle2 = itemProps["content-style"], - label = (_b = (_a2 = item.children) === null || _a2 === void 0 ? void 0 : _a2.label) === null || _b === void 0 ? void 0 : _b.call(_a2) - } = itemProps; - const children = getSlot(item); - const className = getClass(item); - const style = getStyle(item); - const { - key: key2 - } = item; - if (typeof component === "string") { - return createVNode(Cell_default, { - "key": `${type4}-${String(key2) || index4}`, - "class": className, - "style": style, - "labelStyle": _extends(_extends({}, rootLabelStyle), labelStyle2), - "contentStyle": _extends(_extends({}, rootContentStyle), contentStyle2), - "span": span, - "colon": colon, - "component": component, - "itemPrefixCls": itemPrefixCls, - "bordered": bordered2, - "label": showLabel ? label : null, - "content": showContent ? children : null - }, null); - } - return [createVNode(Cell_default, { - "key": `label-${String(key2) || index4}`, - "class": className, - "style": _extends(_extends(_extends({}, rootLabelStyle), style), labelStyle2), - "span": 1, - "colon": colon, - "component": component[0], - "itemPrefixCls": itemPrefixCls, - "bordered": bordered2, - "label": label - }, null), createVNode(Cell_default, { - "key": `content-${String(key2) || index4}`, - "class": className, - "style": _extends(_extends(_extends({}, rootContentStyle), style), contentStyle2), - "span": span * 2 - 1, - "component": component[1], - "itemPrefixCls": itemPrefixCls, - "bordered": bordered2, - "content": children - }, null)]; - }); - }; - const { - prefixCls, - vertical, - row, - index: index3, - bordered - } = props4; - const { - labelStyle, - contentStyle - } = inject(descriptionsContext, { - labelStyle: ref({}), - contentStyle: ref({}) - }); - if (vertical) { - return createVNode(Fragment, null, [createVNode("tr", { - "key": `label-${index3}`, - "class": `${prefixCls}-row` - }, [renderCells(row, props4, { - component: "th", - type: "label", - showLabel: true, - labelStyle: labelStyle.value, - contentStyle: contentStyle.value - })]), createVNode("tr", { - "key": `content-${index3}`, - "class": `${prefixCls}-row` - }, [renderCells(row, props4, { - component: "td", - type: "content", - showContent: true, - labelStyle: labelStyle.value, - contentStyle: contentStyle.value - })])]); - } - return createVNode("tr", { - "key": index3, - "class": `${prefixCls}-row` - }, [renderCells(row, props4, { - component: bordered ? ["th", "td"] : "td", - type: "item", - showLabel: true, - showContent: true, - labelStyle: labelStyle.value, - contentStyle: contentStyle.value - })]); -}; -var Row_default2 = Row; - -// node_modules/ant-design-vue/es/descriptions/style/index.js -var genBorderedStyle = (token2) => { - const { - componentCls, - descriptionsSmallPadding, - descriptionsDefaultPadding, - descriptionsMiddlePadding, - descriptionsBg - } = token2; - return { - [`&${componentCls}-bordered`]: { - [`${componentCls}-view`]: { - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - "> table": { - tableLayout: "auto", - borderCollapse: "collapse" - } - }, - [`${componentCls}-item-label, ${componentCls}-item-content`]: { - padding: descriptionsDefaultPadding, - borderInlineEnd: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - "&:last-child": { - borderInlineEnd: "none" - } - }, - [`${componentCls}-item-label`]: { - backgroundColor: descriptionsBg, - "&::after": { - display: "none" - } - }, - [`${componentCls}-row`]: { - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - "&:last-child": { - borderBottom: "none" - } - }, - [`&${componentCls}-middle`]: { - [`${componentCls}-item-label, ${componentCls}-item-content`]: { - padding: descriptionsMiddlePadding - } - }, - [`&${componentCls}-small`]: { - [`${componentCls}-item-label, ${componentCls}-item-content`]: { - padding: descriptionsSmallPadding - } - } - } - }; -}; -var genDescriptionStyles = (token2) => { - const { - componentCls, - descriptionsExtraColor, - descriptionItemPaddingBottom, - descriptionsItemLabelColonMarginRight, - descriptionsItemLabelColonMarginLeft, - descriptionsTitleMarginBottom - } = token2; - return { - [componentCls]: _extends(_extends(_extends({}, resetComponent(token2)), genBorderedStyle(token2)), { - [`&-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-header`]: { - display: "flex", - alignItems: "center", - marginBottom: descriptionsTitleMarginBottom - }, - [`${componentCls}-title`]: _extends(_extends({}, textEllipsis), { - flex: "auto", - color: token2.colorText, - fontWeight: token2.fontWeightStrong, - fontSize: token2.fontSizeLG, - lineHeight: token2.lineHeightLG - }), - [`${componentCls}-extra`]: { - marginInlineStart: "auto", - color: descriptionsExtraColor, - fontSize: token2.fontSize - }, - [`${componentCls}-view`]: { - width: "100%", - borderRadius: token2.borderRadiusLG, - table: { - width: "100%", - tableLayout: "fixed" - } - }, - [`${componentCls}-row`]: { - "> th, > td": { - paddingBottom: descriptionItemPaddingBottom - }, - "&:last-child": { - borderBottom: "none" - } - }, - [`${componentCls}-item-label`]: { - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - textAlign: `start`, - "&::after": { - content: '":"', - position: "relative", - top: -0.5, - marginInline: `${descriptionsItemLabelColonMarginLeft}px ${descriptionsItemLabelColonMarginRight}px` - }, - [`&${componentCls}-item-no-colon::after`]: { - content: '""' - } - }, - [`${componentCls}-item-no-label`]: { - "&::after": { - margin: 0, - content: '""' - } - }, - [`${componentCls}-item-content`]: { - display: "table-cell", - flex: 1, - color: token2.colorText, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - wordBreak: "break-word", - overflowWrap: "break-word" - }, - [`${componentCls}-item`]: { - paddingBottom: 0, - verticalAlign: "top", - "&-container": { - display: "flex", - [`${componentCls}-item-label`]: { - display: "inline-flex", - alignItems: "baseline" - }, - [`${componentCls}-item-content`]: { - display: "inline-flex", - alignItems: "baseline" - } - } - }, - "&-middle": { - [`${componentCls}-row`]: { - "> th, > td": { - paddingBottom: token2.paddingSM - } - } - }, - "&-small": { - [`${componentCls}-row`]: { - "> th, > td": { - paddingBottom: token2.paddingXS - } - } - } - }) - }; -}; -var style_default33 = genComponentStyleHook("Descriptions", (token2) => { - const descriptionsBg = token2.colorFillAlter; - const descriptionsTitleMarginBottom = token2.fontSizeSM * token2.lineHeightSM; - const descriptionsExtraColor = token2.colorText; - const descriptionsSmallPadding = `${token2.paddingXS}px ${token2.padding}px`; - const descriptionsDefaultPadding = `${token2.padding}px ${token2.paddingLG}px`; - const descriptionsMiddlePadding = `${token2.paddingSM}px ${token2.paddingLG}px`; - const descriptionItemPaddingBottom = token2.padding; - const descriptionsItemLabelColonMarginRight = token2.marginXS; - const descriptionsItemLabelColonMarginLeft = token2.marginXXS / 2; - const descriptionToken = merge(token2, { - descriptionsBg, - descriptionsTitleMarginBottom, - descriptionsExtraColor, - descriptionItemPaddingBottom, - descriptionsSmallPadding, - descriptionsDefaultPadding, - descriptionsMiddlePadding, - descriptionsItemLabelColonMarginRight, - descriptionsItemLabelColonMarginLeft - }); - return [genDescriptionStyles(descriptionToken)]; -}); - -// node_modules/ant-design-vue/es/descriptions/index.js -var DescriptionsItemProps = { - prefixCls: String, - label: vue_types_default.any, - span: Number -}; -var descriptionsItemProp = () => ({ - prefixCls: String, - label: vue_types_default.any, - labelStyle: { - type: Object, - default: void 0 - }, - contentStyle: { - type: Object, - default: void 0 - }, - span: { - type: Number, - default: 1 - } -}); -var DescriptionsItem = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADescriptionsItem", - props: descriptionsItemProp(), - setup(_2, _ref) { - let { - slots - } = _ref; - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var DEFAULT_COLUMN_MAP = { - xxxl: 3, - xxl: 3, - xl: 3, - lg: 3, - md: 3, - sm: 2, - xs: 1 -}; -function getColumn(column2, screens) { - if (typeof column2 === "number") { - return column2; - } - if (typeof column2 === "object") { - for (let i3 = 0; i3 < responsiveArray.length; i3++) { - const breakpoint = responsiveArray[i3]; - if (screens[breakpoint] && column2[breakpoint] !== void 0) { - return column2[breakpoint] || DEFAULT_COLUMN_MAP[breakpoint]; - } - } - } - return 3; -} -function getFilledItem(node2, rowRestCol, span) { - let clone3 = node2; - if (span === void 0 || span > rowRestCol) { - clone3 = cloneElement(node2, { - span: rowRestCol - }); - warning_default2(span === void 0, "Descriptions", "Sum of column `span` in a line not match `column` of Descriptions."); - } - return clone3; -} -function getRows(children, column2) { - const childNodes = flattenChildren(children); - const rows = []; - let tmpRow = []; - let rowRestCol = column2; - childNodes.forEach((node2, index3) => { - var _a2; - const span = (_a2 = node2.props) === null || _a2 === void 0 ? void 0 : _a2.span; - const mergedSpan = span || 1; - if (index3 === childNodes.length - 1) { - tmpRow.push(getFilledItem(node2, rowRestCol, span)); - rows.push(tmpRow); - return; - } - if (mergedSpan < rowRestCol) { - rowRestCol -= mergedSpan; - tmpRow.push(node2); - } else { - tmpRow.push(getFilledItem(node2, rowRestCol, mergedSpan)); - rows.push(tmpRow); - rowRestCol = column2; - tmpRow = []; - } - }); - return rows; -} -var descriptionsProps = () => ({ - prefixCls: String, - bordered: { - type: Boolean, - default: void 0 - }, - size: { - type: String, - default: "default" - }, - title: vue_types_default.any, - extra: vue_types_default.any, - column: { - type: [Number, Object], - default: () => DEFAULT_COLUMN_MAP - }, - layout: String, - colon: { - type: Boolean, - default: void 0 - }, - labelStyle: { - type: Object, - default: void 0 - }, - contentStyle: { - type: Object, - default: void 0 - } -}); -var descriptionsContext = Symbol("descriptionsContext"); -var Descriptions = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADescriptions", - inheritAttrs: false, - props: descriptionsProps(), - slots: Object, - Item: DescriptionsItem, - setup(props4, _ref2) { - let { - slots, - attrs - } = _ref2; - const { - prefixCls, - direction - } = useConfigInject_default("descriptions", props4); - let token2; - const screens = ref({}); - const [wrapSSR, hashId] = style_default33(prefixCls); - const responsiveObserve = useResponsiveObserver(); - onBeforeMount(() => { - token2 = responsiveObserve.value.subscribe((screen) => { - if (typeof props4.column !== "object") { - return; - } - screens.value = screen; - }); - }); - onBeforeUnmount(() => { - responsiveObserve.value.unsubscribe(token2); - }); - provide(descriptionsContext, { - labelStyle: toRef(props4, "labelStyle"), - contentStyle: toRef(props4, "contentStyle") - }); - const mergeColumn = computed(() => getColumn(props4.column, screens.value)); - return () => { - var _a2, _b, _c; - const { - size: size2, - bordered = false, - layout = "horizontal", - colon = true, - title = (_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - extra = (_b = slots.extra) === null || _b === void 0 ? void 0 : _b.call(slots) - } = props4; - const children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots); - const rows = getRows(children, mergeColumn.value); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [prefixCls.value, { - [`${prefixCls.value}-${size2}`]: size2 !== "default", - [`${prefixCls.value}-bordered`]: !!bordered, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value] - }), [(title || extra) && createVNode("div", { - "class": `${prefixCls.value}-header` - }, [title && createVNode("div", { - "class": `${prefixCls.value}-title` - }, [title]), extra && createVNode("div", { - "class": `${prefixCls.value}-extra` - }, [extra])]), createVNode("div", { - "class": `${prefixCls.value}-view` - }, [createVNode("table", null, [createVNode("tbody", null, [rows.map((row, index3) => createVNode(Row_default2, { - "key": index3, - "index": index3, - "colon": colon, - "prefixCls": prefixCls.value, - "vertical": layout === "vertical", - "bordered": bordered, - "row": row - }, null))])])])])); - }; - } -}); -Descriptions.install = function(app) { - app.component(Descriptions.name, Descriptions); - app.component(Descriptions.Item.name, Descriptions.Item); - return app; -}; -var descriptions_default = Descriptions; - -// node_modules/ant-design-vue/es/divider/style/index.js -var genSharedDividerStyle = (token2) => { - const { - componentCls, - sizePaddingEdgeHorizontal, - colorSplit, - lineWidth - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - borderBlockStart: `${lineWidth}px solid ${colorSplit}`, - // vertical - "&-vertical": { - position: "relative", - top: "-0.06em", - display: "inline-block", - height: "0.9em", - margin: `0 ${token2.dividerVerticalGutterMargin}px`, - verticalAlign: "middle", - borderTop: 0, - borderInlineStart: `${lineWidth}px solid ${colorSplit}` - }, - "&-horizontal": { - display: "flex", - clear: "both", - width: "100%", - minWidth: "100%", - margin: `${token2.dividerHorizontalGutterMargin}px 0` - }, - [`&-horizontal${componentCls}-with-text`]: { - display: "flex", - alignItems: "center", - margin: `${token2.dividerHorizontalWithTextGutterMargin}px 0`, - color: token2.colorTextHeading, - fontWeight: 500, - fontSize: token2.fontSizeLG, - whiteSpace: "nowrap", - textAlign: "center", - borderBlockStart: `0 ${colorSplit}`, - "&::before, &::after": { - position: "relative", - width: "50%", - borderBlockStart: `${lineWidth}px solid transparent`, - // Chrome not accept `inherit` in `border-top` - borderBlockStartColor: "inherit", - borderBlockEnd: 0, - transform: "translateY(50%)", - content: "''" - } - }, - [`&-horizontal${componentCls}-with-text-left`]: { - "&::before": { - width: "5%" - }, - "&::after": { - width: "95%" - } - }, - [`&-horizontal${componentCls}-with-text-right`]: { - "&::before": { - width: "95%" - }, - "&::after": { - width: "5%" - } - }, - [`${componentCls}-inner-text`]: { - display: "inline-block", - padding: "0 1em" - }, - "&-dashed": { - background: "none", - borderColor: colorSplit, - borderStyle: "dashed", - borderWidth: `${lineWidth}px 0 0` - }, - [`&-horizontal${componentCls}-with-text${componentCls}-dashed`]: { - "&::before, &::after": { - borderStyle: "dashed none none" - } - }, - [`&-vertical${componentCls}-dashed`]: { - borderInlineStartWidth: lineWidth, - borderInlineEnd: 0, - borderBlockStart: 0, - borderBlockEnd: 0 - }, - [`&-plain${componentCls}-with-text`]: { - color: token2.colorText, - fontWeight: "normal", - fontSize: token2.fontSize - }, - [`&-horizontal${componentCls}-with-text-left${componentCls}-no-default-orientation-margin-left`]: { - "&::before": { - width: 0 - }, - "&::after": { - width: "100%" - }, - [`${componentCls}-inner-text`]: { - paddingInlineStart: sizePaddingEdgeHorizontal - } - }, - [`&-horizontal${componentCls}-with-text-right${componentCls}-no-default-orientation-margin-right`]: { - "&::before": { - width: "100%" - }, - "&::after": { - width: 0 - }, - [`${componentCls}-inner-text`]: { - paddingInlineEnd: sizePaddingEdgeHorizontal - } - } - }) - }; -}; -var style_default34 = genComponentStyleHook("Divider", (token2) => { - const dividerToken = merge(token2, { - dividerVerticalGutterMargin: token2.marginXS, - dividerHorizontalWithTextGutterMargin: token2.margin, - dividerHorizontalGutterMargin: token2.marginLG - }); - return [genSharedDividerStyle(dividerToken)]; -}, { - sizePaddingEdgeHorizontal: 0 -}); - -// node_modules/ant-design-vue/es/divider/index.js -var dividerProps = () => ({ - prefixCls: String, - type: { - type: String, - default: "horizontal" - }, - dashed: { - type: Boolean, - default: false - }, - orientation: { - type: String, - default: "center" - }, - plain: { - type: Boolean, - default: false - }, - orientationMargin: [String, Number] -}); -var Divider = defineComponent({ - name: "ADivider", - inheritAttrs: false, - compatConfig: { - MODE: 3 - }, - props: dividerProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls: prefixClsRef, - direction - } = useConfigInject_default("divider", props4); - const [wrapSSR, hashId] = style_default34(prefixClsRef); - const hasCustomMarginLeft = computed(() => props4.orientation === "left" && props4.orientationMargin != null); - const hasCustomMarginRight = computed(() => props4.orientation === "right" && props4.orientationMargin != null); - const classString = computed(() => { - const { - type: type4, - dashed, - plain - } = props4; - const prefixCls = prefixClsRef.value; - return { - [prefixCls]: true, - [hashId.value]: !!hashId.value, - [`${prefixCls}-${type4}`]: true, - [`${prefixCls}-dashed`]: !!dashed, - [`${prefixCls}-plain`]: !!plain, - [`${prefixCls}-rtl`]: direction.value === "rtl", - [`${prefixCls}-no-default-orientation-margin-left`]: hasCustomMarginLeft.value, - [`${prefixCls}-no-default-orientation-margin-right`]: hasCustomMarginRight.value - }; - }); - const innerStyle = computed(() => { - const marginValue = typeof props4.orientationMargin === "number" ? `${props4.orientationMargin}px` : props4.orientationMargin; - return _extends(_extends({}, hasCustomMarginLeft.value && { - marginLeft: marginValue - }), hasCustomMarginRight.value && { - marginRight: marginValue - }); - }); - const orientationPrefix = computed(() => props4.orientation.length > 0 ? "-" + props4.orientation : props4.orientation); - return () => { - var _a2; - const children = flattenChildren((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [classString.value, children.length ? `${prefixClsRef.value}-with-text ${prefixClsRef.value}-with-text${orientationPrefix.value}` : "", attrs.class], - "role": "separator" - }), [children.length ? createVNode("span", { - "class": `${prefixClsRef.value}-inner-text`, - "style": innerStyle.value - }, [children]) : null])); - }; - } -}); -var divider_default = withInstall(Divider); - -// node_modules/ant-design-vue/es/dropdown/index.js -dropdown_default2.Button = dropdown_button_default; -dropdown_default2.install = function(app) { - app.component(dropdown_default2.name, dropdown_default2); - app.component(dropdown_button_default.name, dropdown_button_default); - return app; -}; -var dropdown_default3 = dropdown_default2; - -// node_modules/ant-design-vue/es/vc-drawer/src/IDrawerPropTypes.js -var props3 = () => ({ - prefixCls: String, - width: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number]), - height: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number]), - style: { - type: Object, - default: void 0 - }, - class: String, - rootClassName: String, - rootStyle: objectType(), - placement: { - type: String - }, - wrapperClassName: String, - level: { - type: [String, Array] - }, - levelMove: { - type: [Number, Function, Array] - }, - duration: String, - ease: String, - showMask: { - type: Boolean, - default: void 0 - }, - maskClosable: { - type: Boolean, - default: void 0 - }, - maskStyle: { - type: Object, - default: void 0 - }, - afterVisibleChange: Function, - keyboard: { - type: Boolean, - default: void 0 - }, - contentWrapperStyle: arrayType(), - autofocus: { - type: Boolean, - default: void 0 - }, - open: { - type: Boolean, - default: void 0 - }, - // Motion - motion: functionType(), - maskMotion: objectType() -}); -var drawerProps = () => _extends(_extends({}, props3()), { - forceRender: { - type: Boolean, - default: void 0 - }, - getContainer: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.func, vue_types_default.object, vue_types_default.looseBool]) -}); -var drawerChildProps = () => _extends(_extends({}, props3()), { - getContainer: Function, - getOpenCount: Function, - scrollLocker: vue_types_default.any, - inline: Boolean -}); - -// node_modules/ant-design-vue/es/vc-drawer/src/utils.js -function dataToArray(vars) { - if (Array.isArray(vars)) { - return vars; - } - return [vars]; -} -var transitionEndObject = { - transition: "transitionend", - WebkitTransition: "webkitTransitionEnd", - MozTransition: "transitionend", - OTransition: "oTransitionEnd otransitionend" -}; -var transitionStr = Object.keys(transitionEndObject).filter((key2) => { - if (typeof document === "undefined") { - return false; - } - const html = document.getElementsByTagName("html")[0]; - return key2 in (html ? html.style : {}); -})[0]; -var transitionEndFun = transitionEndObject[transitionStr]; -var windowIsUndefined = !(typeof window !== "undefined" && window.document && window.document.createElement); - -// node_modules/ant-design-vue/es/vc-drawer/src/DrawerChild.js -var __rest35 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var currentDrawer = {}; -var DrawerChild = defineComponent({ - compatConfig: { - MODE: 3 - }, - inheritAttrs: false, - props: drawerChildProps(), - emits: ["close", "handleClick", "change"], - setup(props4, _ref) { - let { - emit, - slots - } = _ref; - const contentWrapper = shallowRef(); - const dom = shallowRef(); - const maskDom = shallowRef(); - const handlerDom = shallowRef(); - const contentDom = shallowRef(); - let levelDom = []; - const drawerId = `drawer_id_${Number((Date.now() + Math.random()).toString().replace(".", Math.round(Math.random() * 9).toString())).toString(16)}`; - onMounted(() => { - nextTick(() => { - var _a2; - const { - open: open2, - getContainer: getContainer3, - showMask, - autofocus - } = props4; - const container = getContainer3 === null || getContainer3 === void 0 ? void 0 : getContainer3(); - getLevelDom(props4); - if (open2) { - if (container && container.parentNode === document.body) { - currentDrawer[drawerId] = open2; - } - nextTick(() => { - if (autofocus) { - domFocus(); - } - }); - if (showMask) { - (_a2 = props4.scrollLocker) === null || _a2 === void 0 ? void 0 : _a2.lock(); - } - } - }); - }); - watch(() => props4.level, () => { - getLevelDom(props4); - }, { - flush: "post" - }); - watch(() => props4.open, () => { - const { - open: open2, - getContainer: getContainer3, - scrollLocker, - showMask, - autofocus - } = props4; - const container = getContainer3 === null || getContainer3 === void 0 ? void 0 : getContainer3(); - if (container && container.parentNode === document.body) { - currentDrawer[drawerId] = !!open2; - } - if (open2) { - if (autofocus) { - domFocus(); - } - if (showMask) { - scrollLocker === null || scrollLocker === void 0 ? void 0 : scrollLocker.lock(); - } - } else { - scrollLocker === null || scrollLocker === void 0 ? void 0 : scrollLocker.unLock(); - } - }, { - flush: "post" - }); - onUnmounted(() => { - var _a2; - const { - open: open2 - } = props4; - delete currentDrawer[drawerId]; - if (open2) { - document.body.style.touchAction = ""; - } - (_a2 = props4.scrollLocker) === null || _a2 === void 0 ? void 0 : _a2.unLock(); - }); - watch(() => props4.placement, (val) => { - if (val) { - contentDom.value = null; - } - }); - const domFocus = () => { - var _a2, _b; - (_b = (_a2 = dom.value) === null || _a2 === void 0 ? void 0 : _a2.focus) === null || _b === void 0 ? void 0 : _b.call(_a2); - }; - const onClose = (e3) => { - emit("close", e3); - }; - const onKeyDown2 = (e3) => { - if (e3.keyCode === KeyCode_default.ESC) { - e3.stopPropagation(); - onClose(e3); - } - }; - const onAfterVisibleChange = () => { - const { - open: open2, - afterVisibleChange - } = props4; - if (afterVisibleChange) { - afterVisibleChange(!!open2); - } - }; - const getLevelDom = (_ref2) => { - let { - level, - getContainer: getContainer3 - } = _ref2; - if (windowIsUndefined) { - return; - } - const container = getContainer3 === null || getContainer3 === void 0 ? void 0 : getContainer3(); - const parent2 = container ? container.parentNode : null; - levelDom = []; - if (level === "all") { - const children = parent2 ? Array.prototype.slice.call(parent2.children) : []; - children.forEach((child) => { - if (child.nodeName !== "SCRIPT" && child.nodeName !== "STYLE" && child.nodeName !== "LINK" && child !== container) { - levelDom.push(child); - } - }); - } else if (level) { - dataToArray(level).forEach((key2) => { - document.querySelectorAll(key2).forEach((item) => { - levelDom.push(item); - }); - }); - } - }; - const onHandleClick = (e3) => { - emit("handleClick", e3); - }; - const canOpen = shallowRef(false); - watch(dom, () => { - nextTick(() => { - canOpen.value = true; - }); - }); - return () => { - var _a2, _b; - const { - width, - height, - open: $open, - prefixCls, - placement, - level, - levelMove, - ease, - duration, - getContainer: getContainer3, - onChange, - afterVisibleChange, - showMask, - maskClosable, - maskStyle, - keyboard, - getOpenCount, - scrollLocker, - contentWrapperStyle, - style, - class: className, - rootClassName, - rootStyle, - maskMotion, - motion, - inline - } = props4, otherProps = __rest35(props4, ["width", "height", "open", "prefixCls", "placement", "level", "levelMove", "ease", "duration", "getContainer", "onChange", "afterVisibleChange", "showMask", "maskClosable", "maskStyle", "keyboard", "getOpenCount", "scrollLocker", "contentWrapperStyle", "style", "class", "rootClassName", "rootStyle", "maskMotion", "motion", "inline"]); - const open2 = $open && canOpen.value; - const wrapperClassName = classNames_default(prefixCls, { - [`${prefixCls}-${placement}`]: true, - [`${prefixCls}-open`]: open2, - [`${prefixCls}-inline`]: inline, - "no-mask": !showMask, - [rootClassName]: true - }); - const motionProps = typeof motion === "function" ? motion(placement) : motion; - return createVNode("div", _objectSpread2(_objectSpread2({}, omit_default(otherProps, ["autofocus"])), {}, { - "tabindex": -1, - "class": wrapperClassName, - "style": rootStyle, - "ref": dom, - "onKeydown": open2 && keyboard ? onKeyDown2 : void 0 - }), [createVNode(Transition, maskMotion, { - default: () => [showMask && withDirectives(createVNode("div", { - "class": `${prefixCls}-mask`, - "onClick": maskClosable ? onClose : void 0, - "style": maskStyle, - "ref": maskDom - }, null), [[vShow, open2]])] - }), createVNode(Transition, _objectSpread2(_objectSpread2({}, motionProps), {}, { - "onAfterEnter": onAfterVisibleChange, - "onAfterLeave": onAfterVisibleChange - }), { - default: () => [withDirectives(createVNode("div", { - "class": `${prefixCls}-content-wrapper`, - "style": [contentWrapperStyle], - "ref": contentWrapper - }, [createVNode("div", { - "class": [`${prefixCls}-content`, className], - "style": style, - "ref": contentDom - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]), slots.handler ? createVNode("div", { - "onClick": onHandleClick, - "ref": handlerDom - }, [(_b = slots.handler) === null || _b === void 0 ? void 0 : _b.call(slots)]) : null]), [[vShow, open2]])] - })]); - }; - } -}); -var DrawerChild_default = DrawerChild; - -// node_modules/ant-design-vue/es/vc-drawer/src/DrawerWrapper.js -var __rest36 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var DrawerWrapper = defineComponent({ - compatConfig: { - MODE: 3 - }, - inheritAttrs: false, - props: initDefaultProps_default(drawerProps(), { - prefixCls: "drawer", - placement: "left", - getContainer: "body", - level: "all", - duration: ".3s", - ease: "cubic-bezier(0.78, 0.14, 0.15, 0.86)", - afterVisibleChange: () => { - }, - showMask: true, - maskClosable: true, - maskStyle: {}, - wrapperClassName: "", - keyboard: true, - forceRender: false, - autofocus: true - }), - emits: ["handleClick", "close"], - setup(props4, _ref) { - let { - emit, - slots - } = _ref; - const dom = ref(null); - const onHandleClick = (e3) => { - emit("handleClick", e3); - }; - const onClose = (e3) => { - emit("close", e3); - }; - return () => { - const { - getContainer: getContainer3, - wrapperClassName, - rootClassName, - rootStyle, - forceRender - } = props4, otherProps = __rest36(props4, ["getContainer", "wrapperClassName", "rootClassName", "rootStyle", "forceRender"]); - let portal = null; - if (!getContainer3) { - return createVNode(DrawerChild_default, _objectSpread2(_objectSpread2({}, otherProps), {}, { - "rootClassName": rootClassName, - "rootStyle": rootStyle, - "open": props4.open, - "onClose": onClose, - "onHandleClick": onHandleClick, - "inline": true - }), slots); - } - const $forceRender = !!slots.handler || forceRender; - if ($forceRender || props4.open || dom.value) { - portal = createVNode(PortalWrapper_default, { - "autoLock": true, - "visible": props4.open, - "forceRender": $forceRender, - "getContainer": getContainer3, - "wrapperClassName": wrapperClassName - }, { - default: (_a2) => { - var { - visible, - afterClose - } = _a2, rest2 = __rest36(_a2, ["visible", "afterClose"]); - return createVNode(DrawerChild_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": dom - }, otherProps), rest2), {}, { - "rootClassName": rootClassName, - "rootStyle": rootStyle, - "open": visible !== void 0 ? visible : props4.open, - "afterVisibleChange": afterClose !== void 0 ? afterClose : props4.afterVisibleChange, - "onClose": onClose, - "onHandleClick": onHandleClick - }), slots); - } - }); - } - return portal; - }; - } -}); -var DrawerWrapper_default = DrawerWrapper; - -// node_modules/ant-design-vue/es/vc-drawer/index.js -var vc_drawer_default = DrawerWrapper_default; - -// node_modules/ant-design-vue/es/drawer/style/motion.js -var genMotionStyle2 = (token2) => { - const { - componentCls, - motionDurationSlow - } = token2; - const sharedPanelMotion = { - "&-enter, &-appear, &-leave": { - "&-start": { - transition: "none" - }, - "&-active": { - transition: `all ${motionDurationSlow}` - } - } - }; - return { - [componentCls]: { - // ======================== Mask ======================== - [`${componentCls}-mask-motion`]: { - "&-enter, &-appear, &-leave": { - "&-active": { - transition: `all ${motionDurationSlow}` - } - }, - "&-enter, &-appear": { - opacity: 0, - "&-active": { - opacity: 1 - } - }, - "&-leave": { - opacity: 1, - "&-active": { - opacity: 0 - } - } - }, - // ======================= Panel ======================== - [`${componentCls}-panel-motion`]: { - // Left - "&-left": [sharedPanelMotion, { - "&-enter, &-appear": { - "&-start": { - transform: "translateX(-100%) !important" - }, - "&-active": { - transform: "translateX(0)" - } - }, - "&-leave": { - transform: "translateX(0)", - "&-active": { - transform: "translateX(-100%)" - } - } - }], - // Right - "&-right": [sharedPanelMotion, { - "&-enter, &-appear": { - "&-start": { - transform: "translateX(100%) !important" - }, - "&-active": { - transform: "translateX(0)" - } - }, - "&-leave": { - transform: "translateX(0)", - "&-active": { - transform: "translateX(100%)" - } - } - }], - // Top - "&-top": [sharedPanelMotion, { - "&-enter, &-appear": { - "&-start": { - transform: "translateY(-100%) !important" - }, - "&-active": { - transform: "translateY(0)" - } - }, - "&-leave": { - transform: "translateY(0)", - "&-active": { - transform: "translateY(-100%)" - } - } - }], - // Bottom - "&-bottom": [sharedPanelMotion, { - "&-enter, &-appear": { - "&-start": { - transform: "translateY(100%) !important" - }, - "&-active": { - transform: "translateY(0)" - } - }, - "&-leave": { - transform: "translateY(0)", - "&-active": { - transform: "translateY(100%)" - } - } - }] - } - } - }; -}; -var motion_default2 = genMotionStyle2; - -// node_modules/ant-design-vue/es/drawer/style/index.js -var genDrawerStyle = (token2) => { - const { - componentCls, - zIndexPopup, - colorBgMask, - colorBgElevated, - motionDurationSlow, - motionDurationMid, - padding, - paddingLG, - fontSizeLG, - lineHeightLG, - lineWidth, - lineType, - colorSplit, - marginSM, - colorIcon, - colorIconHover, - colorText, - fontWeightStrong, - drawerFooterPaddingVertical, - drawerFooterPaddingHorizontal - } = token2; - const wrapperCls = `${componentCls}-content-wrapper`; - return { - [componentCls]: { - position: "fixed", - inset: 0, - zIndex: zIndexPopup, - pointerEvents: "none", - "&-pure": { - position: "relative", - background: colorBgElevated, - [`&${componentCls}-left`]: { - boxShadow: token2.boxShadowDrawerLeft - }, - [`&${componentCls}-right`]: { - boxShadow: token2.boxShadowDrawerRight - }, - [`&${componentCls}-top`]: { - boxShadow: token2.boxShadowDrawerUp - }, - [`&${componentCls}-bottom`]: { - boxShadow: token2.boxShadowDrawerDown - } - }, - "&-inline": { - position: "absolute" - }, - // ====================== Mask ====================== - [`${componentCls}-mask`]: { - position: "absolute", - inset: 0, - zIndex: zIndexPopup, - background: colorBgMask, - pointerEvents: "auto" - }, - // ==================== Content ===================== - [wrapperCls]: { - position: "absolute", - zIndex: zIndexPopup, - transition: `all ${motionDurationSlow}`, - "&-hidden": { - display: "none" - } - }, - // Placement - [`&-left > ${wrapperCls}`]: { - top: 0, - bottom: 0, - left: { - _skip_check_: true, - value: 0 - }, - boxShadow: token2.boxShadowDrawerLeft - }, - [`&-right > ${wrapperCls}`]: { - top: 0, - right: { - _skip_check_: true, - value: 0 - }, - bottom: 0, - boxShadow: token2.boxShadowDrawerRight - }, - [`&-top > ${wrapperCls}`]: { - top: 0, - insetInline: 0, - boxShadow: token2.boxShadowDrawerUp - }, - [`&-bottom > ${wrapperCls}`]: { - bottom: 0, - insetInline: 0, - boxShadow: token2.boxShadowDrawerDown - }, - [`${componentCls}-content`]: { - width: "100%", - height: "100%", - overflow: "auto", - background: colorBgElevated, - pointerEvents: "auto" - }, - // ===================== Panel ====================== - [`${componentCls}-wrapper-body`]: { - display: "flex", - flexDirection: "column", - width: "100%", - height: "100%" - }, - // Header - [`${componentCls}-header`]: { - display: "flex", - flex: 0, - alignItems: "center", - padding: `${padding}px ${paddingLG}px`, - fontSize: fontSizeLG, - lineHeight: lineHeightLG, - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`, - "&-title": { - display: "flex", - flex: 1, - alignItems: "center", - minWidth: 0, - minHeight: 0 - } - }, - [`${componentCls}-extra`]: { - flex: "none" - }, - [`${componentCls}-close`]: { - display: "inline-block", - marginInlineEnd: marginSM, - color: colorIcon, - fontWeight: fontWeightStrong, - fontSize: fontSizeLG, - fontStyle: "normal", - lineHeight: 1, - textAlign: "center", - textTransform: "none", - textDecoration: "none", - background: "transparent", - border: 0, - outline: 0, - cursor: "pointer", - transition: `color ${motionDurationMid}`, - textRendering: "auto", - "&:focus, &:hover": { - color: colorIconHover, - textDecoration: "none" - } - }, - [`${componentCls}-title`]: { - flex: 1, - margin: 0, - color: colorText, - fontWeight: token2.fontWeightStrong, - fontSize: fontSizeLG, - lineHeight: lineHeightLG - }, - // Body - [`${componentCls}-body`]: { - flex: 1, - minWidth: 0, - minHeight: 0, - padding: paddingLG, - overflow: "auto" - }, - // Footer - [`${componentCls}-footer`]: { - flexShrink: 0, - padding: `${drawerFooterPaddingVertical}px ${drawerFooterPaddingHorizontal}px`, - borderTop: `${lineWidth}px ${lineType} ${colorSplit}` - }, - // ====================== RTL ======================= - "&-rtl": { - direction: "rtl" - } - } - }; -}; -var style_default35 = genComponentStyleHook("Drawer", (token2) => { - const drawerToken = merge(token2, { - drawerFooterPaddingVertical: token2.paddingXS, - drawerFooterPaddingHorizontal: token2.padding - }); - return [genDrawerStyle(drawerToken), motion_default2(drawerToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase -})); - -// node_modules/ant-design-vue/es/drawer/index.js -var __rest37 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var PlacementTypes = ["top", "right", "bottom", "left"]; -var defaultPushState = { - distance: 180 -}; -var drawerProps2 = () => ({ - autofocus: { - type: Boolean, - default: void 0 - }, - closable: { - type: Boolean, - default: void 0 - }, - closeIcon: vue_types_default.any, - destroyOnClose: { - type: Boolean, - default: void 0 - }, - forceRender: { - type: Boolean, - default: void 0 - }, - getContainer: { - type: [String, Function, Boolean, Object], - default: void 0 - }, - maskClosable: { - type: Boolean, - default: void 0 - }, - mask: { - type: Boolean, - default: void 0 - }, - maskStyle: objectType(), - rootClassName: String, - rootStyle: objectType(), - size: { - type: String - }, - drawerStyle: objectType(), - headerStyle: objectType(), - bodyStyle: objectType(), - contentWrapperStyle: { - type: Object, - default: void 0 - }, - title: vue_types_default.any, - /** @deprecated Please use `open` instead */ - visible: { - type: Boolean, - default: void 0 - }, - open: { - type: Boolean, - default: void 0 - }, - width: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number]), - height: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number]), - zIndex: Number, - prefixCls: String, - push: vue_types_default.oneOfType([vue_types_default.looseBool, { - type: Object - }]), - placement: vue_types_default.oneOf(PlacementTypes), - keyboard: { - type: Boolean, - default: void 0 - }, - extra: vue_types_default.any, - footer: vue_types_default.any, - footerStyle: objectType(), - level: vue_types_default.any, - levelMove: { - type: [Number, Array, Function] - }, - handle: vue_types_default.any, - /** @deprecated Use `@afterVisibleChange` instead */ - afterVisibleChange: Function, - /** @deprecated Please use `@afterOpenChange` instead */ - onAfterVisibleChange: Function, - onAfterOpenChange: Function, - /** @deprecated Please use `onUpdate:open` instead */ - "onUpdate:visible": Function, - "onUpdate:open": Function, - onClose: Function -}); -var Drawer = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADrawer", - inheritAttrs: false, - props: initDefaultProps_default(drawerProps2(), { - closable: true, - placement: "right", - maskClosable: true, - mask: true, - level: null, - keyboard: true, - push: defaultPushState - }), - slots: Object, - // emits: ['update:visible', 'close', 'afterVisibleChange'], - setup(props4, _ref) { - let { - emit, - slots, - attrs - } = _ref; - const sPush = shallowRef(false); - const destroyClose = shallowRef(false); - const vcDrawer = shallowRef(null); - const load = shallowRef(false); - const visible = shallowRef(false); - const mergedOpen = computed(() => { - var _a2; - return (_a2 = props4.open) !== null && _a2 !== void 0 ? _a2 : props4.visible; - }); - watch(mergedOpen, () => { - if (mergedOpen.value) { - load.value = true; - } else { - visible.value = false; - } - }, { - immediate: true - }); - watch([mergedOpen, load], () => { - if (mergedOpen.value && load.value) { - visible.value = true; - } - }, { - immediate: true - }); - const parentDrawerOpts = inject("parentDrawerOpts", null); - const { - prefixCls, - getPopupContainer, - direction - } = useConfigInject_default("drawer", props4); - const [wrapSSR, hashId] = style_default35(prefixCls); - const getContainer3 = computed(() => ( - // 有可能为 false,所以不能直接判断 - props4.getContainer === void 0 && (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value) ? () => getPopupContainer.value(document.body) : props4.getContainer - )); - devWarning_default(!props4.afterVisibleChange, "Drawer", "`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"); - if (true) { - [["visible", "open"], ["onUpdate:visible", "onUpdate:open"], ["onAfterVisibleChange", "onAfterOpenChange"]].forEach((_ref2) => { - let [deprecatedName, newName] = _ref2; - devWarning_default(!props4[deprecatedName], "Drawer", `\`${deprecatedName}\` is deprecated, please use \`${newName}\` instead.`); - }); - } - const setPush = () => { - sPush.value = true; - }; - const setPull = () => { - sPush.value = false; - nextTick(() => { - domFocus(); - }); - }; - provide("parentDrawerOpts", { - setPush, - setPull - }); - onMounted(() => { - if (mergedOpen.value && parentDrawerOpts) { - parentDrawerOpts.setPush(); - } - }); - onUnmounted(() => { - if (parentDrawerOpts) { - parentDrawerOpts.setPull(); - } - }); - watch(visible, () => { - if (parentDrawerOpts) { - if (visible.value) { - parentDrawerOpts.setPush(); - } else { - parentDrawerOpts.setPull(); - } - } - }, { - flush: "post" - }); - const domFocus = () => { - var _a2, _b; - (_b = (_a2 = vcDrawer.value) === null || _a2 === void 0 ? void 0 : _a2.domFocus) === null || _b === void 0 ? void 0 : _b.call(_a2); - }; - const close = (e3) => { - emit("update:visible", false); - emit("update:open", false); - emit("close", e3); - }; - const afterVisibleChange = (open2) => { - var _a2; - if (!open2) { - if (destroyClose.value === false) { - destroyClose.value = true; - } - if (props4.destroyOnClose) { - load.value = false; - } - } - (_a2 = props4.afterVisibleChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, open2); - emit("afterVisibleChange", open2); - emit("afterOpenChange", open2); - }; - const pushTransform = computed(() => { - const { - push, - placement - } = props4; - let distance; - if (typeof push === "boolean") { - distance = push ? defaultPushState.distance : 0; - } else { - distance = push.distance; - } - distance = parseFloat(String(distance || 0)); - if (placement === "left" || placement === "right") { - return `translateX(${placement === "left" ? distance : -distance}px)`; - } - if (placement === "top" || placement === "bottom") { - return `translateY(${placement === "top" ? distance : -distance}px)`; - } - return null; - }); - const mergedWidth = computed(() => { - var _a2; - return (_a2 = props4.width) !== null && _a2 !== void 0 ? _a2 : props4.size === "large" ? 736 : 378; - }); - const mergedHeight = computed(() => { - var _a2; - return (_a2 = props4.height) !== null && _a2 !== void 0 ? _a2 : props4.size === "large" ? 736 : 378; - }); - const offsetStyle = computed(() => { - const { - mask, - placement - } = props4; - if (!visible.value && !mask) { - return {}; - } - const val = {}; - if (placement === "left" || placement === "right") { - val.width = isNumeric_default(mergedWidth.value) ? `${mergedWidth.value}px` : mergedWidth.value; - } else { - val.height = isNumeric_default(mergedHeight.value) ? `${mergedHeight.value}px` : mergedHeight.value; - } - return val; - }); - const wrapperStyle2 = computed(() => { - const { - zIndex, - contentWrapperStyle - } = props4; - const val = offsetStyle.value; - return [{ - zIndex, - transform: sPush.value ? pushTransform.value : void 0 - }, _extends({}, contentWrapperStyle), val]; - }); - const renderHeader = (prefixCls2) => { - const { - closable, - headerStyle - } = props4; - const extra = getPropsSlot(slots, props4, "extra"); - const title = getPropsSlot(slots, props4, "title"); - if (!title && !closable) { - return null; - } - return createVNode("div", { - "class": classNames_default(`${prefixCls2}-header`, { - [`${prefixCls2}-header-close-only`]: closable && !title && !extra - }), - "style": headerStyle - }, [createVNode("div", { - "class": `${prefixCls2}-header-title` - }, [renderCloseIcon(prefixCls2), title && createVNode("div", { - "class": `${prefixCls2}-title` - }, [title])]), extra && createVNode("div", { - "class": `${prefixCls2}-extra` - }, [extra])]); - }; - const renderCloseIcon = (prefixCls2) => { - var _a2; - const { - closable - } = props4; - const $closeIcon = slots.closeIcon ? (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots) : props4.closeIcon; - return closable && createVNode("button", { - "key": "closer", - "onClick": close, - "aria-label": "Close", - "class": `${prefixCls2}-close` - }, [$closeIcon === void 0 ? createVNode(CloseOutlined_default, null, null) : $closeIcon]); - }; - const renderBody = (prefixCls2) => { - var _a2; - if (destroyClose.value && !props4.forceRender && !load.value) { - return null; - } - const { - bodyStyle, - drawerStyle - } = props4; - return createVNode("div", { - "class": `${prefixCls2}-wrapper-body`, - "style": drawerStyle - }, [renderHeader(prefixCls2), createVNode("div", { - "key": "body", - "class": `${prefixCls2}-body`, - "style": bodyStyle - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]), renderFooter(prefixCls2)]); - }; - const renderFooter = (prefixCls2) => { - const footer = getPropsSlot(slots, props4, "footer"); - if (!footer) { - return null; - } - const footerClassName = `${prefixCls2}-footer`; - return createVNode("div", { - "class": footerClassName, - "style": props4.footerStyle - }, [footer]); - }; - const drawerClassName = computed(() => classNames_default({ - "no-mask": !props4.mask, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, props4.rootClassName, hashId.value)); - const maskMotion = computed(() => { - return getTransitionProps(getTransitionName2(prefixCls.value, "mask-motion")); - }); - const panelMotion = (motionPlacement) => { - return getTransitionProps(getTransitionName2(prefixCls.value, `panel-motion-${motionPlacement}`)); - }; - return () => { - const { - width, - height, - placement, - mask, - forceRender - } = props4, rest2 = __rest37(props4, ["width", "height", "placement", "mask", "forceRender"]); - const vcDrawerProps = _extends(_extends(_extends({}, attrs), omit_default(rest2, ["size", "closeIcon", "closable", "destroyOnClose", "drawerStyle", "headerStyle", "bodyStyle", "title", "push", "onAfterVisibleChange", "onClose", "onUpdate:visible", "onUpdate:open", "visible"])), { - forceRender, - onClose: close, - afterVisibleChange, - handler: false, - prefixCls: prefixCls.value, - open: visible.value, - showMask: mask, - placement, - ref: vcDrawer - }); - return wrapSSR(createVNode(NoCompactStyle, null, { - default: () => [createVNode(vc_drawer_default, _objectSpread2(_objectSpread2({}, vcDrawerProps), {}, { - "maskMotion": maskMotion.value, - "motion": panelMotion, - "width": mergedWidth.value, - "height": mergedHeight.value, - "getContainer": getContainer3.value, - "rootClassName": drawerClassName.value, - "rootStyle": props4.rootStyle, - "contentWrapperStyle": wrapperStyle2.value - }), { - handler: props4.handle ? () => props4.handle : slots.handle, - default: () => renderBody(prefixCls.value) - })] - })); - }; - } -}); -var drawer_default = withInstall(Drawer); - -// node_modules/ant-design-vue/es/float-button/interface.js -var floatButtonProps = () => { - return { - prefixCls: String, - description: vue_types_default.any, - type: stringType("default"), - shape: stringType("circle"), - tooltip: vue_types_default.any, - href: String, - target: functionType(), - badge: objectType(), - onClick: functionType() - }; -}; -var floatButtonContentProps = () => { - return { - prefixCls: stringType() - }; -}; -var floatButtonGroupProps = () => { - return _extends(_extends({}, floatButtonProps()), { - // 包含的 Float Button - // 触发方式 (有触发方式为菜单模式) - trigger: stringType(), - // 受控展开 - open: booleanType(), - // 展开收起的回调 - onOpenChange: functionType(), - "onUpdate:open": functionType() - }); -}; -var backTopProps = () => { - return _extends(_extends({}, floatButtonProps()), { - prefixCls: String, - duration: Number, - target: functionType(), - visibilityHeight: Number, - onClick: functionType() - }); -}; - -// node_modules/ant-design-vue/es/float-button/FloatButtonContent.js -var FloatButtonContent = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AFloatButtonContent", - inheritAttrs: false, - props: floatButtonContentProps(), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - return () => { - var _a2; - const { - prefixCls - } = props4; - const description = filterEmpty((_a2 = slots.description) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [attrs.class, `${prefixCls}-content`] - }), [slots.icon || description.length ? createVNode(Fragment, null, [slots.icon && createVNode("div", { - "class": `${prefixCls}-icon` - }, [slots.icon()]), description.length ? createVNode("div", { - "class": `${prefixCls}-description` - }, [description]) : null]) : createVNode("div", { - "class": `${prefixCls}-icon` - }, [createVNode(FileTextOutlined_default, null, null)])]); - }; - } -}); -var FloatButtonContent_default = FloatButtonContent; - -// node_modules/ant-design-vue/es/float-button/context.js -var contextKey = Symbol("floatButtonGroupContext"); -var useProvideFloatButtonGroupContext = (props4) => { - provide(contextKey, props4); - return props4; -}; -var useInjectFloatButtonGroupContext = () => { - return inject(contextKey, { - shape: ref() - }); -}; - -// node_modules/ant-design-vue/es/float-button/util.js -var getOffset3 = (radius) => { - if (radius === 0) { - return 0; - } - return radius - Math.sqrt(Math.pow(radius, 2) / 2); -}; -var util_default = getOffset3; - -// node_modules/ant-design-vue/es/float-button/style/index.js -var initFloatButtonGroupMotion = (token2) => { - const { - componentCls, - floatButtonSize, - motionDurationSlow, - motionEaseInOutCirc - } = token2; - const groupPrefixCls = `${componentCls}-group`; - const moveDownIn2 = new Keyframes_default("antFloatButtonMoveDownIn", { - "0%": { - transform: `translate3d(0, ${floatButtonSize}px, 0)`, - transformOrigin: "0 0", - opacity: 0 - }, - "100%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - } - }); - const moveDownOut2 = new Keyframes_default("antFloatButtonMoveDownOut", { - "0%": { - transform: "translate3d(0, 0, 0)", - transformOrigin: "0 0", - opacity: 1 - }, - "100%": { - transform: `translate3d(0, ${floatButtonSize}px, 0)`, - transformOrigin: "0 0", - opacity: 0 - } - }); - return [{ - [`${groupPrefixCls}-wrap`]: _extends({}, initMotion(`${groupPrefixCls}-wrap`, moveDownIn2, moveDownOut2, motionDurationSlow, true)) - }, { - [`${groupPrefixCls}-wrap`]: { - [` - &${groupPrefixCls}-wrap-enter, - &${groupPrefixCls}-wrap-appear - `]: { - opacity: 0, - animationTimingFunction: motionEaseInOutCirc - }, - [`&${groupPrefixCls}-wrap-leave`]: { - animationTimingFunction: motionEaseInOutCirc - } - } - }]; -}; -var floatButtonGroupStyle = (token2) => { - const { - antCls, - componentCls, - floatButtonSize, - margin, - borderRadiusLG, - borderRadiusSM, - badgeOffset, - floatButtonBodyPadding - } = token2; - const groupPrefixCls = `${componentCls}-group`; - return { - [groupPrefixCls]: _extends(_extends({}, resetComponent(token2)), { - zIndex: 99, - display: "block", - border: "none", - position: "fixed", - width: floatButtonSize, - height: "auto", - boxShadow: "none", - minHeight: floatButtonSize, - insetInlineEnd: token2.floatButtonInsetInlineEnd, - insetBlockEnd: token2.floatButtonInsetBlockEnd, - borderRadius: borderRadiusLG, - [`${groupPrefixCls}-wrap`]: { - zIndex: -1, - display: "block", - position: "relative", - marginBottom: margin - }, - [`&${groupPrefixCls}-rtl`]: { - direction: "rtl" - }, - [componentCls]: { - position: "static" - } - }), - [`${groupPrefixCls}-circle`]: { - [`${componentCls}-circle:not(:last-child)`]: { - marginBottom: token2.margin, - [`${componentCls}-body`]: { - width: floatButtonSize, - height: floatButtonSize, - borderRadius: "50%" - } - } - }, - [`${groupPrefixCls}-square`]: { - [`${componentCls}-square`]: { - borderRadius: 0, - padding: 0, - "&:first-child": { - borderStartStartRadius: borderRadiusLG, - borderStartEndRadius: borderRadiusLG - }, - "&:last-child": { - borderEndStartRadius: borderRadiusLG, - borderEndEndRadius: borderRadiusLG - }, - "&:not(:last-child)": { - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - [`${antCls}-badge`]: { - [`${antCls}-badge-count`]: { - top: -(floatButtonBodyPadding + badgeOffset), - insetInlineEnd: -(floatButtonBodyPadding + badgeOffset) - } - } - }, - [`${groupPrefixCls}-wrap`]: { - display: "block", - borderRadius: borderRadiusLG, - boxShadow: token2.boxShadowSecondary, - [`${componentCls}-square`]: { - boxShadow: "none", - marginTop: 0, - borderRadius: 0, - padding: floatButtonBodyPadding, - "&:first-child": { - borderStartStartRadius: borderRadiusLG, - borderStartEndRadius: borderRadiusLG - }, - "&:last-child": { - borderEndStartRadius: borderRadiusLG, - borderEndEndRadius: borderRadiusLG - }, - "&:not(:last-child)": { - borderBottom: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - [`${componentCls}-body`]: { - width: token2.floatButtonBodySize, - height: token2.floatButtonBodySize - } - } - } - }, - [`${groupPrefixCls}-circle-shadow`]: { - boxShadow: "none" - }, - [`${groupPrefixCls}-square-shadow`]: { - boxShadow: token2.boxShadowSecondary, - [`${componentCls}-square`]: { - boxShadow: "none", - padding: floatButtonBodyPadding, - [`${componentCls}-body`]: { - width: token2.floatButtonBodySize, - height: token2.floatButtonBodySize, - borderRadius: borderRadiusSM - } - } - } - }; -}; -var sharedFloatButtonStyle = (token2) => { - const { - antCls, - componentCls, - floatButtonBodyPadding, - floatButtonIconSize, - floatButtonSize, - borderRadiusLG, - badgeOffset, - dotOffsetInSquare, - dotOffsetInCircle - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - border: "none", - position: "fixed", - cursor: "pointer", - zIndex: 99, - display: "block", - justifyContent: "center", - alignItems: "center", - width: floatButtonSize, - height: floatButtonSize, - insetInlineEnd: token2.floatButtonInsetInlineEnd, - insetBlockEnd: token2.floatButtonInsetBlockEnd, - boxShadow: token2.boxShadowSecondary, - // Pure Panel - "&-pure": { - position: "relative", - inset: "auto" - }, - "&:empty": { - display: "none" - }, - [`${antCls}-badge`]: { - width: "100%", - height: "100%", - [`${antCls}-badge-count`]: { - transform: "translate(0, 0)", - transformOrigin: "center", - top: -badgeOffset, - insetInlineEnd: -badgeOffset - } - }, - [`${componentCls}-body`]: { - width: "100%", - height: "100%", - display: "flex", - justifyContent: "center", - alignItems: "center", - transition: `all ${token2.motionDurationMid}`, - [`${componentCls}-content`]: { - overflow: "hidden", - textAlign: "center", - minHeight: floatButtonSize, - display: "flex", - flexDirection: "column", - justifyContent: "center", - alignItems: "center", - padding: `${floatButtonBodyPadding / 2}px ${floatButtonBodyPadding}px`, - [`${componentCls}-icon`]: { - textAlign: "center", - margin: "auto", - width: floatButtonIconSize, - fontSize: floatButtonIconSize, - lineHeight: 1 - } - } - } - }), - [`${componentCls}-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-circle`]: { - height: floatButtonSize, - borderRadius: "50%", - [`${antCls}-badge`]: { - [`${antCls}-badge-dot`]: { - top: dotOffsetInCircle, - insetInlineEnd: dotOffsetInCircle - } - }, - [`${componentCls}-body`]: { - borderRadius: "50%" - } - }, - [`${componentCls}-square`]: { - height: "auto", - minHeight: floatButtonSize, - borderRadius: borderRadiusLG, - [`${antCls}-badge`]: { - [`${antCls}-badge-dot`]: { - top: dotOffsetInSquare, - insetInlineEnd: dotOffsetInSquare - } - }, - [`${componentCls}-body`]: { - height: "auto", - borderRadius: borderRadiusLG - } - }, - [`${componentCls}-default`]: { - backgroundColor: token2.floatButtonBackgroundColor, - transition: `background-color ${token2.motionDurationMid}`, - [`${componentCls}-body`]: { - backgroundColor: token2.floatButtonBackgroundColor, - transition: `background-color ${token2.motionDurationMid}`, - "&:hover": { - backgroundColor: token2.colorFillContent - }, - [`${componentCls}-content`]: { - [`${componentCls}-icon`]: { - color: token2.colorText - }, - [`${componentCls}-description`]: { - display: "flex", - alignItems: "center", - lineHeight: `${token2.fontSizeLG}px`, - color: token2.colorText, - fontSize: token2.fontSizeSM - } - } - } - }, - [`${componentCls}-primary`]: { - backgroundColor: token2.colorPrimary, - [`${componentCls}-body`]: { - backgroundColor: token2.colorPrimary, - transition: `background-color ${token2.motionDurationMid}`, - "&:hover": { - backgroundColor: token2.colorPrimaryHover - }, - [`${componentCls}-content`]: { - [`${componentCls}-icon`]: { - color: token2.colorTextLightSolid - }, - [`${componentCls}-description`]: { - display: "flex", - alignItems: "center", - lineHeight: `${token2.fontSizeLG}px`, - color: token2.colorTextLightSolid, - fontSize: token2.fontSizeSM - } - } - } - } - }; -}; -var style_default36 = genComponentStyleHook("FloatButton", (token2) => { - const { - colorTextLightSolid, - colorBgElevated, - controlHeightLG, - marginXXL, - marginLG, - fontSize, - fontSizeIcon, - controlItemBgHover, - paddingXXS, - borderRadiusLG - } = token2; - const floatButtonToken = merge(token2, { - floatButtonBackgroundColor: colorBgElevated, - floatButtonColor: colorTextLightSolid, - floatButtonHoverBackgroundColor: controlItemBgHover, - floatButtonFontSize: fontSize, - floatButtonIconSize: fontSizeIcon * 1.5, - floatButtonSize: controlHeightLG, - floatButtonInsetBlockEnd: marginXXL, - floatButtonInsetInlineEnd: marginLG, - floatButtonBodySize: controlHeightLG - paddingXXS * 2, - // 这里的 paddingXXS 是简写,完整逻辑是 (controlHeightLG - (controlHeightLG - paddingXXS * 2)) / 2, - floatButtonBodyPadding: paddingXXS, - badgeOffset: paddingXXS * 1.5, - dotOffsetInCircle: util_default(controlHeightLG / 2), - dotOffsetInSquare: util_default(borderRadiusLG) - }); - return [floatButtonGroupStyle(floatButtonToken), sharedFloatButtonStyle(floatButtonToken), initFadeMotion(token2), initFloatButtonGroupMotion(floatButtonToken)]; -}); - -// node_modules/ant-design-vue/es/float-button/FloatButton.js -var __rest38 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var floatButtonPrefixCls = "float-btn"; -var FloatButton = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AFloatButton", - inheritAttrs: false, - props: initDefaultProps_default(floatButtonProps(), { - type: "default", - shape: "circle" - }), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default(floatButtonPrefixCls, props4); - const [wrapSSR, hashId] = style_default36(prefixCls); - const { - shape: groupShape - } = useInjectFloatButtonGroupContext(); - const floatButtonRef = ref(null); - const mergeShape = computed(() => { - return (groupShape === null || groupShape === void 0 ? void 0 : groupShape.value) || props4.shape; - }); - return () => { - var _a2; - const { - prefixCls: customPrefixCls, - type: type4 = "default", - shape = "circle", - description = (_a2 = slots.description) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - tooltip, - badge = {} - } = props4, restProps = __rest38(props4, ["prefixCls", "type", "shape", "description", "tooltip", "badge"]); - const classString = classNames_default(prefixCls.value, `${prefixCls.value}-${type4}`, `${prefixCls.value}-${mergeShape.value}`, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - const buttonNode = createVNode(tooltip_default, { - "placement": "left" - }, { - title: slots.tooltip || tooltip ? () => slots.tooltip && slots.tooltip() || tooltip : void 0, - default: () => createVNode(badge_default, badge, { - default: () => [createVNode("div", { - "class": `${prefixCls.value}-body` - }, [createVNode(FloatButtonContent_default, { - "prefixCls": prefixCls.value - }, { - icon: slots.icon, - description: () => description - })])] - }) - }); - if (true) { - warning_default2(!(shape === "circle" && description), "FloatButton", "supported only when `shape` is `square`. Due to narrow space for text, short sentence is recommended."); - } - return wrapSSR(props4.href ? createVNode("a", _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": floatButtonRef - }, attrs), restProps), {}, { - "class": classString - }), [buttonNode]) : createVNode("button", _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": floatButtonRef - }, attrs), restProps), {}, { - "class": classString, - "type": "button" - }), [buttonNode])); - }; - } -}); -var FloatButton_default = FloatButton; - -// node_modules/ant-design-vue/es/float-button/FloatButtonGroup.js -var FloatButtonGroup = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AFloatButtonGroup", - inheritAttrs: false, - props: initDefaultProps_default(floatButtonGroupProps(), { - type: "default", - shape: "circle" - }), - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default(floatButtonPrefixCls, props4); - const [wrapSSR, hashId] = style_default36(prefixCls); - const [open2, setOpen] = useMergedState(false, { - value: computed(() => props4.open) - }); - const floatButtonGroupRef = ref(null); - const floatButtonRef = ref(null); - useProvideFloatButtonGroupContext({ - shape: computed(() => props4.shape) - }); - const hoverTypeAction = { - onMouseenter() { - var _a2; - setOpen(true); - emit("update:open", true); - (_a2 = props4.onOpenChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, true); - }, - onMouseleave() { - var _a2; - setOpen(false); - emit("update:open", false); - (_a2 = props4.onOpenChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, false); - } - }; - const hoverAction = computed(() => { - return props4.trigger === "hover" ? hoverTypeAction : {}; - }); - const handleOpenChange = () => { - var _a2; - const nextOpen = !open2.value; - emit("update:open", nextOpen); - (_a2 = props4.onOpenChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, nextOpen); - setOpen(nextOpen); - }; - const onClick = (e3) => { - var _a2, _b, _c; - if ((_a2 = floatButtonGroupRef.value) === null || _a2 === void 0 ? void 0 : _a2.contains(e3.target)) { - if ((_b = findDOMNode(floatButtonRef.value)) === null || _b === void 0 ? void 0 : _b.contains(e3.target)) { - handleOpenChange(); - } - return; - } - setOpen(false); - emit("update:open", false); - (_c = props4.onOpenChange) === null || _c === void 0 ? void 0 : _c.call(props4, false); - }; - watch(computed(() => props4.trigger), (value) => { - if (!canUseDom_default()) { - return; - } - document.removeEventListener("click", onClick); - if (value === "click") { - document.addEventListener("click", onClick); - } - }, { - immediate: true - }); - onBeforeUnmount(() => { - document.removeEventListener("click", onClick); - }); - return () => { - var _a2; - const { - shape = "circle", - type: type4 = "default", - tooltip, - description, - trigger: trigger2 - } = props4; - const groupPrefixCls = `${prefixCls.value}-group`; - const groupCls = classNames_default(groupPrefixCls, hashId.value, attrs.class, { - [`${groupPrefixCls}-rtl`]: direction.value === "rtl", - [`${groupPrefixCls}-${shape}`]: shape, - [`${groupPrefixCls}-${shape}-shadow`]: !trigger2 - }); - const wrapperCls = classNames_default(hashId.value, `${groupPrefixCls}-wrap`); - const transitionProps = getTransitionProps(`${groupPrefixCls}-wrap`); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({ - "ref": floatButtonGroupRef - }, attrs), {}, { - "class": groupCls - }, hoverAction.value), [trigger2 && ["click", "hover"].includes(trigger2) ? createVNode(Fragment, null, [createVNode(Transition, transitionProps, { - default: () => [withDirectives(createVNode("div", { - "class": wrapperCls - }, [slots.default && slots.default()]), [[vShow, open2.value]])] - }), createVNode(FloatButton_default, { - "ref": floatButtonRef, - "type": type4, - "shape": shape, - "tooltip": tooltip, - "description": description - }, { - icon: () => { - var _a3, _b; - return open2.value ? ((_a3 = slots.closeIcon) === null || _a3 === void 0 ? void 0 : _a3.call(slots)) || createVNode(CloseOutlined_default, null, null) : ((_b = slots.icon) === null || _b === void 0 ? void 0 : _b.call(slots)) || createVNode(FileTextOutlined_default, null, null); - }, - tooltip: slots.tooltip, - description: slots.description - })]) : (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); -var FloatButtonGroup_default = FloatButtonGroup; - -// node_modules/ant-design-vue/es/float-button/BackTop.js -var BackTop = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ABackTop", - inheritAttrs: false, - props: initDefaultProps_default(backTopProps(), { - visibilityHeight: 400, - target: () => window, - duration: 450, - type: "default", - shape: "circle" - }), - // emits: ['click'], - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default(floatButtonPrefixCls, props4); - const [wrapSSR] = style_default36(prefixCls); - const domRef = ref(); - const state = reactive({ - visible: props4.visibilityHeight === 0, - scrollEvent: null - }); - const getDefaultTarget2 = () => domRef.value && domRef.value.ownerDocument ? domRef.value.ownerDocument : window; - const scrollToTop = (e3) => { - const { - target = getDefaultTarget2, - duration - } = props4; - scrollTo(0, { - getContainer: target, - duration - }); - emit("click", e3); - }; - const handleScroll = throttleByAnimationFrame_default((e3) => { - const { - visibilityHeight - } = props4; - const scrollTop = getScroll(e3.target, true); - state.visible = scrollTop >= visibilityHeight; - }); - const bindScrollEvent = () => { - const { - target - } = props4; - const getTarget = target || getDefaultTarget2; - const container = getTarget(); - handleScroll({ - target: container - }); - container === null || container === void 0 ? void 0 : container.addEventListener("scroll", handleScroll); - }; - const scrollRemove = () => { - const { - target - } = props4; - const getTarget = target || getDefaultTarget2; - const container = getTarget(); - handleScroll.cancel(); - container === null || container === void 0 ? void 0 : container.removeEventListener("scroll", handleScroll); - }; - watch(() => props4.target, () => { - scrollRemove(); - nextTick(() => { - bindScrollEvent(); - }); - }); - onMounted(() => { - nextTick(() => { - bindScrollEvent(); - }); - }); - onActivated(() => { - nextTick(() => { - bindScrollEvent(); - }); - }); - onDeactivated(() => { - scrollRemove(); - }); - onBeforeUnmount(() => { - scrollRemove(); - }); - const floatButtonGroupContext = useInjectFloatButtonGroupContext(); - return () => { - const { - description, - type: type4, - shape, - tooltip, - badge - } = props4; - const floatButtonProps2 = _extends(_extends({}, attrs), { - shape: (floatButtonGroupContext === null || floatButtonGroupContext === void 0 ? void 0 : floatButtonGroupContext.shape.value) || shape, - onClick: scrollToTop, - class: { - [`${prefixCls.value}`]: true, - [`${attrs.class}`]: attrs.class, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, - description, - type: type4, - tooltip, - badge - }); - const transitionProps = getTransitionProps("fade"); - return wrapSSR(createVNode(Transition, transitionProps, { - default: () => [withDirectives(createVNode(FloatButton_default, _objectSpread2(_objectSpread2({}, floatButtonProps2), {}, { - "ref": domRef - }), { - icon: () => { - var _a2; - return ((_a2 = slots.icon) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || createVNode(VerticalAlignTopOutlined_default, null, null); - } - }), [[vShow, state.visible]])] - })); - }; - } -}); -var BackTop_default = BackTop; - -// node_modules/ant-design-vue/es/float-button/index.js -FloatButton_default.Group = FloatButtonGroup_default; -FloatButton_default.BackTop = BackTop_default; -FloatButton_default.install = function(app) { - app.component(FloatButton_default.name, FloatButton_default); - app.component(FloatButtonGroup_default.name, FloatButtonGroup_default); - app.component(BackTop_default.name, BackTop_default); - return app; -}; -var float_button_default = FloatButton_default; - -// node_modules/ant-design-vue/es/vc-input/utils/commonUtils.js -var isValid2 = (value) => { - return value !== void 0 && value !== null && (Array.isArray(value) ? filterEmpty(value).length : true); -}; -function hasPrefixSuffix(propsAndSlots) { - return isValid2(propsAndSlots.prefix) || isValid2(propsAndSlots.suffix) || isValid2(propsAndSlots.allowClear); -} -function hasAddon(propsAndSlots) { - return isValid2(propsAndSlots.addonBefore) || isValid2(propsAndSlots.addonAfter); -} -function fixControlledValue(value) { - if (typeof value === "undefined" || value === null) { - return ""; - } - return String(value); -} -function resolveOnChange(target, e3, onChange, targetValue) { - if (!onChange) { - return; - } - const event = e3; - if (e3.type === "click") { - Object.defineProperty(event, "target", { - writable: true - }); - Object.defineProperty(event, "currentTarget", { - writable: true - }); - const currentTarget = target.cloneNode(true); - event.target = currentTarget; - event.currentTarget = currentTarget; - currentTarget.value = ""; - onChange(event); - return; - } - if (targetValue !== void 0) { - Object.defineProperty(event, "target", { - writable: true - }); - Object.defineProperty(event, "currentTarget", { - writable: true - }); - event.target = target; - event.currentTarget = target; - target.value = targetValue; - onChange(event); - return; - } - onChange(event); -} -function triggerFocus(element, option) { - if (!element) return; - element.focus(option); - const { - cursor - } = option || {}; - if (cursor) { - const len = element.value.length; - switch (cursor) { - case "start": - element.setSelectionRange(0, 0); - break; - case "end": - element.setSelectionRange(len, len); - break; - default: - element.setSelectionRange(0, len); - } - } -} - -// node_modules/ant-design-vue/es/vc-input/inputProps.js -var inputDefaultValue = Symbol(); -var commonInputProps = () => { - return { - addonBefore: vue_types_default.any, - addonAfter: vue_types_default.any, - prefix: vue_types_default.any, - suffix: vue_types_default.any, - clearIcon: vue_types_default.any, - affixWrapperClassName: String, - groupClassName: String, - wrapperClassName: String, - inputClassName: String, - allowClear: { - type: Boolean, - default: void 0 - } - }; -}; -var baseInputProps = () => { - return _extends(_extends({}, commonInputProps()), { - value: { - type: [String, Number, Symbol], - default: void 0 - }, - defaultValue: { - type: [String, Number, Symbol], - default: void 0 - }, - inputElement: vue_types_default.any, - prefixCls: String, - disabled: { - type: Boolean, - default: void 0 - }, - focused: { - type: Boolean, - default: void 0 - }, - triggerFocus: Function, - readonly: { - type: Boolean, - default: void 0 - }, - handleReset: Function, - hidden: { - type: Boolean, - default: void 0 - } - }); -}; -var inputProps2 = () => _extends(_extends({}, baseInputProps()), { - id: String, - placeholder: { - type: [String, Number] - }, - autocomplete: String, - type: stringType("text"), - name: String, - size: { - type: String - }, - autofocus: { - type: Boolean, - default: void 0 - }, - lazy: { - type: Boolean, - default: true - }, - maxlength: Number, - loading: { - type: Boolean, - default: void 0 - }, - bordered: { - type: Boolean, - default: void 0 - }, - showCount: { - type: [Boolean, Object] - }, - htmlSize: Number, - onPressEnter: Function, - onKeydown: Function, - onKeyup: Function, - onFocus: Function, - onBlur: Function, - onChange: Function, - onInput: Function, - "onUpdate:value": Function, - onCompositionstart: Function, - onCompositionend: Function, - valueModifiers: Object, - hidden: { - type: Boolean, - default: void 0 - }, - status: String -}); - -// node_modules/ant-design-vue/es/vc-input/BaseInput.js -var BaseInput_default = defineComponent({ - name: "BaseInput", - inheritAttrs: false, - props: baseInputProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const containerRef = ref(); - const onInputMouseDown = (e3) => { - var _a2; - if ((_a2 = containerRef.value) === null || _a2 === void 0 ? void 0 : _a2.contains(e3.target)) { - const { - triggerFocus: triggerFocus2 - } = props4; - triggerFocus2 === null || triggerFocus2 === void 0 ? void 0 : triggerFocus2(); - } - }; - const getClearIcon = () => { - var _a2; - const { - allowClear, - value, - disabled, - readonly, - handleReset, - suffix = slots.suffix, - prefixCls - } = props4; - if (!allowClear) { - return null; - } - const needClear = !disabled && !readonly && value; - const className = `${prefixCls}-clear-icon`; - const iconNode = ((_a2 = slots.clearIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || "*"; - return createVNode("span", { - "onClick": handleReset, - "onMousedown": (e3) => e3.preventDefault(), - "class": classNames_default({ - [`${className}-hidden`]: !needClear, - [`${className}-has-suffix`]: !!suffix - }, className), - "role": "button", - "tabindex": -1 - }, [iconNode]); - }; - return () => { - var _a2, _b; - const { - focused, - value, - disabled, - allowClear, - readonly, - hidden, - prefixCls, - prefix: prefix2 = (_a2 = slots.prefix) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - suffix = (_b = slots.suffix) === null || _b === void 0 ? void 0 : _b.call(slots), - addonAfter = slots.addonAfter, - addonBefore = slots.addonBefore, - inputElement, - affixWrapperClassName, - wrapperClassName, - groupClassName - } = props4; - let element = cloneElement(inputElement, { - value, - hidden - }); - if (hasPrefixSuffix({ - prefix: prefix2, - suffix, - allowClear - })) { - const affixWrapperPrefixCls = `${prefixCls}-affix-wrapper`; - const affixWrapperCls = classNames_default(affixWrapperPrefixCls, { - [`${affixWrapperPrefixCls}-disabled`]: disabled, - [`${affixWrapperPrefixCls}-focused`]: focused, - [`${affixWrapperPrefixCls}-readonly`]: readonly, - [`${affixWrapperPrefixCls}-input-with-clear-btn`]: suffix && allowClear && value - }, !hasAddon({ - addonAfter, - addonBefore - }) && attrs.class, affixWrapperClassName); - const suffixNode = (suffix || allowClear) && createVNode("span", { - "class": `${prefixCls}-suffix` - }, [getClearIcon(), suffix]); - element = createVNode("span", { - "class": affixWrapperCls, - "style": attrs.style, - "hidden": !hasAddon({ - addonAfter, - addonBefore - }) && hidden, - "onMousedown": onInputMouseDown, - "ref": containerRef - }, [prefix2 && createVNode("span", { - "class": `${prefixCls}-prefix` - }, [prefix2]), cloneElement(inputElement, { - style: null, - value, - hidden: null - }), suffixNode]); - } - if (hasAddon({ - addonAfter, - addonBefore - })) { - const wrapperCls = `${prefixCls}-group`; - const addonCls = `${wrapperCls}-addon`; - const mergedWrapperClassName = classNames_default(`${prefixCls}-wrapper`, wrapperCls, wrapperClassName); - const mergedGroupClassName = classNames_default(`${prefixCls}-group-wrapper`, attrs.class, groupClassName); - return createVNode("span", { - "class": mergedGroupClassName, - "style": attrs.style, - "hidden": hidden - }, [createVNode("span", { - "class": mergedWrapperClassName - }, [addonBefore && createVNode("span", { - "class": addonCls - }, [addonBefore]), cloneElement(element, { - style: null, - hidden: null - }), addonAfter && createVNode("span", { - "class": addonCls - }, [addonAfter])])]); - } - return element; - }; - } -}); - -// node_modules/ant-design-vue/es/vc-input/Input.js -var __rest39 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Input_default3 = defineComponent({ - name: "VCInput", - inheritAttrs: false, - props: inputProps2(), - setup(props4, _ref) { - let { - slots, - attrs, - expose, - emit - } = _ref; - const stateValue = shallowRef(props4.value === void 0 ? props4.defaultValue : props4.value); - const focused = shallowRef(false); - const inputRef = shallowRef(); - const rootRef = shallowRef(); - watch(() => props4.value, () => { - stateValue.value = props4.value; - }); - watch(() => props4.disabled, () => { - if (props4.disabled) { - focused.value = false; - } - }); - const focus = (option) => { - if (inputRef.value) { - triggerFocus(inputRef.value, option); - } - }; - const blur = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - const setSelectionRange = (start, end, direction) => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.setSelectionRange(start, end, direction); - }; - const select = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.select(); - }; - expose({ - focus, - blur, - input: inputRef, - stateValue, - setSelectionRange, - select - }); - const triggerChange = (e3) => { - emit("change", e3); - }; - const setValue2 = (value, callback) => { - if (stateValue.value === value) { - return; - } - if (props4.value === void 0) { - stateValue.value = value; - } else { - nextTick(() => { - var _a2; - if (inputRef.value.value !== stateValue.value) { - (_a2 = rootRef.value) === null || _a2 === void 0 ? void 0 : _a2.$forceUpdate(); - } - }); - } - nextTick(() => { - callback && callback(); - }); - }; - const handleChange = (e3) => { - const { - value, - composing - } = e3.target; - if ((e3.isComposing || composing) && props4.lazy || stateValue.value === value) return; - const newVal = e3.target.value; - resolveOnChange(inputRef.value, e3, triggerChange); - setValue2(newVal); - }; - const handleKeyDown = (e3) => { - if (e3.keyCode === 13) { - emit("pressEnter", e3); - } - emit("keydown", e3); - }; - const handleFocus = (e3) => { - focused.value = true; - emit("focus", e3); - }; - const handleBlur = (e3) => { - focused.value = false; - emit("blur", e3); - }; - const handleReset = (e3) => { - resolveOnChange(inputRef.value, e3, triggerChange); - setValue2("", () => { - focus(); - }); - }; - const getInputElement = () => { - var _a2, _b; - const { - addonBefore = slots.addonBefore, - addonAfter = slots.addonAfter, - disabled, - valueModifiers = {}, - htmlSize, - autocomplete, - prefixCls, - inputClassName, - prefix: prefix2 = (_a2 = slots.prefix) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - suffix = (_b = slots.suffix) === null || _b === void 0 ? void 0 : _b.call(slots), - allowClear, - type: type4 = "text" - } = props4; - const otherProps = omit_default(props4, [ - "prefixCls", - "onPressEnter", - "addonBefore", - "addonAfter", - "prefix", - "suffix", - "allowClear", - // Input elements must be either controlled or uncontrolled, - // specify either the value prop, or the defaultValue prop, but not both. - "defaultValue", - "size", - "bordered", - "htmlSize", - "lazy", - "showCount", - "valueModifiers", - "showCount", - "affixWrapperClassName", - "groupClassName", - "inputClassName", - "wrapperClassName" - ]); - const inputProps4 = _extends(_extends(_extends({}, otherProps), attrs), { - autocomplete, - onChange: handleChange, - onInput: handleChange, - onFocus: handleFocus, - onBlur: handleBlur, - onKeydown: handleKeyDown, - class: classNames_default(prefixCls, { - [`${prefixCls}-disabled`]: disabled - }, inputClassName, !hasAddon({ - addonAfter, - addonBefore - }) && !hasPrefixSuffix({ - prefix: prefix2, - suffix, - allowClear - }) && attrs.class), - ref: inputRef, - key: "ant-input", - size: htmlSize, - type: type4 - }); - if (valueModifiers.lazy) { - delete inputProps4.onInput; - } - if (!inputProps4.autofocus) { - delete inputProps4.autofocus; - } - const inputNode = createVNode("input", omit_default(inputProps4, ["size"]), null); - return withDirectives(inputNode, [[antInputDirective_default]]); - }; - const getSuffix = () => { - var _a2; - const { - maxlength, - suffix = (_a2 = slots.suffix) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - showCount, - prefixCls - } = props4; - const hasMaxLength = Number(maxlength) > 0; - if (suffix || showCount) { - const valueLength = [...fixControlledValue(stateValue.value)].length; - const dataCount = typeof showCount === "object" ? showCount.formatter({ - count: valueLength, - maxlength - }) : `${valueLength}${hasMaxLength ? ` / ${maxlength}` : ""}`; - return createVNode(Fragment, null, [!!showCount && createVNode("span", { - "class": classNames_default(`${prefixCls}-show-count-suffix`, { - [`${prefixCls}-show-count-has-suffix`]: !!suffix - }) - }, [dataCount]), suffix]); - } - return null; - }; - onMounted(() => { - if (false) { - if (props4.autofocus) { - focus(); - } - } - }); - return () => { - const { - prefixCls, - disabled - } = props4, rest2 = __rest39(props4, ["prefixCls", "disabled"]); - return createVNode(BaseInput_default, _objectSpread2(_objectSpread2(_objectSpread2({}, rest2), attrs), {}, { - "ref": rootRef, - "prefixCls": prefixCls, - "inputElement": getInputElement(), - "handleReset": handleReset, - "value": fixControlledValue(stateValue.value), - "focused": focused.value, - "triggerFocus": focus, - "suffix": getSuffix(), - "disabled": disabled - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/input/inputProps.js -var inputDefaultValue2 = Symbol(); -var inputProps3 = () => { - return omit_default(inputProps2(), ["wrapperClassName", "groupClassName", "inputClassName", "affixWrapperClassName"]); -}; -var inputProps_default = inputProps3; -var textAreaProps = () => _extends(_extends({}, omit_default(inputProps3(), ["prefix", "addonBefore", "addonAfter", "suffix"])), { - rows: Number, - autosize: { - type: [Boolean, Object], - default: void 0 - }, - autoSize: { - type: [Boolean, Object], - default: void 0 - }, - onResize: { - type: Function - }, - onCompositionstart: eventType(), - onCompositionend: eventType(), - valueModifiers: Object -}); - -// node_modules/ant-design-vue/es/input/Input.js -var __rest40 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Input_default4 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AInput", - inheritAttrs: false, - props: inputProps_default(), - setup(props4, _ref) { - let { - slots, - attrs, - expose, - emit - } = _ref; - const inputRef = ref(); - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const { - direction, - prefixCls, - size: size2, - autocomplete - } = useConfigInject_default("input", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => { - return compactSize.value || size2.value; - }); - const [wrapSSR, hashId] = style_default17(prefixCls); - const disabled = useInjectDisabled(); - const focus = (option) => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(option); - }; - const blur = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - const setSelectionRange = (start, end, direction2) => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.setSelectionRange(start, end, direction2); - }; - const select = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.select(); - }; - expose({ - focus, - blur, - input: inputRef, - setSelectionRange, - select - }); - const removePasswordTimeoutRef = ref([]); - const removePasswordTimeout = () => { - removePasswordTimeoutRef.value.push(setTimeout(() => { - var _a2, _b, _c, _d; - if (((_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.input) && ((_b = inputRef.value) === null || _b === void 0 ? void 0 : _b.input.getAttribute("type")) === "password" && ((_c = inputRef.value) === null || _c === void 0 ? void 0 : _c.input.hasAttribute("value"))) { - (_d = inputRef.value) === null || _d === void 0 ? void 0 : _d.input.removeAttribute("value"); - } - })); - }; - onMounted(() => { - removePasswordTimeout(); - }); - onBeforeUpdate(() => { - removePasswordTimeoutRef.value.forEach((item) => clearTimeout(item)); - }); - onBeforeUnmount(() => { - removePasswordTimeoutRef.value.forEach((item) => clearTimeout(item)); - }); - const handleBlur = (e3) => { - removePasswordTimeout(); - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const handleFocus = (e3) => { - removePasswordTimeout(); - emit("focus", e3); - }; - const triggerChange = (e3) => { - emit("update:value", e3.target.value); - emit("change", e3); - emit("input", e3); - formItemContext.onFieldChange(); - }; - return () => { - var _a2, _b, _c, _d, _e, _f; - const { - hasFeedback, - feedbackIcon - } = formItemInputContext; - const { - allowClear, - bordered = true, - prefix: prefix2 = (_a2 = slots.prefix) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - suffix = (_b = slots.suffix) === null || _b === void 0 ? void 0 : _b.call(slots), - addonAfter = (_c = slots.addonAfter) === null || _c === void 0 ? void 0 : _c.call(slots), - addonBefore = (_d = slots.addonBefore) === null || _d === void 0 ? void 0 : _d.call(slots), - id = (_e = formItemContext.id) === null || _e === void 0 ? void 0 : _e.value - } = props4, rest2 = __rest40(props4, ["allowClear", "bordered", "prefix", "suffix", "addonAfter", "addonBefore", "id"]); - const suffixNode = (hasFeedback || suffix) && createVNode(Fragment, null, [suffix, hasFeedback && feedbackIcon]); - const prefixClsValue = prefixCls.value; - const inputHasPrefixSuffix = hasPrefixSuffix({ - prefix: prefix2, - suffix - }) || !!hasFeedback; - const clearIcon = slots.clearIcon || (() => createVNode(CloseCircleFilled_default, null, null)); - return wrapSSR(createVNode(Input_default3, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), omit_default(rest2, ["onUpdate:value", "onChange", "onInput"])), {}, { - "onChange": triggerChange, - "id": id, - "disabled": (_f = props4.disabled) !== null && _f !== void 0 ? _f : disabled.value, - "ref": inputRef, - "prefixCls": prefixClsValue, - "autocomplete": autocomplete.value, - "onBlur": handleBlur, - "onFocus": handleFocus, - "prefix": prefix2, - "suffix": suffixNode, - "allowClear": allowClear, - "addonAfter": addonAfter && createVNode(NoCompactStyle, null, { - default: () => [createVNode(NoFormStatus, null, { - default: () => [addonAfter] - })] - }), - "addonBefore": addonBefore && createVNode(NoCompactStyle, null, { - default: () => [createVNode(NoFormStatus, null, { - default: () => [addonBefore] - })] - }), - "class": [attrs.class, compactItemClassnames.value], - "inputClassName": classNames_default({ - [`${prefixClsValue}-sm`]: mergedSize.value === "small", - [`${prefixClsValue}-lg`]: mergedSize.value === "large", - [`${prefixClsValue}-rtl`]: direction.value === "rtl", - [`${prefixClsValue}-borderless`]: !bordered - }, !inputHasPrefixSuffix && getStatusClassNames(prefixClsValue, mergedStatus.value), hashId.value), - "affixWrapperClassName": classNames_default({ - [`${prefixClsValue}-affix-wrapper-sm`]: mergedSize.value === "small", - [`${prefixClsValue}-affix-wrapper-lg`]: mergedSize.value === "large", - [`${prefixClsValue}-affix-wrapper-rtl`]: direction.value === "rtl", - [`${prefixClsValue}-affix-wrapper-borderless`]: !bordered - }, getStatusClassNames(`${prefixClsValue}-affix-wrapper`, mergedStatus.value, hasFeedback), hashId.value), - "wrapperClassName": classNames_default({ - [`${prefixClsValue}-group-rtl`]: direction.value === "rtl" - }, hashId.value), - "groupClassName": classNames_default({ - [`${prefixClsValue}-group-wrapper-sm`]: mergedSize.value === "small", - [`${prefixClsValue}-group-wrapper-lg`]: mergedSize.value === "large", - [`${prefixClsValue}-group-wrapper-rtl`]: direction.value === "rtl" - }, getStatusClassNames(`${prefixClsValue}-group-wrapper`, mergedStatus.value, hasFeedback), hashId.value) - }), _extends(_extends({}, slots), { - clearIcon - }))); - }; - } -}); - -// node_modules/ant-design-vue/es/input/Group.js -var Group_default4 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AInputGroup", - inheritAttrs: false, - props: { - prefixCls: String, - size: { - type: String - }, - compact: { - type: Boolean, - default: void 0 - } - }, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction, - getPrefixCls - } = useConfigInject_default("input-group", props4); - const formItemInputContext = FormItemInputContext.useInject(); - FormItemInputContext.useProvide(formItemInputContext, { - isFormItemInput: false - }); - const inputPrefixCls = computed(() => getPrefixCls("input")); - const [wrapSSR, hashId] = style_default17(inputPrefixCls); - const cls = computed(() => { - const pre = prefixCls.value; - return { - [`${pre}`]: true, - [hashId.value]: true, - [`${pre}-lg`]: props4.size === "large", - [`${pre}-sm`]: props4.size === "small", - [`${pre}-compact`]: props4.compact, - [`${pre}-rtl`]: direction.value === "rtl" - }; - }); - return () => { - var _a2; - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(cls.value, attrs.class) - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); - -// node_modules/ant-design-vue/es/input/Search.js -var __rest41 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Search_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AInputSearch", - inheritAttrs: false, - props: _extends(_extends({}, inputProps_default()), { - inputPrefixCls: String, - // 不能设置默认值 https://github.com/vueComponent/ant-design-vue/issues/1916 - enterButton: vue_types_default.any, - onSearch: { - type: Function - } - }), - setup(props4, _ref) { - let { - slots, - attrs, - expose, - emit - } = _ref; - const inputRef = shallowRef(); - const composedRef = shallowRef(false); - const focus = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - const onChange = (e3) => { - emit("update:value", e3.target.value); - if (e3 && e3.target && e3.type === "click") { - emit("search", e3.target.value, e3); - } - emit("change", e3); - }; - const onMousedown = (e3) => { - var _a2; - if (document.activeElement === ((_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.input)) { - e3.preventDefault(); - } - }; - const onSearch = (e3) => { - var _a2, _b; - emit("search", (_b = (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.input) === null || _b === void 0 ? void 0 : _b.stateValue, e3); - }; - const onPressEnter = (e3) => { - if (composedRef.value || props4.loading) { - return; - } - onSearch(e3); - }; - const handleOnCompositionStart = (e3) => { - composedRef.value = true; - emit("compositionstart", e3); - }; - const handleOnCompositionEnd = (e3) => { - composedRef.value = false; - emit("compositionend", e3); - }; - const { - prefixCls, - getPrefixCls, - direction, - size: size2 - } = useConfigInject_default("input-search", props4); - const inputPrefixCls = computed(() => getPrefixCls("input", props4.inputPrefixCls)); - return () => { - var _a2, _b, _c, _d; - const { - disabled, - loading, - addonAfter = (_a2 = slots.addonAfter) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - suffix = (_b = slots.suffix) === null || _b === void 0 ? void 0 : _b.call(slots) - } = props4, restProps = __rest41(props4, ["disabled", "loading", "addonAfter", "suffix"]); - let { - enterButton = (_d = (_c = slots.enterButton) === null || _c === void 0 ? void 0 : _c.call(slots)) !== null && _d !== void 0 ? _d : false - } = props4; - enterButton = enterButton || enterButton === ""; - const searchIcon = typeof enterButton === "boolean" ? createVNode(SearchOutlined_default, null, null) : null; - const btnClassName = `${prefixCls.value}-button`; - const enterButtonAsElement = Array.isArray(enterButton) ? enterButton[0] : enterButton; - let button; - const isAntdButton = enterButtonAsElement.type && isPlainObject_default(enterButtonAsElement.type) && enterButtonAsElement.type.__ANT_BUTTON; - if (isAntdButton || enterButtonAsElement.tagName === "button") { - button = cloneElement(enterButtonAsElement, _extends({ - onMousedown, - onClick: onSearch, - key: "enterButton" - }, isAntdButton ? { - class: btnClassName, - size: size2.value - } : {}), false); - } else { - const iconOnly = searchIcon && !enterButton; - button = createVNode(button_default2, { - "class": btnClassName, - "type": enterButton ? "primary" : void 0, - "size": size2.value, - "disabled": disabled, - "key": "enterButton", - "onMousedown": onMousedown, - "onClick": onSearch, - "loading": loading, - "icon": iconOnly ? searchIcon : null - }, { - default: () => [iconOnly ? null : searchIcon || enterButton] - }); - } - if (addonAfter) { - button = [button, addonAfter]; - } - const cls = classNames_default(prefixCls.value, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-${size2.value}`]: !!size2.value, - [`${prefixCls.value}-with-button`]: !!enterButton - }, attrs.class); - return createVNode(Input_default4, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": inputRef - }, omit_default(restProps, ["onUpdate:value", "onSearch", "enterButton"])), attrs), {}, { - "onPressEnter": onPressEnter, - "onCompositionstart": handleOnCompositionStart, - "onCompositionend": handleOnCompositionEnd, - "size": size2.value, - "prefixCls": inputPrefixCls.value, - "addonAfter": button, - "suffix": suffix, - "onChange": onChange, - "class": cls, - "disabled": disabled - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/input/util.js -var isValid3 = (value) => { - return value !== void 0 && value !== null && (Array.isArray(value) ? filterEmpty(value).length : true); -}; -function hasAddon2(propsAndSlots) { - return isValid3(propsAndSlots.addonBefore) || isValid3(propsAndSlots.addonAfter); -} - -// node_modules/ant-design-vue/es/input/ClearableLabeledInput.js -var ClearableInputType = ["text", "input"]; -var ClearableLabeledInput_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ClearableLabeledInput", - inheritAttrs: false, - props: { - prefixCls: String, - inputType: vue_types_default.oneOf(tuple("text", "input")), - value: anyType(), - defaultValue: anyType(), - allowClear: { - type: Boolean, - default: void 0 - }, - element: anyType(), - handleReset: Function, - disabled: { - type: Boolean, - default: void 0 - }, - direction: { - type: String - }, - size: { - type: String - }, - suffix: anyType(), - prefix: anyType(), - addonBefore: anyType(), - addonAfter: anyType(), - readonly: { - type: Boolean, - default: void 0 - }, - focused: { - type: Boolean, - default: void 0 - }, - bordered: { - type: Boolean, - default: true - }, - triggerFocus: { - type: Function - }, - hidden: Boolean, - status: String, - hashId: String - }, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const statusContext = FormItemInputContext.useInject(); - const renderClearIcon = (prefixCls) => { - const { - value, - disabled, - readonly, - handleReset, - suffix = slots.suffix - } = props4; - const needClear = !disabled && !readonly && value; - const className = `${prefixCls}-clear-icon`; - return createVNode(CloseCircleFilled_default, { - "onClick": handleReset, - "onMousedown": (e3) => e3.preventDefault(), - "class": classNames_default({ - [`${className}-hidden`]: !needClear, - [`${className}-has-suffix`]: !!suffix - }, className), - "role": "button" - }, null); - }; - const renderTextAreaWithClearIcon = (prefixCls, element) => { - const { - value, - allowClear, - direction, - bordered, - hidden, - status: customStatus, - addonAfter = slots.addonAfter, - addonBefore = slots.addonBefore, - hashId - } = props4; - const { - status: contextStatus, - hasFeedback - } = statusContext; - if (!allowClear) { - return cloneElement(element, { - value, - disabled: props4.disabled - }); - } - const affixWrapperCls = classNames_default(`${prefixCls}-affix-wrapper`, `${prefixCls}-affix-wrapper-textarea-with-clear-btn`, getStatusClassNames(`${prefixCls}-affix-wrapper`, getMergedStatus(contextStatus, customStatus), hasFeedback), { - [`${prefixCls}-affix-wrapper-rtl`]: direction === "rtl", - [`${prefixCls}-affix-wrapper-borderless`]: !bordered, - // className will go to addon wrapper - [`${attrs.class}`]: !hasAddon2({ - addonAfter, - addonBefore - }) && attrs.class - }, hashId); - return createVNode("span", { - "class": affixWrapperCls, - "style": attrs.style, - "hidden": hidden - }, [cloneElement(element, { - style: null, - value, - disabled: props4.disabled - }), renderClearIcon(prefixCls)]); - }; - return () => { - var _a2; - const { - prefixCls, - inputType, - element = (_a2 = slots.element) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = props4; - if (inputType === ClearableInputType[0]) { - return renderTextAreaWithClearIcon(prefixCls, element); - } - return null; - }; - } -}); - -// node_modules/ant-design-vue/es/input/calculateNodeHeight.js -var HIDDEN_TEXTAREA_STYLE = ` - min-height:0 !important; - max-height:none !important; - height:0 !important; - visibility:hidden !important; - overflow:hidden !important; - position:absolute !important; - z-index:-1000 !important; - top:0 !important; - right:0 !important; - pointer-events: none !important; -`; -var SIZING_STYLE = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing", "word-break", "white-space"]; -var computedStyleCache = {}; -var hiddenTextarea; -function calculateNodeStyling(node2) { - let useCache = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const nodeRef = node2.getAttribute("id") || node2.getAttribute("data-reactid") || node2.getAttribute("name"); - if (useCache && computedStyleCache[nodeRef]) { - return computedStyleCache[nodeRef]; - } - const style = window.getComputedStyle(node2); - const boxSizing = style.getPropertyValue("box-sizing") || style.getPropertyValue("-moz-box-sizing") || style.getPropertyValue("-webkit-box-sizing"); - const paddingSize = parseFloat(style.getPropertyValue("padding-bottom")) + parseFloat(style.getPropertyValue("padding-top")); - const borderSize = parseFloat(style.getPropertyValue("border-bottom-width")) + parseFloat(style.getPropertyValue("border-top-width")); - const sizingStyle = SIZING_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(";"); - const nodeInfo = { - sizingStyle, - paddingSize, - borderSize, - boxSizing - }; - if (useCache && nodeRef) { - computedStyleCache[nodeRef] = nodeInfo; - } - return nodeInfo; -} -function calculateAutoSizeStyle(uiTextNode) { - let useCache = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - let minRows = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; - let maxRows = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; - if (!hiddenTextarea) { - hiddenTextarea = document.createElement("textarea"); - hiddenTextarea.setAttribute("tab-index", "-1"); - hiddenTextarea.setAttribute("aria-hidden", "true"); - document.body.appendChild(hiddenTextarea); - } - if (uiTextNode.getAttribute("wrap")) { - hiddenTextarea.setAttribute("wrap", uiTextNode.getAttribute("wrap")); - } else { - hiddenTextarea.removeAttribute("wrap"); - } - const { - paddingSize, - borderSize, - boxSizing, - sizingStyle - } = calculateNodeStyling(uiTextNode, useCache); - hiddenTextarea.setAttribute("style", `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`); - hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || ""; - let minHeight = void 0; - let maxHeight = void 0; - let overflowY; - let height = hiddenTextarea.scrollHeight; - if (boxSizing === "border-box") { - height += borderSize; - } else if (boxSizing === "content-box") { - height -= paddingSize; - } - if (minRows !== null || maxRows !== null) { - hiddenTextarea.value = " "; - const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize; - if (minRows !== null) { - minHeight = singleRowHeight * minRows; - if (boxSizing === "border-box") { - minHeight = minHeight + paddingSize + borderSize; - } - height = Math.max(minHeight, height); - } - if (maxRows !== null) { - maxHeight = singleRowHeight * maxRows; - if (boxSizing === "border-box") { - maxHeight = maxHeight + paddingSize + borderSize; - } - overflowY = height > maxHeight ? "" : "hidden"; - height = Math.min(maxHeight, height); - } - } - const style = { - height: `${height}px`, - overflowY, - resize: "none" - }; - if (minHeight) { - style.minHeight = `${minHeight}px`; - } - if (maxHeight) { - style.maxHeight = `${maxHeight}px`; - } - return style; -} - -// node_modules/ant-design-vue/es/input/ResizableTextArea.js -var RESIZE_START = 0; -var RESIZE_MEASURING = 1; -var RESIZE_STABLE = 2; -var ResizableTextArea = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ResizableTextArea", - inheritAttrs: false, - props: textAreaProps(), - setup(props4, _ref) { - let { - attrs, - emit, - expose - } = _ref; - let nextFrameActionId; - let resizeFrameId; - const textAreaRef = ref(); - const textareaStyles = ref({}); - const resizeStatus = ref(RESIZE_STABLE); - onBeforeUnmount(() => { - wrapperRaf.cancel(nextFrameActionId); - wrapperRaf.cancel(resizeFrameId); - }); - const fixFirefoxAutoScroll = () => { - try { - if (document.activeElement === textAreaRef.value) { - const currentStart = textAreaRef.value.selectionStart; - const currentEnd = textAreaRef.value.selectionEnd; - const scrollTop = textAreaRef.value.scrollTop; - textAreaRef.value.setSelectionRange(currentStart, currentEnd); - textAreaRef.value.scrollTop = scrollTop; - } - } catch (e3) { - } - }; - const minRows = ref(); - const maxRows = ref(); - watchEffect(() => { - const autoSize = props4.autoSize || props4.autosize; - if (autoSize) { - minRows.value = autoSize.minRows; - maxRows.value = autoSize.maxRows; - } else { - minRows.value = void 0; - maxRows.value = void 0; - } - }); - const needAutoSize = computed(() => !!(props4.autoSize || props4.autosize)); - const startResize = () => { - resizeStatus.value = RESIZE_START; - }; - watch([() => props4.value, minRows, maxRows, needAutoSize], () => { - if (needAutoSize.value) { - startResize(); - } - }, { - immediate: true, - flush: "post" - }); - const autoSizeStyle = ref(); - watch([resizeStatus, textAreaRef], () => { - if (!textAreaRef.value) return; - if (resizeStatus.value === RESIZE_START) { - resizeStatus.value = RESIZE_MEASURING; - } else if (resizeStatus.value === RESIZE_MEASURING) { - const textareaStyles2 = calculateAutoSizeStyle(textAreaRef.value, false, minRows.value, maxRows.value); - resizeStatus.value = RESIZE_STABLE; - autoSizeStyle.value = textareaStyles2; - } else { - fixFirefoxAutoScroll(); - } - }, { - immediate: true, - flush: "post" - }); - const instance = getCurrentInstance(); - const resizeRafRef = ref(); - const cleanRaf = () => { - wrapperRaf.cancel(resizeRafRef.value); - }; - const onInternalResize = (size2) => { - if (resizeStatus.value === RESIZE_STABLE) { - emit("resize", size2); - if (needAutoSize.value) { - cleanRaf(); - resizeRafRef.value = wrapperRaf(() => { - startResize(); - }); - } - } - }; - onBeforeUnmount(() => { - cleanRaf(); - }); - const resizeTextarea = () => { - startResize(); - }; - expose({ - resizeTextarea, - textArea: textAreaRef, - instance - }); - warning_default2(props4.autosize === void 0, "Input.TextArea", "autosize is deprecated, please use autoSize instead."); - const renderTextArea = () => { - const { - prefixCls, - disabled - } = props4; - const otherProps = omit_default(props4, ["prefixCls", "onPressEnter", "autoSize", "autosize", "defaultValue", "allowClear", "type", "lazy", "maxlength", "valueModifiers"]); - const cls = classNames_default(prefixCls, attrs.class, { - [`${prefixCls}-disabled`]: disabled - }); - const mergedAutoSizeStyle = needAutoSize.value ? autoSizeStyle.value : null; - const style = [attrs.style, textareaStyles.value, mergedAutoSizeStyle]; - const textareaProps = _extends(_extends(_extends({}, otherProps), attrs), { - style, - class: cls - }); - if (resizeStatus.value === RESIZE_START || resizeStatus.value === RESIZE_MEASURING) { - style.push({ - overflowX: "hidden", - overflowY: "hidden" - }); - } - if (!textareaProps.autofocus) { - delete textareaProps.autofocus; - } - if (textareaProps.rows === 0) { - delete textareaProps.rows; - } - return createVNode(vc_resize_observer_default, { - "onResize": onInternalResize, - "disabled": !needAutoSize.value - }, { - default: () => [withDirectives(createVNode("textarea", _objectSpread2(_objectSpread2({}, textareaProps), {}, { - "ref": textAreaRef - }), null), [[antInputDirective_default]])] - }); - }; - return () => { - return renderTextArea(); - }; - } -}); -var ResizableTextArea_default = ResizableTextArea; - -// node_modules/ant-design-vue/es/input/TextArea.js -function fixEmojiLength(value, maxLength) { - return [...value || ""].slice(0, maxLength).join(""); -} -function setTriggerValue(isCursorInEnd, preValue, triggerValue, maxLength) { - let newTriggerValue = triggerValue; - if (isCursorInEnd) { - newTriggerValue = fixEmojiLength(triggerValue, maxLength); - } else if ([...preValue || ""].length < triggerValue.length && [...triggerValue || ""].length > maxLength) { - newTriggerValue = preValue; - } - return newTriggerValue; -} -var TextArea_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATextarea", - inheritAttrs: false, - props: textAreaProps(), - setup(props4, _ref) { - let { - attrs, - expose, - emit - } = _ref; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const stateValue = shallowRef(props4.value === void 0 ? props4.defaultValue : props4.value); - const resizableTextArea = shallowRef(); - const mergedValue = shallowRef(""); - const { - prefixCls, - size: size2, - direction - } = useConfigInject_default("input", props4); - const [wrapSSR, hashId] = style_default17(prefixCls); - const disabled = useInjectDisabled(); - const showCount = computed(() => { - return props4.showCount === "" || props4.showCount || false; - }); - const hasMaxLength = computed(() => Number(props4.maxlength) > 0); - const compositing = shallowRef(false); - const oldCompositionValueRef = shallowRef(); - const oldSelectionStartRef = shallowRef(0); - const onInternalCompositionStart = (e3) => { - compositing.value = true; - oldCompositionValueRef.value = mergedValue.value; - oldSelectionStartRef.value = e3.currentTarget.selectionStart; - emit("compositionstart", e3); - }; - const onInternalCompositionEnd = (e3) => { - var _a2; - compositing.value = false; - let triggerValue = e3.currentTarget.value; - if (hasMaxLength.value) { - const isCursorInEnd = oldSelectionStartRef.value >= props4.maxlength + 1 || oldSelectionStartRef.value === ((_a2 = oldCompositionValueRef.value) === null || _a2 === void 0 ? void 0 : _a2.length); - triggerValue = setTriggerValue(isCursorInEnd, oldCompositionValueRef.value, triggerValue, props4.maxlength); - } - if (triggerValue !== mergedValue.value) { - setValue2(triggerValue); - resolveOnChange(e3.currentTarget, e3, triggerChange, triggerValue); - } - emit("compositionend", e3); - }; - const instance = getCurrentInstance(); - watch(() => props4.value, () => { - var _a2; - if ("value" in instance.vnode.props || {}) { - stateValue.value = (_a2 = props4.value) !== null && _a2 !== void 0 ? _a2 : ""; - } - }); - const focus = (option) => { - var _a2; - triggerFocus((_a2 = resizableTextArea.value) === null || _a2 === void 0 ? void 0 : _a2.textArea, option); - }; - const blur = () => { - var _a2, _b; - (_b = (_a2 = resizableTextArea.value) === null || _a2 === void 0 ? void 0 : _a2.textArea) === null || _b === void 0 ? void 0 : _b.blur(); - }; - const setValue2 = (value, callback) => { - if (stateValue.value === value) { - return; - } - if (props4.value === void 0) { - stateValue.value = value; - } else { - nextTick(() => { - var _a2, _b, _c; - if (resizableTextArea.value.textArea.value !== mergedValue.value) { - (_c = (_a2 = resizableTextArea.value) === null || _a2 === void 0 ? void 0 : (_b = _a2.instance).update) === null || _c === void 0 ? void 0 : _c.call(_b); - } - }); - } - nextTick(() => { - callback && callback(); - }); - }; - const handleKeyDown = (e3) => { - if (e3.keyCode === 13) { - emit("pressEnter", e3); - } - emit("keydown", e3); - }; - const onBlur = (e3) => { - const { - onBlur: onBlur2 - } = props4; - onBlur2 === null || onBlur2 === void 0 ? void 0 : onBlur2(e3); - formItemContext.onFieldBlur(); - }; - const triggerChange = (e3) => { - emit("update:value", e3.target.value); - emit("change", e3); - emit("input", e3); - formItemContext.onFieldChange(); - }; - const handleReset = (e3) => { - resolveOnChange(resizableTextArea.value.textArea, e3, triggerChange); - setValue2("", () => { - focus(); - }); - }; - const handleChange = (e3) => { - const { - composing - } = e3.target; - let triggerValue = e3.target.value; - compositing.value = !!(e3.isComposing || composing); - if (compositing.value && props4.lazy || stateValue.value === triggerValue) return; - if (hasMaxLength.value) { - const target = e3.target; - const isCursorInEnd = target.selectionStart >= props4.maxlength + 1 || target.selectionStart === triggerValue.length || !target.selectionStart; - triggerValue = setTriggerValue(isCursorInEnd, mergedValue.value, triggerValue, props4.maxlength); - } - resolveOnChange(e3.currentTarget, e3, triggerChange, triggerValue); - setValue2(triggerValue); - }; - const renderTextArea = () => { - var _a2, _b; - const { - class: customClass - } = attrs; - const { - bordered = true - } = props4; - const resizeProps = _extends(_extends(_extends({}, omit_default(props4, ["allowClear"])), attrs), { - class: [{ - [`${prefixCls.value}-borderless`]: !bordered, - [`${customClass}`]: customClass && !showCount.value, - [`${prefixCls.value}-sm`]: size2.value === "small", - [`${prefixCls.value}-lg`]: size2.value === "large" - }, getStatusClassNames(prefixCls.value, mergedStatus.value), hashId.value], - disabled: disabled.value, - showCount: null, - prefixCls: prefixCls.value, - onInput: handleChange, - onChange: handleChange, - onBlur, - onKeydown: handleKeyDown, - onCompositionstart: onInternalCompositionStart, - onCompositionend: onInternalCompositionEnd - }); - if ((_a2 = props4.valueModifiers) === null || _a2 === void 0 ? void 0 : _a2.lazy) { - delete resizeProps.onInput; - } - return createVNode(ResizableTextArea_default, _objectSpread2(_objectSpread2({}, resizeProps), {}, { - "id": (_b = resizeProps === null || resizeProps === void 0 ? void 0 : resizeProps.id) !== null && _b !== void 0 ? _b : formItemContext.id.value, - "ref": resizableTextArea, - "maxlength": props4.maxlength - }), null); - }; - expose({ - focus, - blur, - resizableTextArea - }); - watchEffect(() => { - let val = fixControlledValue(stateValue.value); - if (!compositing.value && hasMaxLength.value && (props4.value === null || props4.value === void 0)) { - val = fixEmojiLength(val, props4.maxlength); - } - mergedValue.value = val; - }); - return () => { - var _a2; - const { - maxlength, - bordered = true, - hidden - } = props4; - const { - style, - class: customClass - } = attrs; - const inputProps4 = _extends(_extends(_extends({}, props4), attrs), { - prefixCls: prefixCls.value, - inputType: "text", - handleReset, - direction: direction.value, - bordered, - style: showCount.value ? void 0 : style, - hashId: hashId.value, - disabled: (_a2 = props4.disabled) !== null && _a2 !== void 0 ? _a2 : disabled.value - }); - let textareaNode = createVNode(ClearableLabeledInput_default, _objectSpread2(_objectSpread2({}, inputProps4), {}, { - "value": mergedValue.value, - "status": props4.status - }), { - element: renderTextArea - }); - if (showCount.value || formItemInputContext.hasFeedback) { - const valueLength = [...mergedValue.value].length; - let dataCount = ""; - if (typeof showCount.value === "object") { - dataCount = showCount.value.formatter({ - value: mergedValue.value, - count: valueLength, - maxlength - }); - } else { - dataCount = `${valueLength}${hasMaxLength.value ? ` / ${maxlength}` : ""}`; - } - textareaNode = createVNode("div", { - "hidden": hidden, - "class": classNames_default(`${prefixCls.value}-textarea`, { - [`${prefixCls.value}-textarea-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-textarea-show-count`]: showCount.value, - [`${prefixCls.value}-textarea-in-form-item`]: formItemInputContext.isFormItemInput - }, `${prefixCls.value}-textarea-show-count`, customClass, hashId.value), - "style": style, - "data-count": typeof dataCount !== "object" ? dataCount : void 0 - }, [textareaNode, formItemInputContext.hasFeedback && createVNode("span", { - "class": `${prefixCls.value}-textarea-suffix` - }, [formItemInputContext.feedbackIcon])]); - } - return wrapSSR(textareaNode); - }; - } -}); - -// node_modules/ant-design-vue/es/input/Password.js -var __rest42 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var ActionMap = { - click: "onClick", - hover: "onMouseover" -}; -var defaultIconRender = (visible) => visible ? createVNode(EyeOutlined_default, null, null) : createVNode(EyeInvisibleOutlined_default, null, null); -var Password_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AInputPassword", - inheritAttrs: false, - props: _extends(_extends({}, inputProps_default()), { - prefixCls: String, - inputPrefixCls: String, - action: { - type: String, - default: "click" - }, - visibilityToggle: { - type: Boolean, - default: true - }, - visible: { - type: Boolean, - default: void 0 - }, - "onUpdate:visible": Function, - iconRender: Function - }), - setup(props4, _ref) { - let { - slots, - attrs, - expose, - emit - } = _ref; - const visible = shallowRef(false); - const onVisibleChange = () => { - const { - disabled - } = props4; - if (disabled) { - return; - } - visible.value = !visible.value; - emit("update:visible", visible.value); - }; - watchEffect(() => { - if (props4.visible !== void 0) { - visible.value = !!props4.visible; - } - }); - const inputRef = shallowRef(); - const focus = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - const getIcon2 = (prefixCls2) => { - const { - action, - iconRender = slots.iconRender || defaultIconRender - } = props4; - const iconTrigger = ActionMap[action] || ""; - const icon = iconRender(visible.value); - const iconProps = { - [iconTrigger]: onVisibleChange, - class: `${prefixCls2}-icon`, - key: "passwordIcon", - onMousedown: (e3) => { - e3.preventDefault(); - }, - onMouseup: (e3) => { - e3.preventDefault(); - } - }; - return cloneElement(isValidElement(icon) ? icon : createVNode("span", null, [icon]), iconProps); - }; - const { - prefixCls, - getPrefixCls - } = useConfigInject_default("input-password", props4); - const inputPrefixCls = computed(() => getPrefixCls("input", props4.inputPrefixCls)); - const renderPassword = () => { - const { - size: size2, - visibilityToggle - } = props4, restProps = __rest42(props4, ["size", "visibilityToggle"]); - const suffixIcon = visibilityToggle && getIcon2(prefixCls.value); - const inputClassName = classNames_default(prefixCls.value, attrs.class, { - [`${prefixCls.value}-${size2}`]: !!size2 - }); - const omittedProps = _extends(_extends(_extends({}, omit_default(restProps, ["suffix", "iconRender", "action"])), attrs), { - type: visible.value ? "text" : "password", - class: inputClassName, - prefixCls: inputPrefixCls.value, - suffix: suffixIcon - }); - if (size2) { - omittedProps.size = size2; - } - return createVNode(Input_default4, _objectSpread2({ - "ref": inputRef - }, omittedProps), slots); - }; - return () => { - return renderPassword(); - }; - } -}); - -// node_modules/ant-design-vue/es/input/index.js -Input_default4.Group = Group_default4; -Input_default4.Search = Search_default; -Input_default4.TextArea = TextArea_default; -Input_default4.Password = Password_default; -Input_default4.install = function(app) { - app.component(Input_default4.name, Input_default4); - app.component(Input_default4.Group.name, Input_default4.Group); - app.component(Input_default4.Search.name, Input_default4.Search); - app.component(Input_default4.TextArea.name, Input_default4.TextArea); - app.component(Input_default4.Password.name, Input_default4.Password); - return app; -}; -var input_default = Input_default4; - -// node_modules/ant-design-vue/es/vc-util/Dom/css.js -function getClientSize() { - const width = document.documentElement.clientWidth; - const height = window.innerHeight || document.documentElement.clientHeight; - return { - width, - height - }; -} -function getOffset4(node2) { - const box2 = node2.getBoundingClientRect(); - const docElem = document.documentElement; - return { - left: box2.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0), - top: box2.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0) - }; -} - -// node_modules/ant-design-vue/es/vc-dialog/IDialogPropTypes.js -function dialogPropTypes() { - return { - keyboard: { - type: Boolean, - default: void 0 - }, - mask: { - type: Boolean, - default: void 0 - }, - afterClose: Function, - closable: { - type: Boolean, - default: void 0 - }, - maskClosable: { - type: Boolean, - default: void 0 - }, - visible: { - type: Boolean, - default: void 0 - }, - destroyOnClose: { - type: Boolean, - default: void 0 - }, - mousePosition: vue_types_default.shape({ - x: Number, - y: Number - }).loose, - title: vue_types_default.any, - footer: vue_types_default.any, - transitionName: String, - maskTransitionName: String, - animation: vue_types_default.any, - maskAnimation: vue_types_default.any, - wrapStyle: { - type: Object, - default: void 0 - }, - bodyStyle: { - type: Object, - default: void 0 - }, - maskStyle: { - type: Object, - default: void 0 - }, - prefixCls: String, - wrapClassName: String, - rootClassName: String, - width: [String, Number], - height: [String, Number], - zIndex: Number, - bodyProps: vue_types_default.any, - maskProps: vue_types_default.any, - wrapProps: vue_types_default.any, - getContainer: vue_types_default.any, - dialogStyle: { - type: Object, - default: void 0 - }, - dialogClass: String, - closeIcon: vue_types_default.any, - forceRender: { - type: Boolean, - default: void 0 - }, - getOpenCount: Function, - // https://github.com/ant-design/ant-design/issues/19771 - // https://github.com/react-component/dialog/issues/95 - focusTriggerAfterClose: { - type: Boolean, - default: void 0 - }, - onClose: Function, - modalRender: Function - }; -} -var IDialogPropTypes_default = dialogPropTypes; - -// node_modules/ant-design-vue/es/vc-dialog/util.js -function getMotionName(prefixCls, transitionName2, animationName) { - let motionName = transitionName2; - if (!motionName && animationName) { - motionName = `${prefixCls}-${animationName}`; - } - return motionName; -} -var uuid5 = -1; -function getUUID2() { - uuid5 += 1; - return uuid5; -} -function getScroll3(w2, top) { - let ret = w2[`page${top ? "Y" : "X"}Offset`]; - const method5 = `scroll${top ? "Top" : "Left"}`; - if (typeof ret !== "number") { - const d2 = w2.document; - ret = d2.documentElement[method5]; - if (typeof ret !== "number") { - ret = d2.body[method5]; - } - } - return ret; -} -function offset2(el) { - const rect = el.getBoundingClientRect(); - const pos = { - left: rect.left, - top: rect.top - }; - const doc = el.ownerDocument; - const w2 = doc.defaultView || doc.parentWindow; - pos.left += getScroll3(w2); - pos.top += getScroll3(w2, true); - return pos; -} - -// node_modules/ant-design-vue/es/vc-dialog/Content.js -var sentinelStyle = { - width: 0, - height: 0, - overflow: "hidden", - outline: "none" -}; -var Content_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "DialogContent", - inheritAttrs: false, - props: _extends(_extends({}, IDialogPropTypes_default()), { - motionName: String, - ariaId: String, - onVisibleChanged: Function, - onMousedown: Function, - onMouseup: Function - }), - setup(props4, _ref) { - let { - expose, - slots, - attrs - } = _ref; - const sentinelStartRef = ref(); - const sentinelEndRef = ref(); - const dialogRef = ref(); - expose({ - focus: () => { - var _a2; - (_a2 = sentinelStartRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - changeActive: (next2) => { - const { - activeElement - } = document; - if (next2 && activeElement === sentinelEndRef.value) { - sentinelStartRef.value.focus(); - } else if (!next2 && activeElement === sentinelStartRef.value) { - sentinelEndRef.value.focus(); - } - } - }); - const transformOrigin = ref(); - const contentStyleRef = computed(() => { - const { - width, - height - } = props4; - const contentStyle = {}; - if (width !== void 0) { - contentStyle.width = typeof width === "number" ? `${width}px` : width; - } - if (height !== void 0) { - contentStyle.height = typeof height === "number" ? `${height}px` : height; - } - if (transformOrigin.value) { - contentStyle.transformOrigin = transformOrigin.value; - } - return contentStyle; - }); - const onPrepare = () => { - nextTick(() => { - if (dialogRef.value) { - const elementOffset = offset2(dialogRef.value); - transformOrigin.value = props4.mousePosition ? `${props4.mousePosition.x - elementOffset.left}px ${props4.mousePosition.y - elementOffset.top}px` : ""; - } - }); - }; - const onVisibleChanged = (visible) => { - props4.onVisibleChanged(visible); - }; - return () => { - var _a2, _b, _c, _d; - const { - prefixCls, - footer = (_a2 = slots.footer) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - title = (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots), - ariaId, - closable, - closeIcon = (_c = slots.closeIcon) === null || _c === void 0 ? void 0 : _c.call(slots), - onClose, - bodyStyle, - bodyProps, - onMousedown, - onMouseup, - visible, - modalRender = slots.modalRender, - destroyOnClose, - motionName - } = props4; - let footerNode; - if (footer) { - footerNode = createVNode("div", { - "class": `${prefixCls}-footer` - }, [footer]); - } - let headerNode; - if (title) { - headerNode = createVNode("div", { - "class": `${prefixCls}-header` - }, [createVNode("div", { - "class": `${prefixCls}-title`, - "id": ariaId - }, [title])]); - } - let closer; - if (closable) { - closer = createVNode("button", { - "type": "button", - "onClick": onClose, - "aria-label": "Close", - "class": `${prefixCls}-close` - }, [closeIcon || createVNode("span", { - "class": `${prefixCls}-close-x` - }, null)]); - } - const content = createVNode("div", { - "class": `${prefixCls}-content` - }, [closer, headerNode, createVNode("div", _objectSpread2({ - "class": `${prefixCls}-body`, - "style": bodyStyle - }, bodyProps), [(_d = slots.default) === null || _d === void 0 ? void 0 : _d.call(slots)]), footerNode]); - const transitionProps = getTransitionProps(motionName); - return createVNode(transition_default, _objectSpread2(_objectSpread2({}, transitionProps), {}, { - "onBeforeEnter": onPrepare, - "onAfterEnter": () => onVisibleChanged(true), - "onAfterLeave": () => onVisibleChanged(false) - }), { - default: () => [visible || !destroyOnClose ? withDirectives(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "ref": dialogRef, - "key": "dialog-element", - "role": "document", - "style": [contentStyleRef.value, attrs.style], - "class": [prefixCls, attrs.class], - "onMousedown": onMousedown, - "onMouseup": onMouseup - }), [createVNode("div", { - "tabindex": 0, - "ref": sentinelStartRef, - "style": sentinelStyle, - "aria-hidden": "true" - }, null), modalRender ? modalRender({ - originVNode: content - }) : content, createVNode("div", { - "tabindex": 0, - "ref": sentinelEndRef, - "style": sentinelStyle, - "aria-hidden": "true" - }, null)]), [[vShow, visible]]) : null] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-dialog/Mask.js -var Mask_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "DialogMask", - props: { - prefixCls: String, - visible: Boolean, - motionName: String, - maskProps: Object - }, - setup(props4, _ref) { - let {} = _ref; - return () => { - const { - prefixCls, - visible, - maskProps, - motionName - } = props4; - const transitionProps = getTransitionProps(motionName); - return createVNode(transition_default, transitionProps, { - default: () => [withDirectives(createVNode("div", _objectSpread2({ - "class": `${prefixCls}-mask` - }, maskProps), null), [[vShow, visible]])] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-dialog/Dialog.js -var Dialog_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "VcDialog", - inheritAttrs: false, - props: initDefaultProps_default(_extends(_extends({}, IDialogPropTypes_default()), { - getOpenCount: Function, - scrollLocker: Object - }), { - mask: true, - visible: false, - keyboard: true, - closable: true, - maskClosable: true, - destroyOnClose: false, - prefixCls: "rc-dialog", - getOpenCount: () => null, - focusTriggerAfterClose: true - }), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const lastOutSideActiveElementRef = shallowRef(); - const wrapperRef = shallowRef(); - const contentRef = shallowRef(); - const animatedVisible = shallowRef(props4.visible); - const ariaIdRef = shallowRef(`vcDialogTitle${getUUID2()}`); - const onDialogVisibleChanged = (newVisible) => { - var _a2, _b; - if (newVisible) { - if (!contains(wrapperRef.value, document.activeElement)) { - lastOutSideActiveElementRef.value = document.activeElement; - (_a2 = contentRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - } - } else { - const preAnimatedVisible = animatedVisible.value; - animatedVisible.value = false; - if (props4.mask && lastOutSideActiveElementRef.value && props4.focusTriggerAfterClose) { - try { - lastOutSideActiveElementRef.value.focus({ - preventScroll: true - }); - } catch (e3) { - } - lastOutSideActiveElementRef.value = null; - } - if (preAnimatedVisible) { - (_b = props4.afterClose) === null || _b === void 0 ? void 0 : _b.call(props4); - } - } - }; - const onInternalClose = (e3) => { - var _a2; - (_a2 = props4.onClose) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }; - const contentClickRef = shallowRef(false); - const contentTimeoutRef = shallowRef(); - const onContentMouseDown = () => { - clearTimeout(contentTimeoutRef.value); - contentClickRef.value = true; - }; - const onContentMouseUp = () => { - contentTimeoutRef.value = setTimeout(() => { - contentClickRef.value = false; - }); - }; - const onWrapperClick = (e3) => { - if (!props4.maskClosable) return null; - if (contentClickRef.value) { - contentClickRef.value = false; - } else if (wrapperRef.value === e3.target) { - onInternalClose(e3); - } - }; - const onWrapperKeyDown = (e3) => { - if (props4.keyboard && e3.keyCode === KeyCode_default.ESC) { - e3.stopPropagation(); - onInternalClose(e3); - return; - } - if (props4.visible) { - if (e3.keyCode === KeyCode_default.TAB) { - contentRef.value.changeActive(!e3.shiftKey); - } - } - }; - watch(() => props4.visible, () => { - if (props4.visible) { - animatedVisible.value = true; - } - }, { - flush: "post" - }); - onBeforeUnmount(() => { - var _a2; - clearTimeout(contentTimeoutRef.value); - (_a2 = props4.scrollLocker) === null || _a2 === void 0 ? void 0 : _a2.unLock(); - }); - watchEffect(() => { - var _a2, _b; - (_a2 = props4.scrollLocker) === null || _a2 === void 0 ? void 0 : _a2.unLock(); - if (animatedVisible.value) { - (_b = props4.scrollLocker) === null || _b === void 0 ? void 0 : _b.lock(); - } - }); - return () => { - const { - prefixCls, - mask, - visible, - maskTransitionName, - maskAnimation, - zIndex, - wrapClassName, - rootClassName, - wrapStyle, - closable, - maskProps, - maskStyle, - transitionName: transitionName2, - animation, - wrapProps, - title = slots.title - } = props4; - const { - style, - class: className - } = attrs; - return createVNode("div", _objectSpread2({ - "class": [`${prefixCls}-root`, rootClassName] - }, pickAttrs(props4, { - data: true - })), [createVNode(Mask_default, { - "prefixCls": prefixCls, - "visible": mask && visible, - "motionName": getMotionName(prefixCls, maskTransitionName, maskAnimation), - "style": _extends({ - zIndex - }, maskStyle), - "maskProps": maskProps - }, null), createVNode("div", _objectSpread2({ - "tabIndex": -1, - "onKeydown": onWrapperKeyDown, - "class": classNames_default(`${prefixCls}-wrap`, wrapClassName), - "ref": wrapperRef, - "onClick": onWrapperClick, - "role": "dialog", - "aria-labelledby": title ? ariaIdRef.value : null, - "style": _extends(_extends({ - zIndex - }, wrapStyle), { - display: !animatedVisible.value ? "none" : null - }) - }, wrapProps), [createVNode(Content_default2, _objectSpread2(_objectSpread2({}, omit_default(props4, ["scrollLocker"])), {}, { - "style": style, - "class": className, - "onMousedown": onContentMouseDown, - "onMouseup": onContentMouseUp, - "ref": contentRef, - "closable": closable, - "ariaId": ariaIdRef.value, - "prefixCls": prefixCls, - "visible": visible, - "onClose": onInternalClose, - "onVisibleChanged": onDialogVisibleChanged, - "motionName": getMotionName(prefixCls, transitionName2, animation) - }), slots)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-dialog/DialogWrap.js -var IDialogPropTypes = IDialogPropTypes_default(); -var DialogWrap = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "DialogWrap", - inheritAttrs: false, - props: initDefaultProps_default(IDialogPropTypes, { - visible: false - }), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const animatedVisible = ref(props4.visible); - useProvidePortal({}, { - inTriggerContext: false - }); - watch(() => props4.visible, () => { - if (props4.visible) { - animatedVisible.value = true; - } - }, { - flush: "post" - }); - return () => { - const { - visible, - getContainer: getContainer3, - forceRender, - destroyOnClose = false, - afterClose - } = props4; - let dialogProps = _extends(_extends(_extends({}, props4), attrs), { - ref: "_component", - key: "dialog" - }); - if (getContainer3 === false) { - return createVNode(Dialog_default, _objectSpread2(_objectSpread2({}, dialogProps), {}, { - "getOpenCount": () => 2 - }), slots); - } - if (!forceRender && destroyOnClose && !animatedVisible.value) { - return null; - } - return createVNode(PortalWrapper_default, { - "autoLock": true, - "visible": visible, - "forceRender": forceRender, - "getContainer": getContainer3 - }, { - default: (childProps) => { - dialogProps = _extends(_extends(_extends({}, dialogProps), childProps), { - afterClose: () => { - afterClose === null || afterClose === void 0 ? void 0 : afterClose(); - animatedVisible.value = false; - } - }); - return createVNode(Dialog_default, dialogProps, slots); - } - }); - }; - } -}); -var DialogWrap_default = DialogWrap; - -// node_modules/ant-design-vue/es/vc-dialog/index.js -var vc_dialog_default = DialogWrap_default; - -// node_modules/ant-design-vue/es/vc-image/src/hooks/useFrameSetState.js -function useFrameSetState(initial2) { - const frame = ref(null); - const state = reactive(_extends({}, initial2)); - const queue = ref([]); - const setFrameState = (newState) => { - if (frame.value === null) { - queue.value = []; - frame.value = wrapperRaf(() => { - let memoState; - queue.value.forEach((queueState) => { - memoState = _extends(_extends({}, memoState), queueState); - }); - _extends(state, memoState); - frame.value = null; - }); - } - queue.value.push(newState); - }; - onMounted(() => { - frame.value && wrapperRaf.cancel(frame.value); - }); - return [state, setFrameState]; -} - -// node_modules/ant-design-vue/es/vc-image/src/getFixScaleEleTransPosition.js -function fixPoint(key2, start, width, clientWidth) { - const startAddWidth = start + width; - const offsetStart = (width - clientWidth) / 2; - if (width > clientWidth) { - if (start > 0) { - return { - [key2]: offsetStart - }; - } - if (start < 0 && startAddWidth < clientWidth) { - return { - [key2]: -offsetStart - }; - } - } else if (start < 0 || startAddWidth > clientWidth) { - return { - [key2]: start < 0 ? offsetStart : -offsetStart - }; - } - return {}; -} -function getFixScaleEleTransPosition(width, height, left, top) { - const { - width: clientWidth, - height: clientHeight - } = getClientSize(); - let fixPos = null; - if (width <= clientWidth && height <= clientHeight) { - fixPos = { - x: 0, - y: 0 - }; - } else if (width > clientWidth || height > clientHeight) { - fixPos = _extends(_extends({}, fixPoint("x", left, width, clientWidth)), fixPoint("y", top, height, clientHeight)); - } - return fixPos; -} - -// node_modules/ant-design-vue/es/vc-image/src/PreviewGroup.js -var __rest43 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var previewGroupContext = Symbol("previewGroupContext"); -var context = { - provide: (val) => { - provide(previewGroupContext, val); - }, - inject: () => { - return inject(previewGroupContext, { - isPreviewGroup: shallowRef(false), - previewUrls: computed(() => /* @__PURE__ */ new Map()), - setPreviewUrls: () => { - }, - current: ref(null), - setCurrent: () => { - }, - setShowPreview: () => { - }, - setMousePosition: () => { - }, - registerImage: null, - rootClassName: "" - }); - } -}; -var imageGroupProps = () => ({ - previewPrefixCls: String, - preview: { - type: [Boolean, Object], - default: true - }, - icons: { - type: Object, - default: () => ({}) - } -}); -var Group2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "PreviewGroup", - inheritAttrs: false, - props: imageGroupProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const preview = computed(() => { - const defaultValues = { - visible: void 0, - onVisibleChange: () => { - }, - getContainer: void 0, - current: 0 - }; - return typeof props4.preview === "object" ? mergeDefaultValue(props4.preview, defaultValues) : defaultValues; - }); - const previewUrls = reactive(/* @__PURE__ */ new Map()); - const current = ref(); - const previewVisible = computed(() => preview.value.visible); - const getPreviewContainer = computed(() => preview.value.getContainer); - const onPreviewVisibleChange = (val, preval) => { - var _a2, _b; - (_b = (_a2 = preview.value).onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(_a2, val, preval); - }; - const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible.value, { - value: previewVisible, - onChange: onPreviewVisibleChange - }); - const mousePosition2 = ref(null); - const isControlled = computed(() => previewVisible.value !== void 0); - const previewUrlsKeys = computed(() => Array.from(previewUrls.keys())); - const currentControlledKey = computed(() => previewUrlsKeys.value[preview.value.current]); - const canPreviewUrls = computed(() => new Map(Array.from(previewUrls).filter((_ref2) => { - let [, { - canPreview - }] = _ref2; - return !!canPreview; - }).map((_ref3) => { - let [id, { - url: url2 - }] = _ref3; - return [id, url2]; - }))); - const setPreviewUrls = function(id, url2) { - let canPreview = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - previewUrls.set(id, { - url: url2, - canPreview - }); - }; - const setCurrent = (val) => { - current.value = val; - }; - const setMousePosition = (val) => { - mousePosition2.value = val; - }; - const registerImage = function(id, url2) { - let canPreview = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true; - const unRegister = () => { - previewUrls.delete(id); - }; - previewUrls.set(id, { - url: url2, - canPreview - }); - return unRegister; - }; - const onPreviewClose = (e3) => { - e3 === null || e3 === void 0 ? void 0 : e3.stopPropagation(); - setShowPreview(false); - setMousePosition(null); - }; - watch(currentControlledKey, (val) => { - setCurrent(val); - }, { - immediate: true, - flush: "post" - }); - watchEffect(() => { - if (isShowPreview.value && isControlled.value) { - setCurrent(currentControlledKey.value); - } - }, { - flush: "post" - }); - context.provide({ - isPreviewGroup: shallowRef(true), - previewUrls: canPreviewUrls, - setPreviewUrls, - current, - setCurrent, - setShowPreview, - setMousePosition, - registerImage - }); - return () => { - const dialogProps = __rest43(preview.value, []); - return createVNode(Fragment, null, [slots.default && slots.default(), createVNode(Preview_default, _objectSpread2(_objectSpread2({}, dialogProps), {}, { - "ria-hidden": !isShowPreview.value, - "visible": isShowPreview.value, - "prefixCls": props4.previewPrefixCls, - "onClose": onPreviewClose, - "mousePosition": mousePosition2.value, - "src": canPreviewUrls.value.get(current.value), - "icons": props4.icons, - "getContainer": getPreviewContainer.value - }), null)]); - }; - } -}); -var PreviewGroup_default = Group2; - -// node_modules/ant-design-vue/es/vc-image/src/Preview.js -var initialPosition = { - x: 0, - y: 0 -}; -var previewProps = _extends(_extends({}, dialogPropTypes()), { - src: String, - alt: String, - rootClassName: String, - icons: { - type: Object, - default: () => ({}) - } -}); -var Preview = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Preview", - inheritAttrs: false, - props: previewProps, - emits: ["close", "afterClose"], - setup(props4, _ref) { - let { - emit, - attrs - } = _ref; - const { - rotateLeft, - rotateRight, - zoomIn: zoomIn2, - zoomOut: zoomOut2, - close, - left, - right, - flipX, - flipY - } = reactive(props4.icons); - const scale = shallowRef(1); - const rotate = shallowRef(0); - const flip3 = reactive({ - x: 1, - y: 1 - }); - const [position2, setPosition] = useFrameSetState(initialPosition); - const onClose = () => emit("close"); - const imgRef = shallowRef(); - const originPositionRef = reactive({ - originX: 0, - originY: 0, - deltaX: 0, - deltaY: 0 - }); - const isMoving = shallowRef(false); - const groupContext = context.inject(); - const { - previewUrls, - current, - isPreviewGroup, - setCurrent - } = groupContext; - const previewGroupCount = computed(() => previewUrls.value.size); - const previewUrlsKeys = computed(() => Array.from(previewUrls.value.keys())); - const currentPreviewIndex = computed(() => previewUrlsKeys.value.indexOf(current.value)); - const combinationSrc = computed(() => { - return isPreviewGroup.value ? previewUrls.value.get(current.value) : props4.src; - }); - const showLeftOrRightSwitches = computed(() => isPreviewGroup.value && previewGroupCount.value > 1); - const lastWheelZoomDirection = shallowRef({ - wheelDirection: 0 - }); - const onAfterClose = () => { - scale.value = 1; - rotate.value = 0; - flip3.x = 1; - flip3.y = 1; - setPosition(initialPosition); - emit("afterClose"); - }; - const onZoomIn = (isWheel) => { - if (!isWheel) { - scale.value++; - } else { - scale.value += 0.5; - } - setPosition(initialPosition); - }; - const onZoomOut = (isWheel) => { - if (scale.value > 1) { - if (!isWheel) { - scale.value--; - } else { - scale.value -= 0.5; - } - } - setPosition(initialPosition); - }; - const onRotateRight = () => { - rotate.value += 90; - }; - const onRotateLeft = () => { - rotate.value -= 90; - }; - const onFlipX = () => { - flip3.x = -flip3.x; - }; - const onFlipY = () => { - flip3.y = -flip3.y; - }; - const onSwitchLeft = (event) => { - event.preventDefault(); - event.stopPropagation(); - if (currentPreviewIndex.value > 0) { - setCurrent(previewUrlsKeys.value[currentPreviewIndex.value - 1]); - } - }; - const onSwitchRight = (event) => { - event.preventDefault(); - event.stopPropagation(); - if (currentPreviewIndex.value < previewGroupCount.value - 1) { - setCurrent(previewUrlsKeys.value[currentPreviewIndex.value + 1]); - } - }; - const wrapClassName = classNames_default({ - [`${props4.prefixCls}-moving`]: isMoving.value - }); - const toolClassName = `${props4.prefixCls}-operations-operation`; - const iconClassName = `${props4.prefixCls}-operations-icon`; - const tools = [{ - icon: close, - onClick: onClose, - type: "close" - }, { - icon: zoomIn2, - onClick: () => onZoomIn(), - type: "zoomIn" - }, { - icon: zoomOut2, - onClick: () => onZoomOut(), - type: "zoomOut", - disabled: computed(() => scale.value === 1) - }, { - icon: rotateRight, - onClick: onRotateRight, - type: "rotateRight" - }, { - icon: rotateLeft, - onClick: onRotateLeft, - type: "rotateLeft" - }, { - icon: flipX, - onClick: onFlipX, - type: "flipX" - }, { - icon: flipY, - onClick: onFlipY, - type: "flipY" - }]; - const onMouseUp = () => { - if (props4.visible && isMoving.value) { - const width = imgRef.value.offsetWidth * scale.value; - const height = imgRef.value.offsetHeight * scale.value; - const { - left: left2, - top - } = getOffset4(imgRef.value); - const isRotate = rotate.value % 180 !== 0; - isMoving.value = false; - const fixState = getFixScaleEleTransPosition(isRotate ? height : width, isRotate ? width : height, left2, top); - if (fixState) { - setPosition(_extends({}, fixState)); - } - } - }; - const onMouseDown = (event) => { - if (event.button !== 0) return; - event.preventDefault(); - event.stopPropagation(); - originPositionRef.deltaX = event.pageX - position2.x; - originPositionRef.deltaY = event.pageY - position2.y; - originPositionRef.originX = position2.x; - originPositionRef.originY = position2.y; - isMoving.value = true; - }; - const onMouseMove = (event) => { - if (props4.visible && isMoving.value) { - setPosition({ - x: event.pageX - originPositionRef.deltaX, - y: event.pageY - originPositionRef.deltaY - }); - } - }; - const onWheelMove = (event) => { - if (!props4.visible) return; - event.preventDefault(); - const wheelDirection = event.deltaY; - lastWheelZoomDirection.value = { - wheelDirection - }; - }; - const onKeyDown2 = (event) => { - if (!props4.visible || !showLeftOrRightSwitches.value) return; - event.preventDefault(); - if (event.keyCode === KeyCode_default.LEFT) { - if (currentPreviewIndex.value > 0) { - setCurrent(previewUrlsKeys.value[currentPreviewIndex.value - 1]); - } - } else if (event.keyCode === KeyCode_default.RIGHT) { - if (currentPreviewIndex.value < previewGroupCount.value - 1) { - setCurrent(previewUrlsKeys.value[currentPreviewIndex.value + 1]); - } - } - }; - const onDoubleClick = () => { - if (props4.visible) { - if (scale.value !== 1) { - scale.value = 1; - } - if (position2.x !== initialPosition.x || position2.y !== initialPosition.y) { - setPosition(initialPosition); - } - } - }; - let removeListeners = () => { - }; - onMounted(() => { - watch([() => props4.visible, isMoving], () => { - removeListeners(); - let onTopMouseUpListener; - let onTopMouseMoveListener; - const onMouseUpListener = addEventListenerWrap(window, "mouseup", onMouseUp, false); - const onMouseMoveListener = addEventListenerWrap(window, "mousemove", onMouseMove, false); - const onScrollWheelListener = addEventListenerWrap(window, "wheel", onWheelMove, { - passive: false - }); - const onKeyDownListener = addEventListenerWrap(window, "keydown", onKeyDown2, false); - try { - if (window.top !== window.self) { - onTopMouseUpListener = addEventListenerWrap(window.top, "mouseup", onMouseUp, false); - onTopMouseMoveListener = addEventListenerWrap(window.top, "mousemove", onMouseMove, false); - } - } catch (error) { - warning(false, `[vc-image] ${error}`); - } - removeListeners = () => { - onMouseUpListener.remove(); - onMouseMoveListener.remove(); - onScrollWheelListener.remove(); - onKeyDownListener.remove(); - if (onTopMouseUpListener) onTopMouseUpListener.remove(); - if (onTopMouseMoveListener) onTopMouseMoveListener.remove(); - }; - }, { - flush: "post", - immediate: true - }); - watch([lastWheelZoomDirection], () => { - const { - wheelDirection - } = lastWheelZoomDirection.value; - if (wheelDirection > 0) { - onZoomOut(true); - } else if (wheelDirection < 0) { - onZoomIn(true); - } - }); - }); - onUnmounted(() => { - removeListeners(); - }); - return () => { - const { - visible, - prefixCls, - rootClassName - } = props4; - return createVNode(vc_dialog_default, _objectSpread2(_objectSpread2({}, attrs), {}, { - "transitionName": props4.transitionName, - "maskTransitionName": props4.maskTransitionName, - "closable": false, - "keyboard": true, - "prefixCls": prefixCls, - "onClose": onClose, - "afterClose": onAfterClose, - "visible": visible, - "wrapClassName": wrapClassName, - "rootClassName": rootClassName, - "getContainer": props4.getContainer - }), { - default: () => [createVNode("div", { - "class": [`${props4.prefixCls}-operations-wrapper`, rootClassName] - }, [createVNode("ul", { - "class": `${props4.prefixCls}-operations` - }, [tools.map((_ref2) => { - let { - icon: IconType, - onClick, - type: type4, - disabled - } = _ref2; - return createVNode("li", { - "class": classNames_default(toolClassName, { - [`${props4.prefixCls}-operations-operation-disabled`]: disabled && (disabled === null || disabled === void 0 ? void 0 : disabled.value) - }), - "onClick": onClick, - "key": type4 - }, [cloneVNode(IconType, { - class: iconClassName - })]); - })])]), createVNode("div", { - "class": `${props4.prefixCls}-img-wrapper`, - "style": { - transform: `translate3d(${position2.x}px, ${position2.y}px, 0)` - } - }, [createVNode("img", { - "onMousedown": onMouseDown, - "onDblclick": onDoubleClick, - "ref": imgRef, - "class": `${props4.prefixCls}-img`, - "src": combinationSrc.value, - "alt": props4.alt, - "style": { - transform: `scale3d(${flip3.x * scale.value}, ${flip3.y * scale.value}, 1) rotate(${rotate.value}deg)` - } - }, null)]), showLeftOrRightSwitches.value && createVNode("div", { - "class": classNames_default(`${props4.prefixCls}-switch-left`, { - [`${props4.prefixCls}-switch-left-disabled`]: currentPreviewIndex.value <= 0 - }), - "onClick": onSwitchLeft - }, [left]), showLeftOrRightSwitches.value && createVNode("div", { - "class": classNames_default(`${props4.prefixCls}-switch-right`, { - [`${props4.prefixCls}-switch-right-disabled`]: currentPreviewIndex.value >= previewGroupCount.value - 1 - }), - "onClick": onSwitchRight - }, [right])] - }); - }; - } -}); -var Preview_default = Preview; - -// node_modules/ant-design-vue/es/vc-image/src/Image.js -var __rest44 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var imageProps = () => ({ - src: String, - wrapperClassName: String, - wrapperStyle: { - type: Object, - default: void 0 - }, - rootClassName: String, - prefixCls: String, - previewPrefixCls: String, - previewMask: { - type: [Boolean, Function], - default: void 0 - }, - placeholder: vue_types_default.any, - fallback: String, - preview: { - type: [Boolean, Object], - default: true - }, - onClick: { - type: Function - }, - onError: { - type: Function - } -}); -var mergeDefaultValue = (obj, defaultValues) => { - const res = _extends({}, obj); - Object.keys(defaultValues).forEach((key2) => { - if (obj[key2] === void 0) { - res[key2] = defaultValues[key2]; - } - }); - return res; -}; -var uuid6 = 0; -var ImageInternal = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "VcImage", - inheritAttrs: false, - props: imageProps(), - emits: ["click", "error"], - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const prefixCls = computed(() => props4.prefixCls); - const previewPrefixCls = computed(() => `${prefixCls.value}-preview`); - const preview = computed(() => { - const defaultValues = { - visible: void 0, - onVisibleChange: () => { - }, - getContainer: void 0 - }; - return typeof props4.preview === "object" ? mergeDefaultValue(props4.preview, defaultValues) : defaultValues; - }); - const src = computed(() => { - var _a2; - return (_a2 = preview.value.src) !== null && _a2 !== void 0 ? _a2 : props4.src; - }); - const isCustomPlaceholder = computed(() => props4.placeholder && props4.placeholder !== true || slots.placeholder); - const previewVisible = computed(() => preview.value.visible); - const getPreviewContainer = computed(() => preview.value.getContainer); - const isControlled = computed(() => previewVisible.value !== void 0); - const onPreviewVisibleChange = (val, preval) => { - var _a2, _b; - (_b = (_a2 = preview.value).onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(_a2, val, preval); - }; - const [isShowPreview, setShowPreview] = useMergedState(!!previewVisible.value, { - value: previewVisible, - onChange: onPreviewVisibleChange - }); - const status = ref(isCustomPlaceholder.value ? "loading" : "normal"); - watch(() => props4.src, () => { - status.value = isCustomPlaceholder.value ? "loading" : "normal"; - }); - const mousePosition2 = ref(null); - const isError2 = computed(() => status.value === "error"); - const groupContext = context.inject(); - const { - isPreviewGroup, - setCurrent, - setShowPreview: setGroupShowPreview, - setMousePosition: setGroupMousePosition, - registerImage - } = groupContext; - const currentId = ref(uuid6++); - const canPreview = computed(() => props4.preview && !isError2.value); - const onLoad = () => { - status.value = "normal"; - }; - const onError = (e3) => { - status.value = "error"; - emit("error", e3); - }; - const onPreview = (e3) => { - if (!isControlled.value) { - const { - left, - top - } = getOffset4(e3.target); - if (isPreviewGroup.value) { - setCurrent(currentId.value); - setGroupMousePosition({ - x: left, - y: top - }); - } else { - mousePosition2.value = { - x: left, - y: top - }; - } - } - if (isPreviewGroup.value) { - setGroupShowPreview(true); - } else { - setShowPreview(true); - } - emit("click", e3); - }; - const onPreviewClose = () => { - setShowPreview(false); - if (!isControlled.value) { - mousePosition2.value = null; - } - }; - const img = ref(null); - watch(() => img, () => { - if (status.value !== "loading") return; - if (img.value.complete && (img.value.naturalWidth || img.value.naturalHeight)) { - onLoad(); - } - }); - let unRegister = () => { - }; - onMounted(() => { - watch([src, canPreview], () => { - unRegister(); - if (!isPreviewGroup.value) { - return () => { - }; - } - unRegister = registerImage(currentId.value, src.value, canPreview.value); - if (!canPreview.value) { - unRegister(); - } - }, { - flush: "post", - immediate: true - }); - }); - onUnmounted(() => { - unRegister(); - }); - const toSizePx = (l2) => { - if (isNumber_default(l2)) return l2 + "px"; - return l2; - }; - return () => { - const { - prefixCls: prefixCls2, - wrapperClassName, - fallback, - src: imgSrc, - placeholder, - wrapperStyle: wrapperStyle2, - rootClassName - } = props4; - const { - width, - height, - crossorigin, - decoding, - alt, - sizes: sizes2, - srcset, - usemap, - class: cls, - style - } = attrs; - const _a2 = preview.value, { - icons: icons2, - maskClassName - } = _a2, dialogProps = __rest44(_a2, ["icons", "maskClassName"]); - const wrappperClass = classNames_default(prefixCls2, wrapperClassName, rootClassName, { - [`${prefixCls2}-error`]: isError2.value - }); - const mergedSrc = isError2.value && fallback ? fallback : src.value; - const imgCommonProps = { - crossorigin, - decoding, - alt, - sizes: sizes2, - srcset, - usemap, - width, - height, - class: classNames_default(`${prefixCls2}-img`, { - [`${prefixCls2}-img-placeholder`]: placeholder === true - }, cls), - style: _extends({ - height: toSizePx(height) - }, style) - }; - return createVNode(Fragment, null, [createVNode("div", { - "class": wrappperClass, - "onClick": canPreview.value ? onPreview : (e3) => { - emit("click", e3); - }, - "style": _extends({ - width: toSizePx(width), - height: toSizePx(height) - }, wrapperStyle2) - }, [createVNode("img", _objectSpread2(_objectSpread2(_objectSpread2({}, imgCommonProps), isError2.value && fallback ? { - src: fallback - } : { - onLoad, - onError, - src: imgSrc - }), {}, { - "ref": img - }), null), status.value === "loading" && createVNode("div", { - "aria-hidden": "true", - "class": `${prefixCls2}-placeholder` - }, [placeholder || slots.placeholder && slots.placeholder()]), slots.previewMask && canPreview.value && createVNode("div", { - "class": [`${prefixCls2}-mask`, maskClassName] - }, [slots.previewMask()])]), !isPreviewGroup.value && canPreview.value && createVNode(Preview_default, _objectSpread2(_objectSpread2({}, dialogProps), {}, { - "aria-hidden": !isShowPreview.value, - "visible": isShowPreview.value, - "prefixCls": previewPrefixCls.value, - "onClose": onPreviewClose, - "mousePosition": mousePosition2.value, - "src": mergedSrc, - "alt": alt, - "getContainer": getPreviewContainer.value, - "icons": icons2, - "rootClassName": rootClassName - }), null)]); - }; - } -}); -ImageInternal.PreviewGroup = PreviewGroup_default; -var Image_default2 = ImageInternal; - -// node_modules/ant-design-vue/es/vc-image/index.js -var vc_image_default = Image_default2; - -// node_modules/ant-design-vue/es/modal/style/index.js -function box(position2) { - return { - position: position2, - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0 - }; -} -var genModalMaskStyle = (token2) => { - const { - componentCls - } = token2; - return [{ - [`${componentCls}-root`]: { - [`${componentCls}${token2.antCls}-zoom-enter, ${componentCls}${token2.antCls}-zoom-appear`]: { - // reset scale avoid mousePosition bug - transform: "none", - opacity: 0, - animationDuration: token2.motionDurationSlow, - // https://github.com/ant-design/ant-design/issues/11777 - userSelect: "none" - }, - [`${componentCls}${token2.antCls}-zoom-leave ${componentCls}-content`]: { - pointerEvents: "none" - }, - [`${componentCls}-mask`]: _extends(_extends({}, box("fixed")), { - zIndex: token2.zIndexPopupBase, - height: "100%", - backgroundColor: token2.colorBgMask, - [`${componentCls}-hidden`]: { - display: "none" - } - }), - [`${componentCls}-wrap`]: _extends(_extends({}, box("fixed")), { - overflow: "auto", - outline: 0, - WebkitOverflowScrolling: "touch" - }) - } - }, { - [`${componentCls}-root`]: initFadeMotion(token2) - }]; -}; -var genModalStyle = (token2) => { - const { - componentCls - } = token2; - return [ - // ======================== Root ========================= - { - [`${componentCls}-root`]: { - [`${componentCls}-wrap`]: { - zIndex: token2.zIndexPopupBase, - position: "fixed", - inset: 0, - overflow: "auto", - outline: 0, - WebkitOverflowScrolling: "touch" - }, - [`${componentCls}-wrap-rtl`]: { - direction: "rtl" - }, - [`${componentCls}-centered`]: { - textAlign: "center", - "&::before": { - display: "inline-block", - width: 0, - height: "100%", - verticalAlign: "middle", - content: '""' - }, - [componentCls]: { - top: 0, - display: "inline-block", - paddingBottom: 0, - textAlign: "start", - verticalAlign: "middle" - } - }, - [`@media (max-width: ${token2.screenSMMax})`]: { - [componentCls]: { - maxWidth: "calc(100vw - 16px)", - margin: `${token2.marginXS} auto` - }, - [`${componentCls}-centered`]: { - [componentCls]: { - flex: 1 - } - } - } - } - }, - // ======================== Modal ======================== - { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - pointerEvents: "none", - position: "relative", - top: 100, - width: "auto", - maxWidth: `calc(100vw - ${token2.margin * 2}px)`, - margin: "0 auto", - paddingBottom: token2.paddingLG, - [`${componentCls}-title`]: { - margin: 0, - color: token2.modalHeadingColor, - fontWeight: token2.fontWeightStrong, - fontSize: token2.modalHeaderTitleFontSize, - lineHeight: token2.modalHeaderTitleLineHeight, - wordWrap: "break-word" - }, - [`${componentCls}-content`]: { - position: "relative", - backgroundColor: token2.modalContentBg, - backgroundClip: "padding-box", - border: 0, - borderRadius: token2.borderRadiusLG, - boxShadow: token2.boxShadowSecondary, - pointerEvents: "auto", - padding: `${token2.paddingMD}px ${token2.paddingContentHorizontalLG}px` - }, - [`${componentCls}-close`]: _extends({ - position: "absolute", - top: (token2.modalHeaderCloseSize - token2.modalCloseBtnSize) / 2, - insetInlineEnd: (token2.modalHeaderCloseSize - token2.modalCloseBtnSize) / 2, - zIndex: token2.zIndexPopupBase + 10, - padding: 0, - color: token2.modalCloseColor, - fontWeight: token2.fontWeightStrong, - lineHeight: 1, - textDecoration: "none", - background: "transparent", - borderRadius: token2.borderRadiusSM, - width: token2.modalConfirmIconSize, - height: token2.modalConfirmIconSize, - border: 0, - outline: 0, - cursor: "pointer", - transition: `color ${token2.motionDurationMid}, background-color ${token2.motionDurationMid}`, - "&-x": { - display: "block", - fontSize: token2.fontSizeLG, - fontStyle: "normal", - lineHeight: `${token2.modalCloseBtnSize}px`, - textAlign: "center", - textTransform: "none", - textRendering: "auto" - }, - "&:hover": { - color: token2.modalIconHoverColor, - backgroundColor: token2.wireframe ? "transparent" : token2.colorFillContent, - textDecoration: "none" - }, - "&:active": { - backgroundColor: token2.wireframe ? "transparent" : token2.colorFillContentHover - } - }, genFocusStyle(token2)), - [`${componentCls}-header`]: { - color: token2.colorText, - background: token2.modalHeaderBg, - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0`, - marginBottom: token2.marginXS - }, - [`${componentCls}-body`]: { - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - wordWrap: "break-word" - }, - [`${componentCls}-footer`]: { - textAlign: "end", - background: token2.modalFooterBg, - marginTop: token2.marginSM, - [`${token2.antCls}-btn + ${token2.antCls}-btn:not(${token2.antCls}-dropdown-trigger)`]: { - marginBottom: 0, - marginInlineStart: token2.marginXS - } - }, - [`${componentCls}-open`]: { - overflow: "hidden" - } - }) - }, - // ======================== Pure ========================= - { - [`${componentCls}-pure-panel`]: { - top: "auto", - padding: 0, - display: "flex", - flexDirection: "column", - [`${componentCls}-content, - ${componentCls}-body, - ${componentCls}-confirm-body-wrapper`]: { - display: "flex", - flexDirection: "column", - flex: "auto" - }, - [`${componentCls}-confirm-body`]: { - marginBottom: "auto" - } - } - } - ]; -}; -var genModalConfirmStyle = (token2) => { - const { - componentCls - } = token2; - const confirmComponentCls = `${componentCls}-confirm`; - return { - [confirmComponentCls]: { - "&-rtl": { - direction: "rtl" - }, - [`${token2.antCls}-modal-header`]: { - display: "none" - }, - [`${confirmComponentCls}-body-wrapper`]: _extends({}, clearFix()), - [`${confirmComponentCls}-body`]: { - display: "flex", - flexWrap: "wrap", - alignItems: "center", - [`${confirmComponentCls}-title`]: { - flex: "0 0 100%", - display: "block", - // create BFC to avoid - // https://user-images.githubusercontent.com/507615/37702510-ba844e06-2d2d-11e8-9b67-8e19be57f445.png - overflow: "hidden", - color: token2.colorTextHeading, - fontWeight: token2.fontWeightStrong, - fontSize: token2.modalHeaderTitleFontSize, - lineHeight: token2.modalHeaderTitleLineHeight, - [`+ ${confirmComponentCls}-content`]: { - marginBlockStart: token2.marginXS, - flexBasis: "100%", - maxWidth: `calc(100% - ${token2.modalConfirmIconSize + token2.marginSM}px)` - } - }, - [`${confirmComponentCls}-content`]: { - color: token2.colorText, - fontSize: token2.fontSize - }, - [`> ${token2.iconCls}`]: { - flex: "none", - marginInlineEnd: token2.marginSM, - fontSize: token2.modalConfirmIconSize, - [`+ ${confirmComponentCls}-title`]: { - flex: 1 - }, - // `content` after `icon` should set marginLeft - [`+ ${confirmComponentCls}-title + ${confirmComponentCls}-content`]: { - marginInlineStart: token2.modalConfirmIconSize + token2.marginSM - } - } - }, - [`${confirmComponentCls}-btns`]: { - textAlign: "end", - marginTop: token2.marginSM, - [`${token2.antCls}-btn + ${token2.antCls}-btn`]: { - marginBottom: 0, - marginInlineStart: token2.marginXS - } - } - }, - [`${confirmComponentCls}-error ${confirmComponentCls}-body > ${token2.iconCls}`]: { - color: token2.colorError - }, - [`${confirmComponentCls}-warning ${confirmComponentCls}-body > ${token2.iconCls}, - ${confirmComponentCls}-confirm ${confirmComponentCls}-body > ${token2.iconCls}`]: { - color: token2.colorWarning - }, - [`${confirmComponentCls}-info ${confirmComponentCls}-body > ${token2.iconCls}`]: { - color: token2.colorInfo - }, - [`${confirmComponentCls}-success ${confirmComponentCls}-body > ${token2.iconCls}`]: { - color: token2.colorSuccess - }, - // https://github.com/ant-design/ant-design/issues/37329 - [`${componentCls}-zoom-leave ${componentCls}-btns`]: { - pointerEvents: "none" - } - }; -}; -var genRTLStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-root`]: { - [`${componentCls}-wrap-rtl`]: { - direction: "rtl", - [`${componentCls}-confirm-body`]: { - direction: "rtl" - } - } - } - }; -}; -var genWireframeStyle2 = (token2) => { - const { - componentCls, - antCls - } = token2; - const confirmComponentCls = `${componentCls}-confirm`; - return { - [componentCls]: { - [`${componentCls}-content`]: { - padding: 0 - }, - [`${componentCls}-header`]: { - padding: token2.modalHeaderPadding, - borderBottom: `${token2.modalHeaderBorderWidth}px ${token2.modalHeaderBorderStyle} ${token2.modalHeaderBorderColorSplit}`, - marginBottom: 0 - }, - [`${componentCls}-body`]: { - padding: token2.modalBodyPadding - }, - [`${componentCls}-footer`]: { - padding: `${token2.modalFooterPaddingVertical}px ${token2.modalFooterPaddingHorizontal}px`, - borderTop: `${token2.modalFooterBorderWidth}px ${token2.modalFooterBorderStyle} ${token2.modalFooterBorderColorSplit}`, - borderRadius: `0 0 ${token2.borderRadiusLG}px ${token2.borderRadiusLG}px`, - marginTop: 0 - } - }, - [confirmComponentCls]: { - [`${antCls}-modal-body`]: { - padding: `${token2.padding * 2}px ${token2.padding * 2}px ${token2.paddingLG}px` - }, - [`${confirmComponentCls}-body`]: { - [`> ${token2.iconCls}`]: { - marginInlineEnd: token2.margin, - // `content` after `icon` should set marginLeft - [`+ ${confirmComponentCls}-title + ${confirmComponentCls}-content`]: { - marginInlineStart: token2.modalConfirmIconSize + token2.margin - } - } - }, - [`${confirmComponentCls}-btns`]: { - marginTop: token2.marginLG - } - } - }; -}; -var style_default37 = genComponentStyleHook("Modal", (token2) => { - const headerPaddingVertical = token2.padding; - const headerFontSize = token2.fontSizeHeading5; - const headerLineHeight = token2.lineHeightHeading5; - const modalToken = merge(token2, { - modalBodyPadding: token2.paddingLG, - modalHeaderBg: token2.colorBgElevated, - modalHeaderPadding: `${headerPaddingVertical}px ${token2.paddingLG}px`, - modalHeaderBorderWidth: token2.lineWidth, - modalHeaderBorderStyle: token2.lineType, - modalHeaderTitleLineHeight: headerLineHeight, - modalHeaderTitleFontSize: headerFontSize, - modalHeaderBorderColorSplit: token2.colorSplit, - modalHeaderCloseSize: headerLineHeight * headerFontSize + headerPaddingVertical * 2, - modalContentBg: token2.colorBgElevated, - modalHeadingColor: token2.colorTextHeading, - modalCloseColor: token2.colorTextDescription, - modalFooterBg: "transparent", - modalFooterBorderColorSplit: token2.colorSplit, - modalFooterBorderStyle: token2.lineType, - modalFooterPaddingVertical: token2.paddingXS, - modalFooterPaddingHorizontal: token2.padding, - modalFooterBorderWidth: token2.lineWidth, - modalConfirmTitleFontSize: token2.fontSizeLG, - modalIconHoverColor: token2.colorIconHover, - modalConfirmIconSize: token2.fontSize * token2.lineHeight, - modalCloseBtnSize: token2.controlHeightLG * 0.55 - }); - return [genModalStyle(modalToken), genModalConfirmStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), token2.wireframe && genWireframeStyle2(modalToken), initZoomMotion(modalToken, "zoom")]; -}); - -// node_modules/ant-design-vue/es/image/style/index.js -var genBoxStyle = (position2) => ({ - position: position2 || "absolute", - inset: 0 -}); -var genImageMaskStyle = (token2) => { - const { - iconCls, - motionDurationSlow, - paddingXXS, - marginXXS, - prefixCls - } = token2; - return { - position: "absolute", - inset: 0, - display: "flex", - alignItems: "center", - justifyContent: "center", - color: "#fff", - background: new TinyColor("#000").setAlpha(0.5).toRgbString(), - cursor: "pointer", - opacity: 0, - transition: `opacity ${motionDurationSlow}`, - [`.${prefixCls}-mask-info`]: _extends(_extends({}, textEllipsis), { - padding: `0 ${paddingXXS}px`, - [iconCls]: { - marginInlineEnd: marginXXS, - svg: { - verticalAlign: "baseline" - } - } - }) - }; -}; -var genPreviewOperationsStyle = (token2) => { - const { - previewCls, - modalMaskBg, - paddingSM, - previewOperationColorDisabled, - motionDurationSlow - } = token2; - const operationBg = new TinyColor(modalMaskBg).setAlpha(0.1); - const operationBgHover = operationBg.clone().setAlpha(0.2); - return { - [`${previewCls}-operations`]: _extends(_extends({}, resetComponent(token2)), { - display: "flex", - flexDirection: "row-reverse", - alignItems: "center", - color: token2.previewOperationColor, - listStyle: "none", - background: operationBg.toRgbString(), - pointerEvents: "auto", - "&-operation": { - marginInlineStart: paddingSM, - padding: paddingSM, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - userSelect: "none", - "&:hover": { - background: operationBgHover.toRgbString() - }, - "&-disabled": { - color: previewOperationColorDisabled, - pointerEvents: "none" - }, - "&:last-of-type": { - marginInlineStart: 0 - } - }, - "&-progress": { - position: "absolute", - left: { - _skip_check_: true, - value: "50%" - }, - transform: "translateX(-50%)" - }, - "&-icon": { - fontSize: token2.previewOperationSize - } - }) - }; -}; -var genPreviewSwitchStyle = (token2) => { - const { - modalMaskBg, - iconCls, - previewOperationColorDisabled, - previewCls, - zIndexPopup, - motionDurationSlow - } = token2; - const operationBg = new TinyColor(modalMaskBg).setAlpha(0.1); - const operationBgHover = operationBg.clone().setAlpha(0.2); - return { - [`${previewCls}-switch-left, ${previewCls}-switch-right`]: { - position: "fixed", - insetBlockStart: "50%", - zIndex: zIndexPopup + 1, - display: "flex", - alignItems: "center", - justifyContent: "center", - width: token2.imagePreviewSwitchSize, - height: token2.imagePreviewSwitchSize, - marginTop: -token2.imagePreviewSwitchSize / 2, - color: token2.previewOperationColor, - background: operationBg.toRgbString(), - borderRadius: "50%", - transform: `translateY(-50%)`, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - pointerEvents: "auto", - userSelect: "none", - "&:hover": { - background: operationBgHover.toRgbString() - }, - [`&-disabled`]: { - "&, &:hover": { - color: previewOperationColorDisabled, - background: "transparent", - cursor: "not-allowed", - [`> ${iconCls}`]: { - cursor: "not-allowed" - } - } - }, - [`> ${iconCls}`]: { - fontSize: token2.previewOperationSize - } - }, - [`${previewCls}-switch-left`]: { - insetInlineStart: token2.marginSM - }, - [`${previewCls}-switch-right`]: { - insetInlineEnd: token2.marginSM - } - }; -}; -var genImagePreviewStyle = (token2) => { - const { - motionEaseOut, - previewCls, - motionDurationSlow, - componentCls - } = token2; - return [ - { - [`${componentCls}-preview-root`]: { - [previewCls]: { - height: "100%", - textAlign: "center", - pointerEvents: "none" - }, - [`${previewCls}-body`]: _extends(_extends({}, genBoxStyle()), { - overflow: "hidden" - }), - [`${previewCls}-img`]: { - maxWidth: "100%", - maxHeight: "100%", - verticalAlign: "middle", - transform: "scale3d(1, 1, 1)", - cursor: "grab", - transition: `transform ${motionDurationSlow} ${motionEaseOut} 0s`, - userSelect: "none", - pointerEvents: "auto", - "&-wrapper": _extends(_extends({}, genBoxStyle()), { - transition: `transform ${motionDurationSlow} ${motionEaseOut} 0s`, - // https://github.com/ant-design/ant-design/issues/39913 - // TailwindCSS will reset img default style. - // Let's set back. - display: "flex", - justifyContent: "center", - alignItems: "center", - "&::before": { - display: "inline-block", - width: 1, - height: "50%", - marginInlineEnd: -1, - content: '""' - } - }) - }, - [`${previewCls}-moving`]: { - [`${previewCls}-preview-img`]: { - cursor: "grabbing", - "&-wrapper": { - transitionDuration: "0s" - } - } - } - } - }, - // Override - { - [`${componentCls}-preview-root`]: { - [`${previewCls}-wrap`]: { - zIndex: token2.zIndexPopup - } - } - }, - // Preview operations & switch - { - [`${componentCls}-preview-operations-wrapper`]: { - position: "fixed", - insetBlockStart: 0, - insetInlineEnd: 0, - zIndex: token2.zIndexPopup + 1, - width: "100%" - }, - "&": [genPreviewOperationsStyle(token2), genPreviewSwitchStyle(token2)] - } - ]; -}; -var genImageStyle = (token2) => { - const { - componentCls - } = token2; - return { - // ============================== image ============================== - [componentCls]: { - position: "relative", - display: "inline-block", - [`${componentCls}-img`]: { - width: "100%", - height: "auto", - verticalAlign: "middle" - }, - [`${componentCls}-img-placeholder`]: { - backgroundColor: token2.colorBgContainerDisabled, - backgroundImage: "url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')", - backgroundRepeat: "no-repeat", - backgroundPosition: "center center", - backgroundSize: "30%" - }, - [`${componentCls}-mask`]: _extends({}, genImageMaskStyle(token2)), - [`${componentCls}-mask:hover`]: { - opacity: 1 - }, - [`${componentCls}-placeholder`]: _extends({}, genBoxStyle()) - } - }; -}; -var genPreviewMotion = (token2) => { - const { - previewCls - } = token2; - return { - [`${previewCls}-root`]: initZoomMotion(token2, "zoom"), - [`&`]: initFadeMotion(token2, true) - }; -}; -var style_default38 = genComponentStyleHook("Image", (token2) => { - const previewCls = `${token2.componentCls}-preview`; - const imageToken = merge(token2, { - previewCls, - modalMaskBg: new TinyColor("#000").setAlpha(0.45).toRgbString(), - imagePreviewSwitchSize: token2.controlHeightLG - }); - return [genImageStyle(imageToken), genImagePreviewStyle(imageToken), genModalMaskStyle(merge(imageToken, { - componentCls: previewCls - })), genPreviewMotion(imageToken)]; -}, (token2) => ({ - zIndexPopup: token2.zIndexPopupBase + 80, - previewOperationColor: new TinyColor(token2.colorTextLightSolid).toRgbString(), - previewOperationColorDisabled: new TinyColor(token2.colorTextLightSolid).setAlpha(0.25).toRgbString(), - previewOperationSize: token2.fontSizeIcon * 1.5 - // FIXME: fontSizeIconLG -})); - -// node_modules/ant-design-vue/es/image/PreviewGroup.js -var icons = { - rotateLeft: createVNode(RotateLeftOutlined_default, null, null), - rotateRight: createVNode(RotateRightOutlined_default, null, null), - zoomIn: createVNode(ZoomInOutlined_default, null, null), - zoomOut: createVNode(ZoomOutOutlined_default, null, null), - close: createVNode(CloseOutlined_default, null, null), - left: createVNode(LeftOutlined_default, null, null), - right: createVNode(RightOutlined_default, null, null), - flipX: createVNode(SwapOutlined_default, null, null), - flipY: createVNode(SwapOutlined_default, { - "rotate": 90 - }, null) -}; -var previewGroupProps = () => ({ - previewPrefixCls: String, - preview: anyType() -}); -var InternalPreviewGroup = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AImagePreviewGroup", - inheritAttrs: false, - props: previewGroupProps(), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - prefixCls, - rootPrefixCls - } = useConfigInject_default("image", props4); - const previewPrefixCls = computed(() => `${prefixCls.value}-preview`); - const [wrapSSR, hashId] = style_default38(prefixCls); - const mergedPreview = computed(() => { - const { - preview - } = props4; - if (preview === false) { - return preview; - } - const _preview = typeof preview === "object" ? preview : {}; - return _extends(_extends({}, _preview), { - rootClassName: hashId.value, - transitionName: getTransitionName2(rootPrefixCls.value, "zoom", _preview.transitionName), - maskTransitionName: getTransitionName2(rootPrefixCls.value, "fade", _preview.maskTransitionName) - }); - }); - return () => { - return wrapSSR(createVNode(PreviewGroup_default, _objectSpread2(_objectSpread2({}, _extends(_extends({}, attrs), props4)), {}, { - "preview": mergedPreview.value, - "icons": icons, - "previewPrefixCls": previewPrefixCls.value - }), slots)); - }; - } -}); -var PreviewGroup_default2 = InternalPreviewGroup; - -// node_modules/ant-design-vue/es/image/index.js -var Image2 = defineComponent({ - name: "AImage", - inheritAttrs: false, - props: imageProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - rootPrefixCls, - configProvider - } = useConfigInject_default("image", props4); - const [wrapSSR, hashId] = style_default38(prefixCls); - const mergedPreview = computed(() => { - const { - preview - } = props4; - if (preview === false) { - return preview; - } - const _preview = typeof preview === "object" ? preview : {}; - return _extends(_extends({ - icons - }, _preview), { - transitionName: getTransitionName2(rootPrefixCls.value, "zoom", _preview.transitionName), - maskTransitionName: getTransitionName2(rootPrefixCls.value, "fade", _preview.maskTransitionName) - }); - }); - return () => { - var _a2, _b; - const imageLocale = ((_b = (_a2 = configProvider.locale) === null || _a2 === void 0 ? void 0 : _a2.value) === null || _b === void 0 ? void 0 : _b.Image) || en_US_default6.Image; - const defaultPreviewMask = () => createVNode("div", { - "class": `${prefixCls.value}-mask-info` - }, [createVNode(EyeOutlined_default, null, null), imageLocale === null || imageLocale === void 0 ? void 0 : imageLocale.preview]); - const { - previewMask = slots.previewMask || defaultPreviewMask - } = props4; - return wrapSSR(createVNode(vc_image_default, _objectSpread2(_objectSpread2({}, _extends(_extends(_extends({}, attrs), props4), { - prefixCls: prefixCls.value - })), {}, { - "preview": mergedPreview.value, - "rootClassName": classNames_default(props4.rootClassName, hashId.value) - }), _extends(_extends({}, slots), { - previewMask: typeof previewMask === "function" ? previewMask : null - }))); - }; - } -}); -Image2.PreviewGroup = PreviewGroup_default2; -Image2.install = function(app) { - app.component(Image2.name, Image2); - app.component(Image2.PreviewGroup.name, Image2.PreviewGroup); - return app; -}; -var image_default = Image2; - -// node_modules/ant-design-vue/es/input-number/src/utils/supportUtil.js -function supportBigInt() { - return typeof BigInt === "function"; -} - -// node_modules/ant-design-vue/es/input-number/src/utils/numberUtil.js -function trimNumber(numStr) { - let str = numStr.trim(); - let negative = str.startsWith("-"); - if (negative) { - str = str.slice(1); - } - str = str.replace(/(\.\d*[^0])0*$/, "$1").replace(/\.0*$/, "").replace(/^0+/, ""); - if (str.startsWith(".")) { - str = `0${str}`; - } - const trimStr = str || "0"; - const splitNumber = trimStr.split("."); - const integerStr = splitNumber[0] || "0"; - const decimalStr = splitNumber[1] || "0"; - if (integerStr === "0" && decimalStr === "0") { - negative = false; - } - const negativeStr = negative ? "-" : ""; - return { - negative, - negativeStr, - trimStr, - integerStr, - decimalStr, - fullStr: `${negativeStr}${trimStr}` - }; -} -function isE(number4) { - const str = String(number4); - return !Number.isNaN(Number(str)) && str.includes("e"); -} -function getNumberPrecision(number4) { - const numStr = String(number4); - if (isE(number4)) { - let precision = Number(numStr.slice(numStr.indexOf("e-") + 2)); - const decimalMatch = numStr.match(/\.(\d+)/); - if (decimalMatch === null || decimalMatch === void 0 ? void 0 : decimalMatch[1]) { - precision += decimalMatch[1].length; - } - return precision; - } - return numStr.includes(".") && validateNumber(numStr) ? numStr.length - numStr.indexOf(".") - 1 : 0; -} -function num2str(number4) { - let numStr = String(number4); - if (isE(number4)) { - if (number4 > Number.MAX_SAFE_INTEGER) { - return String(supportBigInt() ? BigInt(number4).toString() : Number.MAX_SAFE_INTEGER); - } - if (number4 < Number.MIN_SAFE_INTEGER) { - return String(supportBigInt() ? BigInt(number4).toString() : Number.MIN_SAFE_INTEGER); - } - numStr = number4.toFixed(getNumberPrecision(numStr)); - } - return trimNumber(numStr).fullStr; -} -function validateNumber(num) { - if (typeof num === "number") { - return !Number.isNaN(num); - } - if (!num) { - return false; - } - return ( - // Normal type: 11.28 - /^\s*-?\d+(\.\d+)?\s*$/.test(num) || // Pre-number: 1. - /^\s*-?\d+\.\s*$/.test(num) || // Post-number: .1 - /^\s*-?\.\d+\s*$/.test(num) - ); -} - -// node_modules/ant-design-vue/es/input-number/src/utils/MiniDecimal.js -function isEmpty2(value) { - return !value && value !== 0 && !Number.isNaN(value) || !String(value).trim(); -} -var NumberDecimal = class _NumberDecimal { - constructor(value) { - this.origin = ""; - if (isEmpty2(value)) { - this.empty = true; - return; - } - this.origin = String(value); - this.number = Number(value); - } - negate() { - return new _NumberDecimal(-this.toNumber()); - } - add(value) { - if (this.isInvalidate()) { - return new _NumberDecimal(value); - } - const target = Number(value); - if (Number.isNaN(target)) { - return this; - } - const number4 = this.number + target; - if (number4 > Number.MAX_SAFE_INTEGER) { - return new _NumberDecimal(Number.MAX_SAFE_INTEGER); - } - if (number4 < Number.MIN_SAFE_INTEGER) { - return new _NumberDecimal(Number.MIN_SAFE_INTEGER); - } - const maxPrecision = Math.max(getNumberPrecision(this.number), getNumberPrecision(target)); - return new _NumberDecimal(number4.toFixed(maxPrecision)); - } - isEmpty() { - return this.empty; - } - isNaN() { - return Number.isNaN(this.number); - } - isInvalidate() { - return this.isEmpty() || this.isNaN(); - } - equals(target) { - return this.toNumber() === (target === null || target === void 0 ? void 0 : target.toNumber()); - } - lessEquals(target) { - return this.add(target.negate().toString()).toNumber() <= 0; - } - toNumber() { - return this.number; - } - toString() { - let safe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - if (!safe) { - return this.origin; - } - if (this.isInvalidate()) { - return ""; - } - return num2str(this.number); - } -}; -var BigIntDecimal = class _BigIntDecimal { - constructor(value) { - this.origin = ""; - if (isEmpty2(value)) { - this.empty = true; - return; - } - this.origin = String(value); - if (value === "-" || Number.isNaN(value)) { - this.nan = true; - return; - } - let mergedValue = value; - if (isE(mergedValue)) { - mergedValue = Number(mergedValue); - } - mergedValue = typeof mergedValue === "string" ? mergedValue : num2str(mergedValue); - if (validateNumber(mergedValue)) { - const trimRet = trimNumber(mergedValue); - this.negative = trimRet.negative; - const numbers = trimRet.trimStr.split("."); - this.integer = BigInt(numbers[0]); - const decimalStr = numbers[1] || "0"; - this.decimal = BigInt(decimalStr); - this.decimalLen = decimalStr.length; - } else { - this.nan = true; - } - } - getMark() { - return this.negative ? "-" : ""; - } - getIntegerStr() { - return this.integer.toString(); - } - getDecimalStr() { - return this.decimal.toString().padStart(this.decimalLen, "0"); - } - /** - * Align BigIntDecimal with same decimal length. e.g. 12.3 + 5 = 1230000 - * This is used for add function only. - */ - alignDecimal(decimalLength) { - const str = `${this.getMark()}${this.getIntegerStr()}${this.getDecimalStr().padEnd(decimalLength, "0")}`; - return BigInt(str); - } - negate() { - const clone3 = new _BigIntDecimal(this.toString()); - clone3.negative = !clone3.negative; - return clone3; - } - add(value) { - if (this.isInvalidate()) { - return new _BigIntDecimal(value); - } - const offset4 = new _BigIntDecimal(value); - if (offset4.isInvalidate()) { - return this; - } - const maxDecimalLength = Math.max(this.getDecimalStr().length, offset4.getDecimalStr().length); - const myAlignedDecimal = this.alignDecimal(maxDecimalLength); - const offsetAlignedDecimal = offset4.alignDecimal(maxDecimalLength); - const valueStr = (myAlignedDecimal + offsetAlignedDecimal).toString(); - const { - negativeStr, - trimStr - } = trimNumber(valueStr); - const hydrateValueStr = `${negativeStr}${trimStr.padStart(maxDecimalLength + 1, "0")}`; - return new _BigIntDecimal(`${hydrateValueStr.slice(0, -maxDecimalLength)}.${hydrateValueStr.slice(-maxDecimalLength)}`); - } - isEmpty() { - return this.empty; - } - isNaN() { - return this.nan; - } - isInvalidate() { - return this.isEmpty() || this.isNaN(); - } - equals(target) { - return this.toString() === (target === null || target === void 0 ? void 0 : target.toString()); - } - lessEquals(target) { - return this.add(target.negate().toString()).toNumber() <= 0; - } - toNumber() { - if (this.isNaN()) { - return NaN; - } - return Number(this.toString()); - } - toString() { - let safe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true; - if (!safe) { - return this.origin; - } - if (this.isInvalidate()) { - return ""; - } - return trimNumber(`${this.getMark()}${this.getIntegerStr()}.${this.getDecimalStr()}`).fullStr; - } -}; -function getMiniDecimal(value) { - if (supportBigInt()) { - return new BigIntDecimal(value); - } - return new NumberDecimal(value); -} -function toFixed2(numStr, separatorStr, precision) { - let cutOnly = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false; - if (numStr === "") { - return ""; - } - const { - negativeStr, - integerStr, - decimalStr - } = trimNumber(numStr); - const precisionDecimalStr = `${separatorStr}${decimalStr}`; - const numberWithoutDecimal = `${negativeStr}${integerStr}`; - if (precision >= 0) { - const advancedNum = Number(decimalStr[precision]); - if (advancedNum >= 5 && !cutOnly) { - const advancedDecimal = getMiniDecimal(numStr).add(`${negativeStr}0.${"0".repeat(precision)}${10 - advancedNum}`); - return toFixed2(advancedDecimal.toString(), separatorStr, precision, cutOnly); - } - if (precision === 0) { - return numberWithoutDecimal; - } - return `${numberWithoutDecimal}${separatorStr}${decimalStr.padEnd(precision, "0").slice(0, precision)}`; - } - if (precisionDecimalStr === ".0") { - return numberWithoutDecimal; - } - return `${numberWithoutDecimal}${precisionDecimalStr}`; -} - -// node_modules/ant-design-vue/es/input-number/src/StepHandler.js -var STEP_INTERVAL = 200; -var STEP_DELAY = 600; -var StepHandler_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "StepHandler", - inheritAttrs: false, - props: { - prefixCls: String, - upDisabled: Boolean, - downDisabled: Boolean, - onStep: functionType() - }, - slots: Object, - setup(props4, _ref) { - let { - slots, - emit - } = _ref; - const stepTimeoutRef = ref(); - const onStepMouseDown = (e3, up) => { - e3.preventDefault(); - emit("step", up); - function loopStep() { - emit("step", up); - stepTimeoutRef.value = setTimeout(loopStep, STEP_INTERVAL); - } - stepTimeoutRef.value = setTimeout(loopStep, STEP_DELAY); - }; - const onStopStep = () => { - clearTimeout(stepTimeoutRef.value); - }; - onBeforeUnmount(() => { - onStopStep(); - }); - return () => { - if (isMobile_default()) { - return null; - } - const { - prefixCls, - upDisabled, - downDisabled - } = props4; - const handlerClassName = `${prefixCls}-handler`; - const upClassName = classNames_default(handlerClassName, `${handlerClassName}-up`, { - [`${handlerClassName}-up-disabled`]: upDisabled - }); - const downClassName = classNames_default(handlerClassName, `${handlerClassName}-down`, { - [`${handlerClassName}-down-disabled`]: downDisabled - }); - const sharedHandlerProps = { - unselectable: "on", - role: "button", - onMouseup: onStopStep, - onMouseleave: onStopStep - }; - const { - upNode, - downNode - } = slots; - return createVNode("div", { - "class": `${handlerClassName}-wrap` - }, [createVNode("span", _objectSpread2(_objectSpread2({}, sharedHandlerProps), {}, { - "onMousedown": (e3) => { - onStepMouseDown(e3, true); - }, - "aria-label": "Increase Value", - "aria-disabled": upDisabled, - "class": upClassName - }), [(upNode === null || upNode === void 0 ? void 0 : upNode()) || createVNode("span", { - "unselectable": "on", - "class": `${prefixCls}-handler-up-inner` - }, null)]), createVNode("span", _objectSpread2(_objectSpread2({}, sharedHandlerProps), {}, { - "onMousedown": (e3) => { - onStepMouseDown(e3, false); - }, - "aria-label": "Decrease Value", - "aria-disabled": downDisabled, - "class": downClassName - }), [(downNode === null || downNode === void 0 ? void 0 : downNode()) || createVNode("span", { - "unselectable": "on", - "class": `${prefixCls}-handler-down-inner` - }, null)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/input-number/src/hooks/useCursor.js -function useCursor(inputRef, focused) { - const selectionRef = ref(null); - function recordCursor() { - try { - const { - selectionStart: start, - selectionEnd: end, - value - } = inputRef.value; - const beforeTxt = value.substring(0, start); - const afterTxt = value.substring(end); - selectionRef.value = { - start, - end, - value, - beforeTxt, - afterTxt - }; - } catch (e3) { - } - } - function restoreCursor() { - if (inputRef.value && selectionRef.value && focused.value) { - try { - const { - value - } = inputRef.value; - const { - beforeTxt, - afterTxt, - start - } = selectionRef.value; - let startPos = value.length; - if (value.endsWith(afterTxt)) { - startPos = value.length - selectionRef.value.afterTxt.length; - } else if (value.startsWith(beforeTxt)) { - startPos = beforeTxt.length; - } else { - const beforeLastChar = beforeTxt[start - 1]; - const newIndex = value.indexOf(beforeLastChar, start - 1); - if (newIndex !== -1) { - startPos = newIndex + 1; - } - } - inputRef.value.setSelectionRange(startPos, startPos); - } catch (e3) { - warning(false, `Something warning of cursor restore. Please fire issue about this: ${e3.message}`); - } - } - } - return [recordCursor, restoreCursor]; -} - -// node_modules/ant-design-vue/es/input-number/src/hooks/useFrame.js -var useFrame_default = () => { - const idRef = shallowRef(0); - const cleanUp = () => { - wrapperRaf.cancel(idRef.value); - }; - onBeforeUnmount(() => { - cleanUp(); - }); - return (callback) => { - cleanUp(); - idRef.value = wrapperRaf(() => { - callback(); - }); - }; -}; - -// node_modules/ant-design-vue/es/input-number/src/InputNumber.js -var __rest45 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var getDecimalValue = (stringMode, decimalValue) => { - if (stringMode || decimalValue.isEmpty()) { - return decimalValue.toString(); - } - return decimalValue.toNumber(); -}; -var getDecimalIfValidate = (value) => { - const decimal = getMiniDecimal(value); - return decimal.isInvalidate() ? null : decimal; -}; -var inputNumberProps = () => ({ - /** value will show as string */ - stringMode: booleanType(), - defaultValue: someType([String, Number]), - value: someType([String, Number]), - prefixCls: stringType(), - min: someType([String, Number]), - max: someType([String, Number]), - step: someType([String, Number], 1), - tabindex: Number, - controls: booleanType(true), - readonly: booleanType(), - disabled: booleanType(), - autofocus: booleanType(), - keyboard: booleanType(true), - /** Parse display value to validate number */ - parser: functionType(), - /** Transform `value` to display value show in input */ - formatter: functionType(), - /** Syntactic sugar of `formatter`. Config precision of display. */ - precision: Number, - /** Syntactic sugar of `formatter`. Config decimal separator of display. */ - decimalSeparator: String, - onInput: functionType(), - onChange: functionType(), - onPressEnter: functionType(), - onStep: functionType(), - onBlur: functionType(), - onFocus: functionType() -}); -var InputNumber_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "InnerInputNumber", - inheritAttrs: false, - props: _extends(_extends({}, inputNumberProps()), { - lazy: Boolean - }), - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots, - emit, - expose - } = _ref; - const inputRef = shallowRef(); - const focus = shallowRef(false); - const userTypingRef = shallowRef(false); - const compositionRef = shallowRef(false); - const decimalValue = shallowRef(getMiniDecimal(props4.value)); - function setUncontrolledDecimalValue(newDecimal) { - if (props4.value === void 0) { - decimalValue.value = newDecimal; - } - } - const getPrecision2 = (numStr, userTyping) => { - if (userTyping) { - return void 0; - } - if (props4.precision >= 0) { - return props4.precision; - } - return Math.max(getNumberPrecision(numStr), getNumberPrecision(props4.step)); - }; - const mergedParser = (num) => { - const numStr = String(num); - if (props4.parser) { - return props4.parser(numStr); - } - let parsedStr = numStr; - if (props4.decimalSeparator) { - parsedStr = parsedStr.replace(props4.decimalSeparator, "."); - } - return parsedStr.replace(/[^\w.-]+/g, ""); - }; - const inputValue = shallowRef(""); - const mergedFormatter = (number4, userTyping) => { - if (props4.formatter) { - return props4.formatter(number4, { - userTyping, - input: String(inputValue.value) - }); - } - let str = typeof number4 === "number" ? num2str(number4) : number4; - if (!userTyping) { - const mergedPrecision = getPrecision2(str, userTyping); - if (validateNumber(str) && (props4.decimalSeparator || mergedPrecision >= 0)) { - const separatorStr = props4.decimalSeparator || "."; - str = toFixed2(str, separatorStr, mergedPrecision); - } - } - return str; - }; - const initValue = (() => { - const initValue2 = props4.value; - if (decimalValue.value.isInvalidate() && ["string", "number"].includes(typeof initValue2)) { - return Number.isNaN(initValue2) ? "" : initValue2; - } - return mergedFormatter(decimalValue.value.toString(), false); - })(); - inputValue.value = initValue; - function setInputValue(newValue, userTyping) { - inputValue.value = mergedFormatter( - // Invalidate number is sometime passed by external control, we should let it go - // Otherwise is controlled by internal interactive logic which check by userTyping - // You can ref 'show limited value when input is not focused' test for more info. - newValue.isInvalidate() ? newValue.toString(false) : newValue.toString(!userTyping), - userTyping - ); - } - const maxDecimal = computed(() => getDecimalIfValidate(props4.max)); - const minDecimal = computed(() => getDecimalIfValidate(props4.min)); - const upDisabled = computed(() => { - if (!maxDecimal.value || !decimalValue.value || decimalValue.value.isInvalidate()) { - return false; - } - return maxDecimal.value.lessEquals(decimalValue.value); - }); - const downDisabled = computed(() => { - if (!minDecimal.value || !decimalValue.value || decimalValue.value.isInvalidate()) { - return false; - } - return decimalValue.value.lessEquals(minDecimal.value); - }); - const [recordCursor, restoreCursor] = useCursor(inputRef, focus); - const getRangeValue = (target) => { - if (maxDecimal.value && !target.lessEquals(maxDecimal.value)) { - return maxDecimal.value; - } - if (minDecimal.value && !minDecimal.value.lessEquals(target)) { - return minDecimal.value; - } - return null; - }; - const isInRange2 = (target) => !getRangeValue(target); - const triggerValueUpdate = (newValue, userTyping) => { - var _a2; - let updateValue = newValue; - let isRangeValidate = isInRange2(updateValue) || updateValue.isEmpty(); - if (!updateValue.isEmpty() && !userTyping) { - updateValue = getRangeValue(updateValue) || updateValue; - isRangeValidate = true; - } - if (!props4.readonly && !props4.disabled && isRangeValidate) { - const numStr = updateValue.toString(); - const mergedPrecision = getPrecision2(numStr, userTyping); - if (mergedPrecision >= 0) { - updateValue = getMiniDecimal(toFixed2(numStr, ".", mergedPrecision)); - } - if (!updateValue.equals(decimalValue.value)) { - setUncontrolledDecimalValue(updateValue); - (_a2 = props4.onChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, updateValue.isEmpty() ? null : getDecimalValue(props4.stringMode, updateValue)); - if (props4.value === void 0) { - setInputValue(updateValue, userTyping); - } - } - return updateValue; - } - return decimalValue.value; - }; - const onNextPromise = useFrame_default(); - const collectInputValue = (inputStr) => { - var _a2; - recordCursor(); - inputValue.value = inputStr; - if (!compositionRef.value) { - const finalValue = mergedParser(inputStr); - const finalDecimal = getMiniDecimal(finalValue); - if (!finalDecimal.isNaN()) { - triggerValueUpdate(finalDecimal, true); - } - } - (_a2 = props4.onInput) === null || _a2 === void 0 ? void 0 : _a2.call(props4, inputStr); - onNextPromise(() => { - let nextInputStr = inputStr; - if (!props4.parser) { - nextInputStr = inputStr.replace(/。/g, "."); - } - if (nextInputStr !== inputStr) { - collectInputValue(nextInputStr); - } - }); - }; - const onCompositionStart2 = () => { - compositionRef.value = true; - }; - const onCompositionEnd2 = () => { - compositionRef.value = false; - collectInputValue(inputRef.value.value); - }; - const onInternalInput = (e3) => { - collectInputValue(e3.target.value); - }; - const onInternalStep = (up) => { - var _a2, _b; - if (up && upDisabled.value || !up && downDisabled.value) { - return; - } - userTypingRef.value = false; - let stepDecimal = getMiniDecimal(props4.step); - if (!up) { - stepDecimal = stepDecimal.negate(); - } - const target = (decimalValue.value || getMiniDecimal(0)).add(stepDecimal.toString()); - const updatedValue = triggerValueUpdate(target, false); - (_a2 = props4.onStep) === null || _a2 === void 0 ? void 0 : _a2.call(props4, getDecimalValue(props4.stringMode, updatedValue), { - offset: props4.step, - type: up ? "up" : "down" - }); - (_b = inputRef.value) === null || _b === void 0 ? void 0 : _b.focus(); - }; - const flushInputValue = (userTyping) => { - const parsedValue = getMiniDecimal(mergedParser(inputValue.value)); - let formatValue2 = parsedValue; - if (!parsedValue.isNaN()) { - formatValue2 = triggerValueUpdate(parsedValue, userTyping); - } else { - formatValue2 = decimalValue.value; - } - if (props4.value !== void 0) { - setInputValue(decimalValue.value, false); - } else if (!formatValue2.isNaN()) { - setInputValue(formatValue2, false); - } - }; - const onKeyDown2 = (event) => { - var _a2; - const { - which - } = event; - userTypingRef.value = true; - if (which === KeyCode_default.ENTER) { - if (!compositionRef.value) { - userTypingRef.value = false; - } - flushInputValue(false); - (_a2 = props4.onPressEnter) === null || _a2 === void 0 ? void 0 : _a2.call(props4, event); - } - if (props4.keyboard === false) { - return; - } - if (!compositionRef.value && [KeyCode_default.UP, KeyCode_default.DOWN].includes(which)) { - onInternalStep(KeyCode_default.UP === which); - event.preventDefault(); - } - }; - const onKeyUp = () => { - userTypingRef.value = false; - }; - const onBlur = (e3) => { - flushInputValue(false); - focus.value = false; - userTypingRef.value = false; - emit("blur", e3); - }; - watch(() => props4.precision, () => { - if (!decimalValue.value.isInvalidate()) { - setInputValue(decimalValue.value, false); - } - }, { - flush: "post" - }); - watch(() => props4.value, () => { - const newValue = getMiniDecimal(props4.value); - decimalValue.value = newValue; - const currentParsedValue = getMiniDecimal(mergedParser(inputValue.value)); - if (!newValue.equals(currentParsedValue) || !userTypingRef.value || props4.formatter) { - setInputValue(newValue, userTypingRef.value); - } - }, { - flush: "post" - }); - watch(inputValue, () => { - if (props4.formatter) { - restoreCursor(); - } - }, { - flush: "post" - }); - watch(() => props4.disabled, (val) => { - if (val) { - focus.value = false; - } - }); - expose({ - focus: () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur: () => { - var _a2; - (_a2 = inputRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - return () => { - const _a2 = _extends(_extends({}, attrs), props4), { - prefixCls = "rc-input-number", - min: min2, - max: max2, - step = 1, - defaultValue, - value, - disabled, - readonly, - keyboard, - controls = true, - autofocus, - stringMode, - parser, - formatter, - precision, - decimalSeparator, - onChange, - onInput, - onPressEnter, - onStep, - lazy, - class: className, - style - } = _a2, inputProps4 = __rest45(_a2, ["prefixCls", "min", "max", "step", "defaultValue", "value", "disabled", "readonly", "keyboard", "controls", "autofocus", "stringMode", "parser", "formatter", "precision", "decimalSeparator", "onChange", "onInput", "onPressEnter", "onStep", "lazy", "class", "style"]); - const { - upHandler, - downHandler - } = slots; - const inputClassName = `${prefixCls}-input`; - const eventProps = {}; - if (lazy) { - eventProps.onChange = onInternalInput; - } else { - eventProps.onInput = onInternalInput; - } - return createVNode("div", { - "class": classNames_default(prefixCls, className, { - [`${prefixCls}-focused`]: focus.value, - [`${prefixCls}-disabled`]: disabled, - [`${prefixCls}-readonly`]: readonly, - [`${prefixCls}-not-a-number`]: decimalValue.value.isNaN(), - [`${prefixCls}-out-of-range`]: !decimalValue.value.isInvalidate() && !isInRange2(decimalValue.value) - }), - "style": style, - "onKeydown": onKeyDown2, - "onKeyup": onKeyUp - }, [controls && createVNode(StepHandler_default, { - "prefixCls": prefixCls, - "upDisabled": upDisabled.value, - "downDisabled": downDisabled.value, - "onStep": onInternalStep - }, { - upNode: upHandler, - downNode: downHandler - }), createVNode("div", { - "class": `${inputClassName}-wrap` - }, [createVNode("input", _objectSpread2(_objectSpread2(_objectSpread2({ - "autofocus": autofocus, - "autocomplete": "off", - "role": "spinbutton", - "aria-valuemin": min2, - "aria-valuemax": max2, - "aria-valuenow": decimalValue.value.isInvalidate() ? null : decimalValue.value.toString(), - "step": step - }, inputProps4), {}, { - "ref": inputRef, - "class": inputClassName, - "value": inputValue.value, - "disabled": disabled, - "readonly": readonly, - "onFocus": (e3) => { - focus.value = true; - emit("focus", e3); - } - }, eventProps), {}, { - "onBlur": onBlur, - "onCompositionstart": onCompositionStart2, - "onCompositionend": onCompositionEnd2 - }), null)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/_util/isValidValue.js -function isValidValue_default(val) { - return val !== void 0 && val !== null; -} - -// node_modules/ant-design-vue/es/input-number/style/index.js -var genInputNumberStyles = (token2) => { - const { - componentCls, - lineWidth, - lineType, - colorBorder, - borderRadius, - fontSizeLG, - controlHeightLG, - controlHeightSM, - colorError, - inputPaddingHorizontalSM, - colorTextDescription, - motionDurationMid, - colorPrimary, - controlHeight, - inputPaddingHorizontal, - colorBgContainer, - colorTextDisabled, - borderRadiusSM, - borderRadiusLG, - controlWidth, - handleVisible - } = token2; - return [ - { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), genBasicInputStyle(token2)), genStatusStyle3(token2, componentCls)), { - display: "inline-block", - width: controlWidth, - margin: 0, - padding: 0, - border: `${lineWidth}px ${lineType} ${colorBorder}`, - borderRadius, - "&-rtl": { - direction: "rtl", - [`${componentCls}-input`]: { - direction: "rtl" - } - }, - "&-lg": { - padding: 0, - fontSize: fontSizeLG, - borderRadius: borderRadiusLG, - [`input${componentCls}-input`]: { - height: controlHeightLG - 2 * lineWidth - } - }, - "&-sm": { - padding: 0, - borderRadius: borderRadiusSM, - [`input${componentCls}-input`]: { - height: controlHeightSM - 2 * lineWidth, - padding: `0 ${inputPaddingHorizontalSM}px` - } - }, - "&:hover": _extends({}, genHoverStyle(token2)), - "&-focused": _extends({}, genActiveStyle(token2)), - "&-disabled": _extends(_extends({}, genDisabledStyle2(token2)), { - [`${componentCls}-input`]: { - cursor: "not-allowed" - } - }), - // ===================== Out Of Range ===================== - "&-out-of-range": { - input: { - color: colorError - } - }, - // Style for input-group: input with label, with button or dropdown... - "&-group": _extends(_extends(_extends({}, resetComponent(token2)), genInputGroupStyle(token2)), { - "&-wrapper": { - display: "inline-block", - textAlign: "start", - verticalAlign: "top", - [`${componentCls}-affix-wrapper`]: { - width: "100%" - }, - // Size - "&-lg": { - [`${componentCls}-group-addon`]: { - borderRadius: borderRadiusLG - } - }, - "&-sm": { - [`${componentCls}-group-addon`]: { - borderRadius: borderRadiusSM - } - } - } - }), - [componentCls]: { - "&-input": _extends(_extends({ - width: "100%", - height: controlHeight - 2 * lineWidth, - padding: `0 ${inputPaddingHorizontal}px`, - textAlign: "start", - backgroundColor: "transparent", - border: 0, - borderRadius, - outline: 0, - transition: `all ${motionDurationMid} linear`, - appearance: "textfield", - color: token2.colorText, - fontSize: "inherit", - verticalAlign: "top" - }, genPlaceholderStyle(token2.colorTextPlaceholder)), { - '&[type="number"]::-webkit-inner-spin-button, &[type="number"]::-webkit-outer-spin-button': { - margin: 0, - /* stylelint-disable-next-line property-no-vendor-prefix */ - webkitAppearance: "none", - appearance: "none" - } - }) - } - }) - }, - // Handler - { - [componentCls]: { - [`&:hover ${componentCls}-handler-wrap, &-focused ${componentCls}-handler-wrap`]: { - opacity: 1 - }, - [`${componentCls}-handler-wrap`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineEnd: 0, - width: token2.handleWidth, - height: "100%", - background: colorBgContainer, - borderStartStartRadius: 0, - borderStartEndRadius: borderRadius, - borderEndEndRadius: borderRadius, - borderEndStartRadius: 0, - opacity: handleVisible === true ? 1 : 0, - display: "flex", - flexDirection: "column", - alignItems: "stretch", - transition: `opacity ${motionDurationMid} linear ${motionDurationMid}`, - // Fix input number inside Menu makes icon too large - // We arise the selector priority by nest selector here - // https://github.com/ant-design/ant-design/issues/14367 - [`${componentCls}-handler`]: { - display: "flex", - alignItems: "center", - justifyContent: "center", - flex: "auto", - height: "40%", - [` - ${componentCls}-handler-up-inner, - ${componentCls}-handler-down-inner - `]: { - marginInlineEnd: 0, - fontSize: token2.handleFontSize - } - } - }, - [`${componentCls}-handler`]: { - height: "50%", - overflow: "hidden", - color: colorTextDescription, - fontWeight: "bold", - lineHeight: 0, - textAlign: "center", - cursor: "pointer", - borderInlineStart: `${lineWidth}px ${lineType} ${colorBorder}`, - transition: `all ${motionDurationMid} linear`, - "&:active": { - background: token2.colorFillAlter - }, - // Hover - "&:hover": { - height: `60%`, - [` - ${componentCls}-handler-up-inner, - ${componentCls}-handler-down-inner - `]: { - color: colorPrimary - } - }, - "&-up-inner, &-down-inner": _extends(_extends({}, resetIcon()), { - color: colorTextDescription, - transition: `all ${motionDurationMid} linear`, - userSelect: "none" - }) - }, - [`${componentCls}-handler-up`]: { - borderStartEndRadius: borderRadius - }, - [`${componentCls}-handler-down`]: { - borderBlockStart: `${lineWidth}px ${lineType} ${colorBorder}`, - borderEndEndRadius: borderRadius - }, - // Disabled - "&-disabled, &-readonly": { - [`${componentCls}-handler-wrap`]: { - display: "none" - } - }, - [` - ${componentCls}-handler-up-disabled, - ${componentCls}-handler-down-disabled - `]: { - cursor: "not-allowed" - }, - [` - ${componentCls}-handler-up-disabled:hover &-handler-up-inner, - ${componentCls}-handler-down-disabled:hover &-handler-down-inner - `]: { - color: colorTextDisabled - } - } - }, - // Border-less - { - [`${componentCls}-borderless`]: { - borderColor: "transparent", - boxShadow: "none", - [`${componentCls}-handler-down`]: { - borderBlockStartWidth: 0 - } - } - } - ]; -}; -var genAffixWrapperStyles = (token2) => { - const { - componentCls, - inputPaddingHorizontal, - inputAffixPadding, - controlWidth, - borderRadiusLG, - borderRadiusSM - } = token2; - return { - [`${componentCls}-affix-wrapper`]: _extends(_extends(_extends({}, genBasicInputStyle(token2)), genStatusStyle3(token2, `${componentCls}-affix-wrapper`)), { - // or number handler will cover form status - position: "relative", - display: "inline-flex", - width: controlWidth, - padding: 0, - paddingInlineStart: inputPaddingHorizontal, - "&-lg": { - borderRadius: borderRadiusLG - }, - "&-sm": { - borderRadius: borderRadiusSM - }, - [`&:not(${componentCls}-affix-wrapper-disabled):hover`]: _extends(_extends({}, genHoverStyle(token2)), { - zIndex: 1 - }), - "&-focused, &:focus": { - zIndex: 1 - }, - "&-disabled": { - [`${componentCls}[disabled]`]: { - background: "transparent" - } - }, - [`> div${componentCls}`]: { - width: "100%", - border: "none", - outline: "none", - [`&${componentCls}-focused`]: { - boxShadow: "none !important" - } - }, - [`input${componentCls}-input`]: { - padding: 0 - }, - "&::before": { - width: 0, - visibility: "hidden", - content: '"\\a0"' - }, - [`${componentCls}-handler-wrap`]: { - zIndex: 2 - }, - [componentCls]: { - "&-prefix, &-suffix": { - display: "flex", - flex: "none", - alignItems: "center", - pointerEvents: "none" - }, - "&-prefix": { - marginInlineEnd: inputAffixPadding - }, - "&-suffix": { - position: "absolute", - insetBlockStart: 0, - insetInlineEnd: 0, - zIndex: 1, - height: "100%", - marginInlineEnd: inputPaddingHorizontal, - marginInlineStart: inputAffixPadding - } - } - }) - }; -}; -var style_default39 = genComponentStyleHook("InputNumber", (token2) => { - const inputNumberToken = initInputToken(token2); - return [ - genInputNumberStyles(inputNumberToken), - genAffixWrapperStyles(inputNumberToken), - // ===================================================== - // == Space Compact == - // ===================================================== - genCompactItemStyle(inputNumberToken) - ]; -}, (token2) => ({ - controlWidth: 90, - handleWidth: token2.controlHeightSM - token2.lineWidth * 2, - handleFontSize: token2.fontSize / 2, - handleVisible: "auto" -})); - -// node_modules/ant-design-vue/es/input-number/index.js -var __rest46 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var baseProps = inputNumberProps(); -var inputNumberProps2 = () => _extends(_extends({}, baseProps), { - size: stringType(), - bordered: booleanType(true), - placeholder: String, - name: String, - id: String, - type: String, - addonBefore: vue_types_default.any, - addonAfter: vue_types_default.any, - prefix: vue_types_default.any, - "onUpdate:value": baseProps.onChange, - valueModifiers: Object, - status: stringType() -}); -var InputNumber = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AInputNumber", - inheritAttrs: false, - props: inputNumberProps2(), - // emits: ['focus', 'blur', 'change', 'input', 'update:value'], - slots: Object, - setup(props4, _ref) { - let { - emit, - expose, - attrs, - slots - } = _ref; - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const { - prefixCls, - size: size2, - direction, - disabled - } = useConfigInject_default("input-number", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const disabledContext = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - const [wrapSSR, hashId] = style_default39(prefixCls); - const mergedSize = computed(() => compactSize.value || size2.value); - const mergedValue = shallowRef(props4.value === void 0 ? props4.defaultValue : props4.value); - const focused = shallowRef(false); - watch(() => props4.value, () => { - mergedValue.value = props4.value; - }); - const inputNumberRef = shallowRef(null); - const focus = () => { - var _a2; - (_a2 = inputNumberRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = inputNumberRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - const handleChange = (val) => { - if (props4.value === void 0) { - mergedValue.value = val; - } - emit("update:value", val); - emit("change", val); - formItemContext.onFieldChange(); - }; - const handleBlur = (e3) => { - focused.value = false; - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const handleFocus = (e3) => { - focused.value = true; - emit("focus", e3); - }; - return () => { - var _a2, _b, _c, _d; - const { - hasFeedback, - isFormItemInput, - feedbackIcon - } = formItemInputContext; - const id = (_a2 = props4.id) !== null && _a2 !== void 0 ? _a2 : formItemContext.id.value; - const _e = _extends(_extends(_extends({}, attrs), props4), { - id, - disabled: mergedDisabled.value - }), { - class: className, - bordered, - readonly, - style, - addonBefore = (_b = slots.addonBefore) === null || _b === void 0 ? void 0 : _b.call(slots), - addonAfter = (_c = slots.addonAfter) === null || _c === void 0 ? void 0 : _c.call(slots), - prefix: prefix2 = (_d = slots.prefix) === null || _d === void 0 ? void 0 : _d.call(slots), - valueModifiers = {} - } = _e, others = __rest46(_e, ["class", "bordered", "readonly", "style", "addonBefore", "addonAfter", "prefix", "valueModifiers"]); - const preCls = prefixCls.value; - const inputNumberClass = classNames_default({ - [`${preCls}-lg`]: mergedSize.value === "large", - [`${preCls}-sm`]: mergedSize.value === "small", - [`${preCls}-rtl`]: direction.value === "rtl", - [`${preCls}-readonly`]: readonly, - [`${preCls}-borderless`]: !bordered, - [`${preCls}-in-form-item`]: isFormItemInput - }, getStatusClassNames(preCls, mergedStatus.value), className, compactItemClassnames.value, hashId.value); - let element = createVNode(InputNumber_default, _objectSpread2(_objectSpread2({}, omit_default(others, ["size", "defaultValue"])), {}, { - "ref": inputNumberRef, - "lazy": !!valueModifiers.lazy, - "value": mergedValue.value, - "class": inputNumberClass, - "prefixCls": preCls, - "readonly": readonly, - "onChange": handleChange, - "onBlur": handleBlur, - "onFocus": handleFocus - }), { - upHandler: slots.upIcon ? () => createVNode("span", { - "class": `${preCls}-handler-up-inner` - }, [slots.upIcon()]) : () => createVNode(UpOutlined_default, { - "class": `${preCls}-handler-up-inner` - }, null), - downHandler: slots.downIcon ? () => createVNode("span", { - "class": `${preCls}-handler-down-inner` - }, [slots.downIcon()]) : () => createVNode(DownOutlined_default, { - "class": `${preCls}-handler-down-inner` - }, null) - }); - const hasAddon3 = isValidValue_default(addonBefore) || isValidValue_default(addonAfter); - const hasPrefix = isValidValue_default(prefix2); - if (hasPrefix || hasFeedback) { - const affixWrapperCls = classNames_default(`${preCls}-affix-wrapper`, getStatusClassNames(`${preCls}-affix-wrapper`, mergedStatus.value, hasFeedback), { - [`${preCls}-affix-wrapper-focused`]: focused.value, - [`${preCls}-affix-wrapper-disabled`]: mergedDisabled.value, - [`${preCls}-affix-wrapper-sm`]: mergedSize.value === "small", - [`${preCls}-affix-wrapper-lg`]: mergedSize.value === "large", - [`${preCls}-affix-wrapper-rtl`]: direction.value === "rtl", - [`${preCls}-affix-wrapper-readonly`]: readonly, - [`${preCls}-affix-wrapper-borderless`]: !bordered, - // className will go to addon wrapper - [`${className}`]: !hasAddon3 && className - }, hashId.value); - element = createVNode("div", { - "class": affixWrapperCls, - "style": style, - "onClick": focus - }, [hasPrefix && createVNode("span", { - "class": `${preCls}-prefix` - }, [prefix2]), element, hasFeedback && createVNode("span", { - "class": `${preCls}-suffix` - }, [feedbackIcon])]); - } - if (hasAddon3) { - const wrapperClassName = `${preCls}-group`; - const addonClassName = `${wrapperClassName}-addon`; - const addonBeforeNode = addonBefore ? createVNode("div", { - "class": addonClassName - }, [addonBefore]) : null; - const addonAfterNode = addonAfter ? createVNode("div", { - "class": addonClassName - }, [addonAfter]) : null; - const mergedWrapperClassName = classNames_default(`${preCls}-wrapper`, wrapperClassName, { - [`${wrapperClassName}-rtl`]: direction.value === "rtl" - }, hashId.value); - const mergedGroupClassName = classNames_default(`${preCls}-group-wrapper`, { - [`${preCls}-group-wrapper-sm`]: mergedSize.value === "small", - [`${preCls}-group-wrapper-lg`]: mergedSize.value === "large", - [`${preCls}-group-wrapper-rtl`]: direction.value === "rtl" - }, getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus.value, hasFeedback), className, hashId.value); - element = createVNode("div", { - "class": mergedGroupClassName, - "style": style - }, [createVNode("div", { - "class": mergedWrapperClassName - }, [addonBeforeNode && createVNode(NoCompactStyle, null, { - default: () => [createVNode(NoFormStatus, null, { - default: () => [addonBeforeNode] - })] - }), element, addonAfterNode && createVNode(NoCompactStyle, null, { - default: () => [createVNode(NoFormStatus, null, { - default: () => [addonAfterNode] - })] - })])]); - } - return wrapSSR(cloneElement(element, { - style - })); - }; - } -}); -var input_number_default = _extends(InputNumber, { - install: (app) => { - app.component(InputNumber.name, InputNumber); - return app; - } -}); - -// node_modules/ant-design-vue/es/layout/style/light.js -var genLayoutLightStyle = (token2) => { - const { - componentCls, - colorBgContainer, - colorBgBody, - colorText - } = token2; - return { - [`${componentCls}-sider-light`]: { - background: colorBgContainer, - [`${componentCls}-sider-trigger`]: { - color: colorText, - background: colorBgContainer - }, - [`${componentCls}-sider-zero-width-trigger`]: { - color: colorText, - background: colorBgContainer, - border: `1px solid ${colorBgBody}`, - borderInlineStart: 0 - } - } - }; -}; -var light_default = genLayoutLightStyle; - -// node_modules/ant-design-vue/es/layout/style/index.js -var genLayoutStyle = (token2) => { - const { - antCls, - // .ant - componentCls, - // .ant-layout - colorText, - colorTextLightSolid, - colorBgHeader, - colorBgBody, - colorBgTrigger, - layoutHeaderHeight, - layoutHeaderPaddingInline, - layoutHeaderColor, - layoutFooterPadding, - layoutTriggerHeight, - layoutZeroTriggerSize, - motionDurationMid, - motionDurationSlow, - fontSize, - borderRadius - } = token2; - return { - [componentCls]: _extends(_extends({ - display: "flex", - flex: "auto", - flexDirection: "column", - /* fix firefox can't set height smaller than content on flex item */ - minHeight: 0, - background: colorBgBody, - "&, *": { - boxSizing: "border-box" - }, - [`&${componentCls}-has-sider`]: { - flexDirection: "row", - [`> ${componentCls}, > ${componentCls}-content`]: { - // https://segmentfault.com/a/1190000019498300 - width: 0 - } - }, - [`${componentCls}-header, &${componentCls}-footer`]: { - flex: "0 0 auto" - }, - [`${componentCls}-header`]: { - height: layoutHeaderHeight, - paddingInline: layoutHeaderPaddingInline, - color: layoutHeaderColor, - lineHeight: `${layoutHeaderHeight}px`, - background: colorBgHeader, - // Other components/menu/style/index.less line:686 - // Integration with header element so menu items have the same height - [`${antCls}-menu`]: { - lineHeight: "inherit" - } - }, - [`${componentCls}-footer`]: { - padding: layoutFooterPadding, - color: colorText, - fontSize, - background: colorBgBody - }, - [`${componentCls}-content`]: { - flex: "auto", - // fix firefox can't set height smaller than content on flex item - minHeight: 0 - }, - [`${componentCls}-sider`]: { - position: "relative", - // fix firefox can't set width smaller than content on flex item - minWidth: 0, - background: colorBgHeader, - transition: `all ${motionDurationMid}, background 0s`, - "&-children": { - height: "100%", - // Hack for fixing margin collapse bug - // https://github.com/ant-design/ant-design/issues/7967 - // solution from https://stackoverflow.com/a/33132624/3040605 - marginTop: -0.1, - paddingTop: 0.1, - [`${antCls}-menu${antCls}-menu-inline-collapsed`]: { - width: "auto" - } - }, - "&-has-trigger": { - paddingBottom: layoutTriggerHeight - }, - "&-right": { - order: 1 - }, - "&-trigger": { - position: "fixed", - bottom: 0, - zIndex: 1, - height: layoutTriggerHeight, - color: colorTextLightSolid, - lineHeight: `${layoutTriggerHeight}px`, - textAlign: "center", - background: colorBgTrigger, - cursor: "pointer", - transition: `all ${motionDurationMid}` - }, - "&-zero-width": { - "> *": { - overflow: "hidden" - }, - "&-trigger": { - position: "absolute", - top: layoutHeaderHeight, - insetInlineEnd: -layoutZeroTriggerSize, - zIndex: 1, - width: layoutZeroTriggerSize, - height: layoutZeroTriggerSize, - color: colorTextLightSolid, - fontSize: token2.fontSizeXL, - display: "flex", - alignItems: "center", - justifyContent: "center", - background: colorBgHeader, - borderStartStartRadius: 0, - borderStartEndRadius: borderRadius, - borderEndEndRadius: borderRadius, - borderEndStartRadius: 0, - cursor: "pointer", - transition: `background ${motionDurationSlow} ease`, - "&::after": { - position: "absolute", - inset: 0, - background: "transparent", - transition: `all ${motionDurationSlow}`, - content: '""' - }, - "&:hover::after": { - // FIXME: Hardcode, but seems no need to create a token for this - background: `rgba(255, 255, 255, 0.2)` - }, - "&-right": { - insetInlineStart: -layoutZeroTriggerSize, - borderStartStartRadius: borderRadius, - borderStartEndRadius: 0, - borderEndEndRadius: 0, - borderEndStartRadius: borderRadius - } - } - } - } - }, light_default(token2)), { - // RTL - "&-rtl": { - direction: "rtl" - } - }) - }; -}; -var style_default40 = genComponentStyleHook("Layout", (token2) => { - const { - colorText, - controlHeightSM, - controlHeight, - controlHeightLG, - marginXXS - } = token2; - const layoutHeaderPaddingInline = controlHeightLG * 1.25; - const layoutToken = merge(token2, { - // Layout - layoutHeaderHeight: controlHeight * 2, - layoutHeaderPaddingInline, - layoutHeaderColor: colorText, - layoutFooterPadding: `${controlHeightSM}px ${layoutHeaderPaddingInline}px`, - layoutTriggerHeight: controlHeightLG + marginXXS * 2, - layoutZeroTriggerSize: controlHeightLG - }); - return [genLayoutStyle(layoutToken)]; -}, (token2) => { - const { - colorBgLayout - } = token2; - return { - colorBgHeader: "#001529", - colorBgBody: colorBgLayout, - colorBgTrigger: "#002140" - }; -}); - -// node_modules/ant-design-vue/es/layout/layout.js -var basicProps = () => ({ - prefixCls: String, - hasSider: { - type: Boolean, - default: void 0 - }, - tagName: String -}); -function generator(_ref) { - let { - suffixCls, - tagName, - name - } = _ref; - return (BasicComponent) => { - const Adapter = defineComponent({ - compatConfig: { - MODE: 3 - }, - name, - props: basicProps(), - setup(props4, _ref2) { - let { - slots - } = _ref2; - const { - prefixCls - } = useConfigInject_default(suffixCls, props4); - return () => { - const basicComponentProps = _extends(_extends({}, props4), { - prefixCls: prefixCls.value, - tagName - }); - return createVNode(BasicComponent, basicComponentProps, slots); - }; - } - }); - return Adapter; - }; -} -var Basic = defineComponent({ - compatConfig: { - MODE: 3 - }, - props: basicProps(), - setup(props4, _ref3) { - let { - slots - } = _ref3; - return () => createVNode(props4.tagName, { - class: props4.prefixCls - }, slots); - } -}); -var BasicLayout = defineComponent({ - compatConfig: { - MODE: 3 - }, - inheritAttrs: false, - props: basicProps(), - setup(props4, _ref4) { - let { - slots, - attrs - } = _ref4; - const { - prefixCls, - direction - } = useConfigInject_default("", props4); - const [wrapSSR, hashId] = style_default40(prefixCls); - const siders = ref([]); - const siderHookProvider = { - addSider: (id) => { - siders.value = [...siders.value, id]; - }, - removeSider: (id) => { - siders.value = siders.value.filter((currentId) => currentId !== id); - } - }; - provide(SiderHookProviderKey, siderHookProvider); - const divCls = computed(() => { - const { - prefixCls: prefixCls2, - hasSider - } = props4; - return { - [hashId.value]: true, - [`${prefixCls2}`]: true, - [`${prefixCls2}-has-sider`]: typeof hasSider === "boolean" ? hasSider : siders.value.length > 0, - [`${prefixCls2}-rtl`]: direction.value === "rtl" - }; - }); - return () => { - const { - tagName - } = props4; - return wrapSSR(createVNode(tagName, _extends(_extends({}, attrs), { - class: [divCls.value, attrs.class] - }), slots)); - }; - } -}); -var Layout = generator({ - suffixCls: "layout", - tagName: "section", - name: "ALayout" -})(BasicLayout); -var Header2 = generator({ - suffixCls: "layout-header", - tagName: "header", - name: "ALayoutHeader" -})(Basic); -var Footer = generator({ - suffixCls: "layout-footer", - tagName: "footer", - name: "ALayoutFooter" -})(Basic); -var Content = generator({ - suffixCls: "layout-content", - tagName: "main", - name: "ALayoutContent" -})(Basic); -var layout_default = Layout; - -// node_modules/ant-design-vue/es/layout/Sider.js -var dimensionMaxMap = { - xs: "479.98px", - sm: "575.98px", - md: "767.98px", - lg: "991.98px", - xl: "1199.98px", - xxl: "1599.98px", - xxxl: "1999.98px" -}; -var siderProps = () => ({ - prefixCls: String, - collapsible: { - type: Boolean, - default: void 0 - }, - collapsed: { - type: Boolean, - default: void 0 - }, - defaultCollapsed: { - type: Boolean, - default: void 0 - }, - reverseArrow: { - type: Boolean, - default: void 0 - }, - zeroWidthTriggerStyle: { - type: Object, - default: void 0 - }, - trigger: vue_types_default.any, - width: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - collapsedWidth: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - breakpoint: vue_types_default.oneOf(tuple("xs", "sm", "md", "lg", "xl", "xxl", "xxxl")), - theme: vue_types_default.oneOf(tuple("light", "dark")).def("dark"), - onBreakpoint: Function, - onCollapse: Function -}); -var generateId = /* @__PURE__ */ (() => { - let i3 = 0; - return function() { - let prefix2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - i3 += 1; - return `${prefix2}${i3}`; - }; -})(); -var Sider_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ALayoutSider", - inheritAttrs: false, - props: initDefaultProps_default(siderProps(), { - collapsible: false, - defaultCollapsed: false, - reverseArrow: false, - width: 200, - collapsedWidth: 80 - }), - emits: ["breakpoint", "update:collapsed", "collapse"], - setup(props4, _ref) { - let { - emit, - attrs, - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("layout-sider", props4); - const siderHook = inject(SiderHookProviderKey, void 0); - const collapsed = shallowRef(!!(props4.collapsed !== void 0 ? props4.collapsed : props4.defaultCollapsed)); - const below = shallowRef(false); - watch(() => props4.collapsed, () => { - collapsed.value = !!props4.collapsed; - }); - provide(SiderCollapsedKey, collapsed); - const handleSetCollapsed = (value, type4) => { - if (props4.collapsed === void 0) { - collapsed.value = value; - } - emit("update:collapsed", value); - emit("collapse", value, type4); - }; - const responsiveHandlerRef = shallowRef((mql2) => { - below.value = mql2.matches; - emit("breakpoint", mql2.matches); - if (collapsed.value !== mql2.matches) { - handleSetCollapsed(mql2.matches, "responsive"); - } - }); - let mql; - function responsiveHandler(mql2) { - return responsiveHandlerRef.value(mql2); - } - const uniqueId2 = generateId("ant-sider-"); - siderHook && siderHook.addSider(uniqueId2); - onMounted(() => { - watch(() => props4.breakpoint, () => { - try { - mql === null || mql === void 0 ? void 0 : mql.removeEventListener("change", responsiveHandler); - } catch (error) { - mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler); - } - if (typeof window !== "undefined") { - const { - matchMedia - } = window; - if (matchMedia && props4.breakpoint && props4.breakpoint in dimensionMaxMap) { - mql = matchMedia(`(max-width: ${dimensionMaxMap[props4.breakpoint]})`); - try { - mql.addEventListener("change", responsiveHandler); - } catch (error) { - mql.addListener(responsiveHandler); - } - responsiveHandler(mql); - } - } - }, { - immediate: true - }); - }); - onBeforeUnmount(() => { - try { - mql === null || mql === void 0 ? void 0 : mql.removeEventListener("change", responsiveHandler); - } catch (error) { - mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler); - } - siderHook && siderHook.removeSider(uniqueId2); - }); - const toggle = () => { - handleSetCollapsed(!collapsed.value, "clickTrigger"); - }; - return () => { - var _a2, _b; - const pre = prefixCls.value; - const { - collapsedWidth, - width, - reverseArrow, - zeroWidthTriggerStyle, - trigger: trigger2 = (_a2 = slots.trigger) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - collapsible, - theme - } = props4; - const rawWidth = collapsed.value ? collapsedWidth : width; - const siderWidth = isNumeric_default(rawWidth) ? `${rawWidth}px` : String(rawWidth); - const zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? createVNode("span", { - "onClick": toggle, - "class": classNames_default(`${pre}-zero-width-trigger`, `${pre}-zero-width-trigger-${reverseArrow ? "right" : "left"}`), - "style": zeroWidthTriggerStyle - }, [trigger2 || createVNode(BarsOutlined_default, null, null)]) : null; - const iconObj = { - expanded: reverseArrow ? createVNode(RightOutlined_default, null, null) : createVNode(LeftOutlined_default, null, null), - collapsed: reverseArrow ? createVNode(LeftOutlined_default, null, null) : createVNode(RightOutlined_default, null, null) - }; - const status = collapsed.value ? "collapsed" : "expanded"; - const defaultTrigger = iconObj[status]; - const triggerDom = trigger2 !== null ? zeroWidthTrigger || createVNode("div", { - "class": `${pre}-trigger`, - "onClick": toggle, - "style": { - width: siderWidth - } - }, [trigger2 || defaultTrigger]) : null; - const divStyle = [attrs.style, { - flex: `0 0 ${siderWidth}`, - maxWidth: siderWidth, - minWidth: siderWidth, - width: siderWidth - }]; - const siderCls = classNames_default(pre, `${pre}-${theme}`, { - [`${pre}-collapsed`]: !!collapsed.value, - [`${pre}-has-trigger`]: collapsible && trigger2 !== null && !zeroWidthTrigger, - [`${pre}-below`]: !!below.value, - [`${pre}-zero-width`]: parseFloat(siderWidth) === 0 - }, attrs.class); - return createVNode("aside", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": siderCls, - "style": divStyle - }), [createVNode("div", { - "class": `${pre}-children` - }, [(_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)]), collapsible || below.value && zeroWidthTrigger ? triggerDom : null]); - }; - } -}); - -// node_modules/ant-design-vue/es/layout/index.js -var LayoutHeader = Header2; -var LayoutFooter = Footer; -var LayoutSider = Sider_default; -var LayoutContent = Content; -var layout_default2 = _extends(layout_default, { - Header: Header2, - Footer, - Content, - Sider: Sider_default, - install: (app) => { - app.component(layout_default.name, layout_default); - app.component(Header2.name, Header2); - app.component(Footer.name, Footer); - app.component(Sider_default.name, Sider_default); - app.component(Content.name, Content); - return app; - } -}); - -// node_modules/throttle-debounce/esm/index.js -function throttle3(delay2, callback, options) { - var _ref = options || {}, _ref$noTrailing = _ref.noTrailing, noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing, _ref$noLeading = _ref.noLeading, noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading, _ref$debounceMode = _ref.debounceMode, debounceMode = _ref$debounceMode === void 0 ? void 0 : _ref$debounceMode; - var timeoutID; - var cancelled = false; - var lastExec = 0; - function clearExistingTimeout() { - if (timeoutID) { - clearTimeout(timeoutID); - } - } - function cancel(options2) { - var _ref2 = options2 || {}, _ref2$upcomingOnly = _ref2.upcomingOnly, upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly; - clearExistingTimeout(); - cancelled = !upcomingOnly; - } - function wrapper() { - for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) { - arguments_[_key] = arguments[_key]; - } - var self2 = this; - var elapsed = Date.now() - lastExec; - if (cancelled) { - return; - } - function exec() { - lastExec = Date.now(); - callback.apply(self2, arguments_); - } - function clear() { - timeoutID = void 0; - } - if (!noLeading && debounceMode && !timeoutID) { - exec(); - } - clearExistingTimeout(); - if (debounceMode === void 0 && elapsed > delay2) { - if (noLeading) { - lastExec = Date.now(); - if (!noTrailing) { - timeoutID = setTimeout(debounceMode ? clear : exec, delay2); - } - } else { - exec(); - } - } else if (noTrailing !== true) { - timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === void 0 ? delay2 - elapsed : delay2); - } - } - wrapper.cancel = cancel; - return wrapper; -} -function debounce2(delay2, callback, options) { - var _ref = options || {}, _ref$atBegin = _ref.atBegin, atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin; - return throttle3(delay2, callback, { - debounceMode: atBegin !== false - }); -} - -// node_modules/ant-design-vue/es/spin/style/index.js -var antSpinMove = new Keyframes_default("antSpinMove", { - to: { - opacity: 1 - } -}); -var antRotate = new Keyframes_default("antRotate", { - to: { - transform: "rotate(405deg)" - } -}); -var genSpinStyle = (token2) => ({ - [`${token2.componentCls}`]: _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - display: "none", - color: token2.colorPrimary, - textAlign: "center", - verticalAlign: "middle", - opacity: 0, - transition: `transform ${token2.motionDurationSlow} ${token2.motionEaseInOutCirc}`, - "&-spinning": { - position: "static", - display: "inline-block", - opacity: 1 - }, - "&-nested-loading": { - position: "relative", - [`> div > ${token2.componentCls}`]: { - position: "absolute", - top: 0, - insetInlineStart: 0, - zIndex: 4, - display: "block", - width: "100%", - height: "100%", - maxHeight: token2.contentHeight, - [`${token2.componentCls}-dot`]: { - position: "absolute", - top: "50%", - insetInlineStart: "50%", - margin: -token2.spinDotSize / 2 - }, - [`${token2.componentCls}-text`]: { - position: "absolute", - top: "50%", - width: "100%", - paddingTop: (token2.spinDotSize - token2.fontSize) / 2 + 2, - textShadow: `0 1px 2px ${token2.colorBgContainer}` - // FIXME: shadow - }, - [`&${token2.componentCls}-show-text ${token2.componentCls}-dot`]: { - marginTop: -(token2.spinDotSize / 2) - 10 - }, - "&-sm": { - [`${token2.componentCls}-dot`]: { - margin: -token2.spinDotSizeSM / 2 - }, - [`${token2.componentCls}-text`]: { - paddingTop: (token2.spinDotSizeSM - token2.fontSize) / 2 + 2 - }, - [`&${token2.componentCls}-show-text ${token2.componentCls}-dot`]: { - marginTop: -(token2.spinDotSizeSM / 2) - 10 - } - }, - "&-lg": { - [`${token2.componentCls}-dot`]: { - margin: -(token2.spinDotSizeLG / 2) - }, - [`${token2.componentCls}-text`]: { - paddingTop: (token2.spinDotSizeLG - token2.fontSize) / 2 + 2 - }, - [`&${token2.componentCls}-show-text ${token2.componentCls}-dot`]: { - marginTop: -(token2.spinDotSizeLG / 2) - 10 - } - } - }, - [`${token2.componentCls}-container`]: { - position: "relative", - transition: `opacity ${token2.motionDurationSlow}`, - "&::after": { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - zIndex: 10, - width: "100%", - height: "100%", - background: token2.colorBgContainer, - opacity: 0, - transition: `all ${token2.motionDurationSlow}`, - content: '""', - pointerEvents: "none" - } - }, - [`${token2.componentCls}-blur`]: { - clear: "both", - opacity: 0.5, - userSelect: "none", - pointerEvents: "none", - [`&::after`]: { - opacity: 0.4, - pointerEvents: "auto" - } - } - }, - // tip - // ------------------------------ - [`&-tip`]: { - color: token2.spinDotDefault - }, - // dots - // ------------------------------ - [`${token2.componentCls}-dot`]: { - position: "relative", - display: "inline-block", - fontSize: token2.spinDotSize, - width: "1em", - height: "1em", - "&-item": { - position: "absolute", - display: "block", - width: (token2.spinDotSize - token2.marginXXS / 2) / 2, - height: (token2.spinDotSize - token2.marginXXS / 2) / 2, - backgroundColor: token2.colorPrimary, - borderRadius: "100%", - transform: "scale(0.75)", - transformOrigin: "50% 50%", - opacity: 0.3, - animationName: antSpinMove, - animationDuration: "1s", - animationIterationCount: "infinite", - animationTimingFunction: "linear", - animationDirection: "alternate", - "&:nth-child(1)": { - top: 0, - insetInlineStart: 0 - }, - "&:nth-child(2)": { - top: 0, - insetInlineEnd: 0, - animationDelay: "0.4s" - }, - "&:nth-child(3)": { - insetInlineEnd: 0, - bottom: 0, - animationDelay: "0.8s" - }, - "&:nth-child(4)": { - bottom: 0, - insetInlineStart: 0, - animationDelay: "1.2s" - } - }, - "&-spin": { - transform: "rotate(45deg)", - animationName: antRotate, - animationDuration: "1.2s", - animationIterationCount: "infinite", - animationTimingFunction: "linear" - } - }, - // Sizes - // ------------------------------ - // small - [`&-sm ${token2.componentCls}-dot`]: { - fontSize: token2.spinDotSizeSM, - i: { - width: (token2.spinDotSizeSM - token2.marginXXS / 2) / 2, - height: (token2.spinDotSizeSM - token2.marginXXS / 2) / 2 - } - }, - // large - [`&-lg ${token2.componentCls}-dot`]: { - fontSize: token2.spinDotSizeLG, - i: { - width: (token2.spinDotSizeLG - token2.marginXXS) / 2, - height: (token2.spinDotSizeLG - token2.marginXXS) / 2 - } - }, - [`&${token2.componentCls}-show-text ${token2.componentCls}-text`]: { - display: "block" - } - }) -}); -var style_default41 = genComponentStyleHook("Spin", (token2) => { - const spinToken = merge(token2, { - spinDotDefault: token2.colorTextDescription, - spinDotSize: token2.controlHeightLG / 2, - spinDotSizeSM: token2.controlHeightLG * 0.35, - spinDotSizeLG: token2.controlHeight - }); - return [genSpinStyle(spinToken)]; -}, { - contentHeight: 400 -}); - -// node_modules/ant-design-vue/es/spin/Spin.js -var __rest47 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var spinProps = () => ({ - prefixCls: String, - spinning: { - type: Boolean, - default: void 0 - }, - size: String, - wrapperClassName: String, - tip: vue_types_default.any, - delay: Number, - indicator: vue_types_default.any -}); -var defaultIndicator = null; -function shouldDelay(spinning, delay2) { - return !!spinning && !!delay2 && !isNaN(Number(delay2)); -} -function setDefaultIndicator(Content2) { - const Indicator = Content2.indicator; - defaultIndicator = typeof Indicator === "function" ? Indicator : () => createVNode(Indicator, null, null); -} -var Spin_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASpin", - inheritAttrs: false, - props: initDefaultProps_default(spinProps(), { - size: "default", - spinning: true, - wrapperClassName: "" - }), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - prefixCls, - size: size2, - direction - } = useConfigInject_default("spin", props4); - const [wrapSSR, hashId] = style_default41(prefixCls); - const sSpinning = shallowRef(props4.spinning && !shouldDelay(props4.spinning, props4.delay)); - let updateSpinning; - watch([() => props4.spinning, () => props4.delay], () => { - updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning.cancel(); - updateSpinning = debounce2(props4.delay, () => { - sSpinning.value = props4.spinning; - }); - updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning(); - }, { - immediate: true, - flush: "post" - }); - onBeforeUnmount(() => { - updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning.cancel(); - }); - return () => { - var _a2, _b; - const { - class: cls - } = attrs, divProps = __rest47(attrs, ["class"]); - const { - tip = (_a2 = slots.tip) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = props4; - const children = (_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots); - const spinClassName = { - [hashId.value]: true, - [prefixCls.value]: true, - [`${prefixCls.value}-sm`]: size2.value === "small", - [`${prefixCls.value}-lg`]: size2.value === "large", - [`${prefixCls.value}-spinning`]: sSpinning.value, - [`${prefixCls.value}-show-text`]: !!tip, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [cls]: !!cls - }; - function renderIndicator(prefixCls2) { - const dotClassName = `${prefixCls2}-dot`; - let indicator = getPropsSlot(slots, props4, "indicator"); - if (indicator === null) { - return null; - } - if (Array.isArray(indicator)) { - indicator = indicator.length === 1 ? indicator[0] : indicator; - } - if (isVNode(indicator)) { - return cloneVNode(indicator, { - class: dotClassName - }); - } - if (defaultIndicator && isVNode(defaultIndicator())) { - return cloneVNode(defaultIndicator(), { - class: dotClassName - }); - } - return createVNode("span", { - "class": `${dotClassName} ${prefixCls2}-dot-spin` - }, [createVNode("i", { - "class": `${prefixCls2}-dot-item` - }, null), createVNode("i", { - "class": `${prefixCls2}-dot-item` - }, null), createVNode("i", { - "class": `${prefixCls2}-dot-item` - }, null), createVNode("i", { - "class": `${prefixCls2}-dot-item` - }, null)]); - } - const spinElement = createVNode("div", _objectSpread2(_objectSpread2({}, divProps), {}, { - "class": spinClassName, - "aria-live": "polite", - "aria-busy": sSpinning.value - }), [renderIndicator(prefixCls.value), tip ? createVNode("div", { - "class": `${prefixCls.value}-text` - }, [tip]) : null]); - if (children && filterEmpty(children).length) { - const containerClassName = { - [`${prefixCls.value}-container`]: true, - [`${prefixCls.value}-blur`]: sSpinning.value - }; - return wrapSSR(createVNode("div", { - "class": [`${prefixCls.value}-nested-loading`, props4.wrapperClassName, hashId.value] - }, [sSpinning.value && createVNode("div", { - "key": "loading" - }, [spinElement]), createVNode("div", { - "class": containerClassName, - "key": "container" - }, [children])])); - } - return wrapSSR(spinElement); - }; - } -}); - -// node_modules/ant-design-vue/es/spin/index.js -Spin_default.setDefaultIndicator = setDefaultIndicator; -Spin_default.install = function(app) { - app.component(Spin_default.name, Spin_default); - return app; -}; -var spin_default = Spin_default; - -// node_modules/ant-design-vue/es/pagination/Select.js -var Select_default2 = defineComponent({ - name: "MiniSelect", - compatConfig: { - MODE: 3 - }, - inheritAttrs: false, - props: selectProps2(), - Option: select_default.Option, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - return () => { - const selelctProps = _extends(_extends(_extends({}, props4), { - size: "small" - }), attrs); - return createVNode(select_default, selelctProps, slots); - }; - } -}); -var MiddleSelect = defineComponent({ - name: "MiddleSelect", - inheritAttrs: false, - props: selectProps2(), - Option: select_default.Option, - setup(props4, _ref2) { - let { - attrs, - slots - } = _ref2; - return () => { - const selelctProps = _extends(_extends(_extends({}, props4), { - size: "middle" - }), attrs); - return createVNode(select_default, selelctProps, slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-pagination/Pager.js -var Pager_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Pager", - inheritAttrs: false, - props: { - rootPrefixCls: String, - page: Number, - active: { - type: Boolean, - default: void 0 - }, - last: { - type: Boolean, - default: void 0 - }, - locale: vue_types_default.object, - showTitle: { - type: Boolean, - default: void 0 - }, - itemRender: { - type: Function, - default: () => { - } - }, - onClick: { - type: Function - }, - onKeypress: { - type: Function - } - }, - eimt: ["click", "keypress"], - setup(props4, _ref) { - let { - emit, - attrs - } = _ref; - const handleClick = () => { - emit("click", props4.page); - }; - const handleKeyPress = (event) => { - emit("keypress", event, handleClick, props4.page); - }; - return () => { - const { - showTitle, - page, - itemRender - } = props4; - const { - class: _cls, - style - } = attrs; - const prefixCls = `${props4.rootPrefixCls}-item`; - const cls = classNames_default(prefixCls, `${prefixCls}-${props4.page}`, { - [`${prefixCls}-active`]: props4.active, - [`${prefixCls}-disabled`]: !props4.page - }, _cls); - return createVNode("li", { - "onClick": handleClick, - "onKeypress": handleKeyPress, - "title": showTitle ? String(page) : null, - "tabindex": "0", - "class": cls, - "style": style - }, [itemRender({ - page, - type: "page", - originalElement: createVNode("a", { - "rel": "nofollow" - }, [page]) - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-pagination/KeyCode.js -var KeyCode_default2 = { - ZERO: 48, - NINE: 57, - NUMPAD_ZERO: 96, - NUMPAD_NINE: 105, - BACKSPACE: 8, - DELETE: 46, - ENTER: 13, - ARROW_UP: 38, - ARROW_DOWN: 40 -}; - -// node_modules/ant-design-vue/es/vc-pagination/Options.js -var Options_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - props: { - disabled: { - type: Boolean, - default: void 0 - }, - changeSize: Function, - quickGo: Function, - selectComponentClass: vue_types_default.any, - current: Number, - pageSizeOptions: vue_types_default.array.def(["10", "20", "50", "100"]), - pageSize: Number, - buildOptionText: Function, - locale: vue_types_default.object, - rootPrefixCls: String, - selectPrefixCls: String, - goButton: vue_types_default.any - }, - setup(props4) { - const goInputText = ref(""); - const validValue = computed(() => { - return !goInputText.value || isNaN(goInputText.value) ? void 0 : Number(goInputText.value); - }); - const defaultBuildOptionText = (opt) => { - return `${opt.value} ${props4.locale.items_per_page}`; - }; - const handleChange = (e3) => { - const { - value, - composing - } = e3.target; - if (e3.isComposing || composing || goInputText.value === value) return; - goInputText.value = value; - }; - const handleBlur = (e3) => { - const { - goButton, - quickGo, - rootPrefixCls - } = props4; - if (goButton || goInputText.value === "") { - return; - } - if (e3.relatedTarget && (e3.relatedTarget.className.indexOf(`${rootPrefixCls}-item-link`) >= 0 || e3.relatedTarget.className.indexOf(`${rootPrefixCls}-item`) >= 0)) { - goInputText.value = ""; - return; - } else { - quickGo(validValue.value); - goInputText.value = ""; - } - }; - const go = (e3) => { - if (goInputText.value === "") { - return; - } - if (e3.keyCode === KeyCode_default2.ENTER || e3.type === "click") { - props4.quickGo(validValue.value); - goInputText.value = ""; - } - }; - const pageSizeOptions = computed(() => { - const { - pageSize, - pageSizeOptions: pageSizeOptions2 - } = props4; - if (pageSizeOptions2.some((option) => option.toString() === pageSize.toString())) { - return pageSizeOptions2; - } - return pageSizeOptions2.concat([pageSize.toString()]).sort((a2, b2) => { - const numberA = isNaN(Number(a2)) ? 0 : Number(a2); - const numberB = isNaN(Number(b2)) ? 0 : Number(b2); - return numberA - numberB; - }); - }); - return () => { - const { - rootPrefixCls, - locale: locale4, - changeSize, - quickGo, - goButton, - selectComponentClass: Select2, - selectPrefixCls, - pageSize, - disabled - } = props4; - const prefixCls = `${rootPrefixCls}-options`; - let changeSelect = null; - let goInput = null; - let gotoButton = null; - if (!changeSize && !quickGo) { - return null; - } - if (changeSize && Select2) { - const buildOptionText = props4.buildOptionText || defaultBuildOptionText; - const options = pageSizeOptions.value.map((opt, i3) => createVNode(Select2.Option, { - "key": i3, - "value": opt - }, { - default: () => [buildOptionText({ - value: opt - })] - })); - changeSelect = createVNode(Select2, { - "disabled": disabled, - "prefixCls": selectPrefixCls, - "showSearch": false, - "class": `${prefixCls}-size-changer`, - "optionLabelProp": "children", - "value": (pageSize || pageSizeOptions.value[0]).toString(), - "onChange": (value) => changeSize(Number(value)), - "getPopupContainer": (triggerNode) => triggerNode.parentNode - }, { - default: () => [options] - }); - } - if (quickGo) { - if (goButton) { - gotoButton = typeof goButton === "boolean" ? createVNode("button", { - "type": "button", - "onClick": go, - "onKeyup": go, - "disabled": disabled, - "class": `${prefixCls}-quick-jumper-button` - }, [locale4.jump_to_confirm]) : createVNode("span", { - "onClick": go, - "onKeyup": go - }, [goButton]); - } - goInput = createVNode("div", { - "class": `${prefixCls}-quick-jumper` - }, [locale4.jump_to, withDirectives(createVNode("input", { - "disabled": disabled, - "type": "text", - "value": goInputText.value, - "onInput": handleChange, - "onChange": handleChange, - "onKeyup": go, - "onBlur": handleBlur - }, null), [[antInputDirective_default]]), locale4.page, gotoButton]); - } - return createVNode("li", { - "class": `${prefixCls}` - }, [changeSelect, goInput]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-pagination/Pagination.js -var __rest48 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function isInteger2(value) { - return typeof value === "number" && isFinite(value) && Math.floor(value) === value; -} -function defaultItemRender2(_ref) { - let { - originalElement - } = _ref; - return originalElement; -} -function calculatePage(p, state, props4) { - const pageSize = typeof p === "undefined" ? state.statePageSize : p; - return Math.floor((props4.total - 1) / pageSize) + 1; -} -var Pagination_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Pagination", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: { - disabled: { - type: Boolean, - default: void 0 - }, - prefixCls: vue_types_default.string.def("rc-pagination"), - selectPrefixCls: vue_types_default.string.def("rc-select"), - current: Number, - defaultCurrent: vue_types_default.number.def(1), - total: vue_types_default.number.def(0), - pageSize: Number, - defaultPageSize: vue_types_default.number.def(10), - hideOnSinglePage: { - type: Boolean, - default: false - }, - showSizeChanger: { - type: Boolean, - default: void 0 - }, - showLessItems: { - type: Boolean, - default: false - }, - // showSizeChange: PropTypes.func.def(noop), - selectComponentClass: vue_types_default.any, - showPrevNextJumpers: { - type: Boolean, - default: true - }, - showQuickJumper: vue_types_default.oneOfType([vue_types_default.looseBool, vue_types_default.object]).def(false), - showTitle: { - type: Boolean, - default: true - }, - pageSizeOptions: vue_types_default.arrayOf(vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string])), - buildOptionText: Function, - showTotal: Function, - simple: { - type: Boolean, - default: void 0 - }, - locale: vue_types_default.object.def(zh_CN_default), - itemRender: vue_types_default.func.def(defaultItemRender2), - prevIcon: vue_types_default.any, - nextIcon: vue_types_default.any, - jumpPrevIcon: vue_types_default.any, - jumpNextIcon: vue_types_default.any, - totalBoundaryShowSizeChanger: vue_types_default.number.def(50) - }, - data() { - const props4 = this.$props; - let current = firstNotUndefined_default([this.current, this.defaultCurrent]); - const pageSize = firstNotUndefined_default([this.pageSize, this.defaultPageSize]); - current = Math.min(current, calculatePage(pageSize, void 0, props4)); - return { - stateCurrent: current, - stateCurrentInputValue: current, - statePageSize: pageSize - }; - }, - watch: { - current(val) { - this.setState({ - stateCurrent: val, - stateCurrentInputValue: val - }); - }, - pageSize(val) { - const newState = {}; - let current = this.stateCurrent; - const newCurrent = calculatePage(val, this.$data, this.$props); - current = current > newCurrent ? newCurrent : current; - if (!hasProp(this, "current")) { - newState.stateCurrent = current; - newState.stateCurrentInputValue = current; - } - newState.statePageSize = val; - this.setState(newState); - }, - stateCurrent(_val, oldValue) { - this.$nextTick(() => { - if (this.$refs.paginationNode) { - const lastCurrentNode = this.$refs.paginationNode.querySelector(`.${this.prefixCls}-item-${oldValue}`); - if (lastCurrentNode && document.activeElement === lastCurrentNode) { - lastCurrentNode.blur(); - } - } - }); - }, - total() { - const newState = {}; - const newCurrent = calculatePage(this.pageSize, this.$data, this.$props); - if (hasProp(this, "current")) { - const current = Math.min(this.current, newCurrent); - newState.stateCurrent = current; - newState.stateCurrentInputValue = current; - } else { - let current = this.stateCurrent; - if (current === 0 && newCurrent > 0) { - current = 1; - } else { - current = Math.min(this.stateCurrent, newCurrent); - } - newState.stateCurrent = current; - } - this.setState(newState); - } - }, - methods: { - getJumpPrevPage() { - return Math.max(1, this.stateCurrent - (this.showLessItems ? 3 : 5)); - }, - getJumpNextPage() { - return Math.min(calculatePage(void 0, this.$data, this.$props), this.stateCurrent + (this.showLessItems ? 3 : 5)); - }, - getItemIcon(icon, label) { - const { - prefixCls - } = this.$props; - const iconNode = getComponent(this, icon, this.$props) || createVNode("button", { - "type": "button", - "aria-label": label, - "class": `${prefixCls}-item-link` - }, null); - return iconNode; - }, - getValidValue(e3) { - const inputValue = e3.target.value; - const allPages = calculatePage(void 0, this.$data, this.$props); - const { - stateCurrentInputValue - } = this.$data; - let value; - if (inputValue === "") { - value = inputValue; - } else if (isNaN(Number(inputValue))) { - value = stateCurrentInputValue; - } else if (inputValue >= allPages) { - value = allPages; - } else { - value = Number(inputValue); - } - return value; - }, - isValid(page) { - return isInteger2(page) && page !== this.stateCurrent; - }, - shouldDisplayQuickJumper() { - const { - showQuickJumper, - pageSize, - total - } = this.$props; - if (total <= pageSize) { - return false; - } - return showQuickJumper; - }, - // calculatePage (p) { - // let pageSize = p - // if (typeof pageSize === 'undefined') { - // pageSize = this.statePageSize - // } - // return Math.floor((this.total - 1) / pageSize) + 1 - // }, - handleKeyDown(event) { - if (event.keyCode === KeyCode_default2.ARROW_UP || event.keyCode === KeyCode_default2.ARROW_DOWN) { - event.preventDefault(); - } - }, - handleKeyUp(e3) { - if (e3.isComposing || e3.target.composing) return; - const value = this.getValidValue(e3); - const stateCurrentInputValue = this.stateCurrentInputValue; - if (value !== stateCurrentInputValue) { - this.setState({ - stateCurrentInputValue: value - }); - } - if (e3.keyCode === KeyCode_default2.ENTER) { - this.handleChange(value); - } else if (e3.keyCode === KeyCode_default2.ARROW_UP) { - this.handleChange(value - 1); - } else if (e3.keyCode === KeyCode_default2.ARROW_DOWN) { - this.handleChange(value + 1); - } - }, - changePageSize(size2) { - let current = this.stateCurrent; - const preCurrent = current; - const newCurrent = calculatePage(size2, this.$data, this.$props); - current = current > newCurrent ? newCurrent : current; - if (newCurrent === 0) { - current = this.stateCurrent; - } - if (typeof size2 === "number") { - if (!hasProp(this, "pageSize")) { - this.setState({ - statePageSize: size2 - }); - } - if (!hasProp(this, "current")) { - this.setState({ - stateCurrent: current, - stateCurrentInputValue: current - }); - } - } - this.__emit("update:pageSize", size2); - if (current !== preCurrent) { - this.__emit("update:current", current); - } - this.__emit("showSizeChange", current, size2); - this.__emit("change", current, size2); - }, - handleChange(p) { - const { - disabled - } = this.$props; - let page = p; - if (this.isValid(page) && !disabled) { - const currentPage = calculatePage(void 0, this.$data, this.$props); - if (page > currentPage) { - page = currentPage; - } else if (page < 1) { - page = 1; - } - if (!hasProp(this, "current")) { - this.setState({ - stateCurrent: page, - stateCurrentInputValue: page - }); - } - this.__emit("update:current", page); - this.__emit("change", page, this.statePageSize); - return page; - } - return this.stateCurrent; - }, - prev() { - if (this.hasPrev()) { - this.handleChange(this.stateCurrent - 1); - } - }, - next() { - if (this.hasNext()) { - this.handleChange(this.stateCurrent + 1); - } - }, - jumpPrev() { - this.handleChange(this.getJumpPrevPage()); - }, - jumpNext() { - this.handleChange(this.getJumpNextPage()); - }, - hasPrev() { - return this.stateCurrent > 1; - }, - hasNext() { - return this.stateCurrent < calculatePage(void 0, this.$data, this.$props); - }, - getShowSizeChanger() { - const { - showSizeChanger, - total, - totalBoundaryShowSizeChanger - } = this.$props; - if (typeof showSizeChanger !== "undefined") { - return showSizeChanger; - } - return total > totalBoundaryShowSizeChanger; - }, - runIfEnter(event, callback) { - if (event.key === "Enter" || event.charCode === 13) { - for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { - restParams[_key - 2] = arguments[_key]; - } - callback(...restParams); - } - }, - runIfEnterPrev(event) { - this.runIfEnter(event, this.prev); - }, - runIfEnterNext(event) { - this.runIfEnter(event, this.next); - }, - runIfEnterJumpPrev(event) { - this.runIfEnter(event, this.jumpPrev); - }, - runIfEnterJumpNext(event) { - this.runIfEnter(event, this.jumpNext); - }, - handleGoTO(event) { - if (event.keyCode === KeyCode_default2.ENTER || event.type === "click") { - this.handleChange(this.stateCurrentInputValue); - } - }, - renderPrev(prevPage) { - const { - itemRender - } = this.$props; - const prevButton = itemRender({ - page: prevPage, - type: "prev", - originalElement: this.getItemIcon("prevIcon", "prev page") - }); - const disabled = !this.hasPrev(); - return isValidElement(prevButton) ? cloneElement(prevButton, disabled ? { - disabled - } : {}) : prevButton; - }, - renderNext(nextPage) { - const { - itemRender - } = this.$props; - const nextButton = itemRender({ - page: nextPage, - type: "next", - originalElement: this.getItemIcon("nextIcon", "next page") - }); - const disabled = !this.hasNext(); - return isValidElement(nextButton) ? cloneElement(nextButton, disabled ? { - disabled - } : {}) : nextButton; - } - }, - render() { - const { - prefixCls, - disabled, - hideOnSinglePage, - total, - locale: locale4, - showQuickJumper, - showLessItems, - showTitle, - showTotal, - simple, - itemRender, - showPrevNextJumpers, - jumpPrevIcon, - jumpNextIcon, - selectComponentClass, - selectPrefixCls, - pageSizeOptions - } = this.$props; - const { - stateCurrent, - statePageSize - } = this; - const _a2 = splitAttrs(this.$attrs).extraAttrs, { - class: className - } = _a2, restAttrs = __rest48(_a2, ["class"]); - if (hideOnSinglePage === true && this.total <= statePageSize) { - return null; - } - const allPages = calculatePage(void 0, this.$data, this.$props); - const pagerList = []; - let jumpPrev = null; - let jumpNext = null; - let firstPager = null; - let lastPager = null; - let gotoButton = null; - const goButton = showQuickJumper && showQuickJumper.goButton; - const pageBufferSize = showLessItems ? 1 : 2; - const prevPage = stateCurrent - 1 > 0 ? stateCurrent - 1 : 0; - const nextPage = stateCurrent + 1 < allPages ? stateCurrent + 1 : allPages; - const hasPrev = this.hasPrev(); - const hasNext = this.hasNext(); - if (simple) { - if (goButton) { - if (typeof goButton === "boolean") { - gotoButton = createVNode("button", { - "type": "button", - "onClick": this.handleGoTO, - "onKeyup": this.handleGoTO - }, [locale4.jump_to_confirm]); - } else { - gotoButton = createVNode("span", { - "onClick": this.handleGoTO, - "onKeyup": this.handleGoTO - }, [goButton]); - } - const _gotoButton = /* @__PURE__ */ function() { - return gotoButton; - }(); - gotoButton = createVNode("li", { - "title": showTitle ? `${locale4.jump_to}${stateCurrent}/${allPages}` : null, - "class": `${prefixCls}-simple-pager` - }, [gotoButton]); - } - return createVNode("ul", _objectSpread2({ - "class": classNames_default(`${prefixCls} ${prefixCls}-simple`, { - [`${prefixCls}-disabled`]: disabled - }, className) - }, restAttrs), [createVNode("li", { - "title": showTitle ? locale4.prev_page : null, - "onClick": this.prev, - "tabindex": hasPrev ? 0 : null, - "onKeypress": this.runIfEnterPrev, - "class": classNames_default(`${prefixCls}-prev`, { - [`${prefixCls}-disabled`]: !hasPrev - }), - "aria-disabled": !hasPrev - }, [this.renderPrev(prevPage)]), createVNode("li", { - "title": showTitle ? `${stateCurrent}/${allPages}` : null, - "class": `${prefixCls}-simple-pager` - }, [withDirectives(createVNode("input", { - "type": "text", - "value": this.stateCurrentInputValue, - "disabled": disabled, - "onKeydown": this.handleKeyDown, - "onKeyup": this.handleKeyUp, - "onInput": this.handleKeyUp, - "onChange": this.handleKeyUp, - "size": "3" - }, null), [[antInputDirective_default]]), createVNode("span", { - "class": `${prefixCls}-slash` - }, [createTextVNode("/")]), allPages]), createVNode("li", { - "title": showTitle ? locale4.next_page : null, - "onClick": this.next, - "tabindex": hasNext ? 0 : null, - "onKeypress": this.runIfEnterNext, - "class": classNames_default(`${prefixCls}-next`, { - [`${prefixCls}-disabled`]: !hasNext - }), - "aria-disabled": !hasNext - }, [this.renderNext(nextPage)]), gotoButton]); - } - if (allPages <= 3 + pageBufferSize * 2) { - const pagerProps = { - locale: locale4, - rootPrefixCls: prefixCls, - showTitle, - itemRender, - onClick: this.handleChange, - onKeypress: this.runIfEnter - }; - if (!allPages) { - pagerList.push(createVNode(Pager_default, _objectSpread2(_objectSpread2({}, pagerProps), {}, { - "key": "noPager", - "page": 1, - "class": `${prefixCls}-item-disabled` - }), null)); - } - for (let i3 = 1; i3 <= allPages; i3 += 1) { - const active = stateCurrent === i3; - pagerList.push(createVNode(Pager_default, _objectSpread2(_objectSpread2({}, pagerProps), {}, { - "key": i3, - "page": i3, - "active": active - }), null)); - } - } else { - const prevItemTitle = showLessItems ? locale4.prev_3 : locale4.prev_5; - const nextItemTitle = showLessItems ? locale4.next_3 : locale4.next_5; - if (showPrevNextJumpers) { - jumpPrev = createVNode("li", { - "title": this.showTitle ? prevItemTitle : null, - "key": "prev", - "onClick": this.jumpPrev, - "tabindex": "0", - "onKeypress": this.runIfEnterJumpPrev, - "class": classNames_default(`${prefixCls}-jump-prev`, { - [`${prefixCls}-jump-prev-custom-icon`]: !!jumpPrevIcon - }) - }, [itemRender({ - page: this.getJumpPrevPage(), - type: "jump-prev", - originalElement: this.getItemIcon("jumpPrevIcon", "prev page") - })]); - jumpNext = createVNode("li", { - "title": this.showTitle ? nextItemTitle : null, - "key": "next", - "tabindex": "0", - "onClick": this.jumpNext, - "onKeypress": this.runIfEnterJumpNext, - "class": classNames_default(`${prefixCls}-jump-next`, { - [`${prefixCls}-jump-next-custom-icon`]: !!jumpNextIcon - }) - }, [itemRender({ - page: this.getJumpNextPage(), - type: "jump-next", - originalElement: this.getItemIcon("jumpNextIcon", "next page") - })]); - } - lastPager = createVNode(Pager_default, { - "locale": locale4, - "last": true, - "rootPrefixCls": prefixCls, - "onClick": this.handleChange, - "onKeypress": this.runIfEnter, - "key": allPages, - "page": allPages, - "active": false, - "showTitle": showTitle, - "itemRender": itemRender - }, null); - firstPager = createVNode(Pager_default, { - "locale": locale4, - "rootPrefixCls": prefixCls, - "onClick": this.handleChange, - "onKeypress": this.runIfEnter, - "key": 1, - "page": 1, - "active": false, - "showTitle": showTitle, - "itemRender": itemRender - }, null); - let left = Math.max(1, stateCurrent - pageBufferSize); - let right = Math.min(stateCurrent + pageBufferSize, allPages); - if (stateCurrent - 1 <= pageBufferSize) { - right = 1 + pageBufferSize * 2; - } - if (allPages - stateCurrent <= pageBufferSize) { - left = allPages - pageBufferSize * 2; - } - for (let i3 = left; i3 <= right; i3 += 1) { - const active = stateCurrent === i3; - pagerList.push(createVNode(Pager_default, { - "locale": locale4, - "rootPrefixCls": prefixCls, - "onClick": this.handleChange, - "onKeypress": this.runIfEnter, - "key": i3, - "page": i3, - "active": active, - "showTitle": showTitle, - "itemRender": itemRender - }, null)); - } - if (stateCurrent - 1 >= pageBufferSize * 2 && stateCurrent !== 1 + 2) { - pagerList[0] = createVNode(Pager_default, { - "locale": locale4, - "rootPrefixCls": prefixCls, - "onClick": this.handleChange, - "onKeypress": this.runIfEnter, - "key": left, - "page": left, - "class": `${prefixCls}-item-after-jump-prev`, - "active": false, - "showTitle": this.showTitle, - "itemRender": itemRender - }, null); - pagerList.unshift(jumpPrev); - } - if (allPages - stateCurrent >= pageBufferSize * 2 && stateCurrent !== allPages - 2) { - pagerList[pagerList.length - 1] = createVNode(Pager_default, { - "locale": locale4, - "rootPrefixCls": prefixCls, - "onClick": this.handleChange, - "onKeypress": this.runIfEnter, - "key": right, - "page": right, - "class": `${prefixCls}-item-before-jump-next`, - "active": false, - "showTitle": this.showTitle, - "itemRender": itemRender - }, null); - pagerList.push(jumpNext); - } - if (left !== 1) { - pagerList.unshift(firstPager); - } - if (right !== allPages) { - pagerList.push(lastPager); - } - } - let totalText = null; - if (showTotal) { - totalText = createVNode("li", { - "class": `${prefixCls}-total-text` - }, [showTotal(total, [total === 0 ? 0 : (stateCurrent - 1) * statePageSize + 1, stateCurrent * statePageSize > total ? total : stateCurrent * statePageSize])]); - } - const prevDisabled = !hasPrev || !allPages; - const nextDisabled = !hasNext || !allPages; - const buildOptionText = this.buildOptionText || this.$slots.buildOptionText; - return createVNode("ul", _objectSpread2(_objectSpread2({ - "unselectable": "on", - "ref": "paginationNode" - }, restAttrs), {}, { - "class": classNames_default({ - [`${prefixCls}`]: true, - [`${prefixCls}-disabled`]: disabled - }, className) - }), [totalText, createVNode("li", { - "title": showTitle ? locale4.prev_page : null, - "onClick": this.prev, - "tabindex": prevDisabled ? null : 0, - "onKeypress": this.runIfEnterPrev, - "class": classNames_default(`${prefixCls}-prev`, { - [`${prefixCls}-disabled`]: prevDisabled - }), - "aria-disabled": prevDisabled - }, [this.renderPrev(prevPage)]), pagerList, createVNode("li", { - "title": showTitle ? locale4.next_page : null, - "onClick": this.next, - "tabindex": nextDisabled ? null : 0, - "onKeypress": this.runIfEnterNext, - "class": classNames_default(`${prefixCls}-next`, { - [`${prefixCls}-disabled`]: nextDisabled - }), - "aria-disabled": nextDisabled - }, [this.renderNext(nextPage)]), createVNode(Options_default, { - "disabled": disabled, - "locale": locale4, - "rootPrefixCls": prefixCls, - "selectComponentClass": selectComponentClass, - "selectPrefixCls": selectPrefixCls, - "changeSize": this.getShowSizeChanger() ? this.changePageSize : null, - "current": stateCurrent, - "pageSize": statePageSize, - "pageSizeOptions": pageSizeOptions, - "buildOptionText": buildOptionText || null, - "quickGo": this.shouldDisplayQuickJumper() ? this.handleChange : null, - "goButton": goButton - }, null)]); - } -}); - -// node_modules/ant-design-vue/es/pagination/style/index.js -var genPaginationDisabledStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-disabled`]: { - "&, &:hover": { - cursor: "not-allowed", - [`${componentCls}-item-link`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed" - } - }, - "&:focus-visible": { - cursor: "not-allowed", - [`${componentCls}-item-link`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed" - } - } - }, - [`&${componentCls}-disabled`]: { - cursor: "not-allowed", - [`&${componentCls}-mini`]: { - [` - &:hover ${componentCls}-item:not(${componentCls}-item-active), - &:active ${componentCls}-item:not(${componentCls}-item-active), - &:hover ${componentCls}-item-link, - &:active ${componentCls}-item-link - `]: { - backgroundColor: "transparent" - } - }, - [`${componentCls}-item`]: { - cursor: "not-allowed", - "&:hover, &:active": { - backgroundColor: "transparent" - }, - a: { - color: token2.colorTextDisabled, - backgroundColor: "transparent", - border: "none", - cursor: "not-allowed" - }, - "&-active": { - borderColor: token2.colorBorder, - backgroundColor: token2.paginationItemDisabledBgActive, - "&:hover, &:active": { - backgroundColor: token2.paginationItemDisabledBgActive - }, - a: { - color: token2.paginationItemDisabledColorActive - } - } - }, - [`${componentCls}-item-link`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed", - "&:hover, &:active": { - backgroundColor: "transparent" - }, - [`${componentCls}-simple&`]: { - backgroundColor: "transparent", - "&:hover, &:active": { - backgroundColor: "transparent" - } - } - }, - [`${componentCls}-simple-pager`]: { - color: token2.colorTextDisabled - }, - [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: { - [`${componentCls}-item-link-icon`]: { - opacity: 0 - }, - [`${componentCls}-item-ellipsis`]: { - opacity: 1 - } - } - }, - [`&${componentCls}-simple`]: { - [`${componentCls}-prev, ${componentCls}-next`]: { - [`&${componentCls}-disabled ${componentCls}-item-link`]: { - "&:hover, &:active": { - backgroundColor: "transparent" - } - } - } - } - }; -}; -var genPaginationMiniStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`&${componentCls}-mini ${componentCls}-total-text, &${componentCls}-mini ${componentCls}-simple-pager`]: { - height: token2.paginationItemSizeSM, - lineHeight: `${token2.paginationItemSizeSM}px` - }, - [`&${componentCls}-mini ${componentCls}-item`]: { - minWidth: token2.paginationItemSizeSM, - height: token2.paginationItemSizeSM, - margin: 0, - lineHeight: `${token2.paginationItemSizeSM - 2}px` - }, - [`&${componentCls}-mini ${componentCls}-item:not(${componentCls}-item-active)`]: { - backgroundColor: "transparent", - borderColor: "transparent", - "&:hover": { - backgroundColor: token2.colorBgTextHover - }, - "&:active": { - backgroundColor: token2.colorBgTextActive - } - }, - [`&${componentCls}-mini ${componentCls}-prev, &${componentCls}-mini ${componentCls}-next`]: { - minWidth: token2.paginationItemSizeSM, - height: token2.paginationItemSizeSM, - margin: 0, - lineHeight: `${token2.paginationItemSizeSM}px`, - [`&:hover ${componentCls}-item-link`]: { - backgroundColor: token2.colorBgTextHover - }, - [`&:active ${componentCls}-item-link`]: { - backgroundColor: token2.colorBgTextActive - }, - [`&${componentCls}-disabled:hover ${componentCls}-item-link`]: { - backgroundColor: "transparent" - } - }, - [` - &${componentCls}-mini ${componentCls}-prev ${componentCls}-item-link, - &${componentCls}-mini ${componentCls}-next ${componentCls}-item-link - `]: { - backgroundColor: "transparent", - borderColor: "transparent", - "&::after": { - height: token2.paginationItemSizeSM, - lineHeight: `${token2.paginationItemSizeSM}px` - } - }, - [`&${componentCls}-mini ${componentCls}-jump-prev, &${componentCls}-mini ${componentCls}-jump-next`]: { - height: token2.paginationItemSizeSM, - marginInlineEnd: 0, - lineHeight: `${token2.paginationItemSizeSM}px` - }, - [`&${componentCls}-mini ${componentCls}-options`]: { - marginInlineStart: token2.paginationMiniOptionsMarginInlineStart, - [`&-size-changer`]: { - top: token2.paginationMiniOptionsSizeChangerTop - }, - [`&-quick-jumper`]: { - height: token2.paginationItemSizeSM, - lineHeight: `${token2.paginationItemSizeSM}px`, - input: _extends(_extends({}, genInputSmallStyle(token2)), { - width: token2.paginationMiniQuickJumperInputWidth, - height: token2.controlHeightSM - }) - } - } - }; -}; -var genPaginationSimpleStyle = (token2) => { - const { - componentCls - } = token2; - return { - [` - &${componentCls}-simple ${componentCls}-prev, - &${componentCls}-simple ${componentCls}-next - `]: { - height: token2.paginationItemSizeSM, - lineHeight: `${token2.paginationItemSizeSM}px`, - verticalAlign: "top", - [`${componentCls}-item-link`]: { - height: token2.paginationItemSizeSM, - backgroundColor: "transparent", - border: 0, - "&:hover": { - backgroundColor: token2.colorBgTextHover - }, - "&:active": { - backgroundColor: token2.colorBgTextActive - }, - "&::after": { - height: token2.paginationItemSizeSM, - lineHeight: `${token2.paginationItemSizeSM}px` - } - } - }, - [`&${componentCls}-simple ${componentCls}-simple-pager`]: { - display: "inline-block", - height: token2.paginationItemSizeSM, - marginInlineEnd: token2.marginXS, - input: { - boxSizing: "border-box", - height: "100%", - marginInlineEnd: token2.marginXS, - padding: `0 ${token2.paginationItemPaddingInline}px`, - textAlign: "center", - backgroundColor: token2.paginationItemInputBg, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: token2.borderRadius, - outline: "none", - transition: `border-color ${token2.motionDurationMid}`, - color: "inherit", - "&:hover": { - borderColor: token2.colorPrimary - }, - "&:focus": { - borderColor: token2.colorPrimaryHover, - boxShadow: `${token2.inputOutlineOffset}px 0 ${token2.controlOutlineWidth}px ${token2.controlOutline}` - }, - "&[disabled]": { - color: token2.colorTextDisabled, - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - cursor: "not-allowed" - } - } - } - }; -}; -var genPaginationJumpStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-jump-prev, ${componentCls}-jump-next`]: { - outline: 0, - [`${componentCls}-item-container`]: { - position: "relative", - [`${componentCls}-item-link-icon`]: { - color: token2.colorPrimary, - fontSize: token2.fontSizeSM, - opacity: 0, - transition: `all ${token2.motionDurationMid}`, - "&-svg": { - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - margin: "auto" - } - }, - [`${componentCls}-item-ellipsis`]: { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - display: "block", - margin: "auto", - color: token2.colorTextDisabled, - fontFamily: "Arial, Helvetica, sans-serif", - letterSpacing: token2.paginationEllipsisLetterSpacing, - textAlign: "center", - textIndent: token2.paginationEllipsisTextIndent, - opacity: 1, - transition: `all ${token2.motionDurationMid}` - } - }, - "&:hover": { - [`${componentCls}-item-link-icon`]: { - opacity: 1 - }, - [`${componentCls}-item-ellipsis`]: { - opacity: 0 - } - }, - "&:focus-visible": _extends({ - [`${componentCls}-item-link-icon`]: { - opacity: 1 - }, - [`${componentCls}-item-ellipsis`]: { - opacity: 0 - } - }, genFocusOutline(token2)) - }, - [` - ${componentCls}-prev, - ${componentCls}-jump-prev, - ${componentCls}-jump-next - `]: { - marginInlineEnd: token2.marginXS - }, - [` - ${componentCls}-prev, - ${componentCls}-next, - ${componentCls}-jump-prev, - ${componentCls}-jump-next - `]: { - display: "inline-block", - minWidth: token2.paginationItemSize, - height: token2.paginationItemSize, - color: token2.colorText, - fontFamily: token2.paginationFontFamily, - lineHeight: `${token2.paginationItemSize}px`, - textAlign: "center", - verticalAlign: "middle", - listStyle: "none", - borderRadius: token2.borderRadius, - cursor: "pointer", - transition: `all ${token2.motionDurationMid}` - }, - [`${componentCls}-prev, ${componentCls}-next`]: { - fontFamily: "Arial, Helvetica, sans-serif", - outline: 0, - button: { - color: token2.colorText, - cursor: "pointer", - userSelect: "none" - }, - [`${componentCls}-item-link`]: { - display: "block", - width: "100%", - height: "100%", - padding: 0, - fontSize: token2.fontSizeSM, - textAlign: "center", - backgroundColor: "transparent", - border: `${token2.lineWidth}px ${token2.lineType} transparent`, - borderRadius: token2.borderRadius, - outline: "none", - transition: `all ${token2.motionDurationMid}` - }, - [`&:focus-visible ${componentCls}-item-link`]: _extends({}, genFocusOutline(token2)), - [`&:hover ${componentCls}-item-link`]: { - backgroundColor: token2.colorBgTextHover - }, - [`&:active ${componentCls}-item-link`]: { - backgroundColor: token2.colorBgTextActive - }, - [`&${componentCls}-disabled:hover`]: { - [`${componentCls}-item-link`]: { - backgroundColor: "transparent" - } - } - }, - [`${componentCls}-slash`]: { - marginInlineEnd: token2.paginationSlashMarginInlineEnd, - marginInlineStart: token2.paginationSlashMarginInlineStart - }, - [`${componentCls}-options`]: { - display: "inline-block", - marginInlineStart: token2.margin, - verticalAlign: "middle", - "&-size-changer.-select": { - display: "inline-block", - width: "auto" - }, - "&-quick-jumper": { - display: "inline-block", - height: token2.controlHeight, - marginInlineStart: token2.marginXS, - lineHeight: `${token2.controlHeight}px`, - verticalAlign: "top", - input: _extends(_extends({}, genBasicInputStyle(token2)), { - width: token2.controlHeightLG * 1.25, - height: token2.controlHeight, - boxSizing: "border-box", - margin: 0, - marginInlineStart: token2.marginXS, - marginInlineEnd: token2.marginXS - }) - } - } - }; -}; -var genPaginationItemStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-item`]: _extends(_extends({ - display: "inline-block", - minWidth: token2.paginationItemSize, - height: token2.paginationItemSize, - marginInlineEnd: token2.marginXS, - fontFamily: token2.paginationFontFamily, - lineHeight: `${token2.paginationItemSize - 2}px`, - textAlign: "center", - verticalAlign: "middle", - listStyle: "none", - backgroundColor: "transparent", - border: `${token2.lineWidth}px ${token2.lineType} transparent`, - borderRadius: token2.borderRadius, - outline: 0, - cursor: "pointer", - userSelect: "none", - a: { - display: "block", - padding: `0 ${token2.paginationItemPaddingInline}px`, - color: token2.colorText, - transition: "none", - "&:hover": { - textDecoration: "none" - } - }, - [`&:not(${componentCls}-item-active)`]: { - "&:hover": { - transition: `all ${token2.motionDurationMid}`, - backgroundColor: token2.colorBgTextHover - }, - "&:active": { - backgroundColor: token2.colorBgTextActive - } - } - }, genFocusStyle(token2)), { - "&-active": { - fontWeight: token2.paginationFontWeightActive, - backgroundColor: token2.paginationItemBgActive, - borderColor: token2.colorPrimary, - a: { - color: token2.colorPrimary - }, - "&:hover": { - borderColor: token2.colorPrimaryHover - }, - "&:hover a": { - color: token2.colorPrimaryHover - } - } - }) - }; -}; -var genPaginationStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), { - "ul, ol": { - margin: 0, - padding: 0, - listStyle: "none" - }, - "&::after": { - display: "block", - clear: "both", - height: 0, - overflow: "hidden", - visibility: "hidden", - content: '""' - }, - [`${componentCls}-total-text`]: { - display: "inline-block", - height: token2.paginationItemSize, - marginInlineEnd: token2.marginXS, - lineHeight: `${token2.paginationItemSize - 2}px`, - verticalAlign: "middle" - } - }), genPaginationItemStyle(token2)), genPaginationJumpStyle(token2)), genPaginationSimpleStyle(token2)), genPaginationMiniStyle(token2)), genPaginationDisabledStyle(token2)), { - // media query style - [`@media only screen and (max-width: ${token2.screenLG}px)`]: { - [`${componentCls}-item`]: { - "&-after-jump-prev, &-before-jump-next": { - display: "none" - } - } - }, - [`@media only screen and (max-width: ${token2.screenSM}px)`]: { - [`${componentCls}-options`]: { - display: "none" - } - } - }), - // rtl style - [`&${token2.componentCls}-rtl`]: { - direction: "rtl" - } - }; -}; -var genBorderedStyle2 = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}${componentCls}-disabled`]: { - "&, &:hover": { - [`${componentCls}-item-link`]: { - borderColor: token2.colorBorder - } - }, - "&:focus-visible": { - [`${componentCls}-item-link`]: { - borderColor: token2.colorBorder - } - }, - [`${componentCls}-item, ${componentCls}-item-link`]: { - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - [`&:hover:not(${componentCls}-item-active)`]: { - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - a: { - color: token2.colorTextDisabled - } - }, - [`&${componentCls}-item-active`]: { - backgroundColor: token2.paginationItemDisabledBgActive - } - }, - [`${componentCls}-prev, ${componentCls}-next`]: { - "&:hover button": { - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder, - color: token2.colorTextDisabled - }, - [`${componentCls}-item-link`]: { - backgroundColor: token2.colorBgContainerDisabled, - borderColor: token2.colorBorder - } - } - }, - [componentCls]: { - [`${componentCls}-prev, ${componentCls}-next`]: { - "&:hover button": { - borderColor: token2.colorPrimaryHover, - backgroundColor: token2.paginationItemBg - }, - [`${componentCls}-item-link`]: { - backgroundColor: token2.paginationItemLinkBg, - borderColor: token2.colorBorder - }, - [`&:hover ${componentCls}-item-link`]: { - borderColor: token2.colorPrimary, - backgroundColor: token2.paginationItemBg, - color: token2.colorPrimary - }, - [`&${componentCls}-disabled`]: { - [`${componentCls}-item-link`]: { - borderColor: token2.colorBorder, - color: token2.colorTextDisabled - } - } - }, - [`${componentCls}-item`]: { - backgroundColor: token2.paginationItemBg, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - [`&:hover:not(${componentCls}-item-active)`]: { - borderColor: token2.colorPrimary, - backgroundColor: token2.paginationItemBg, - a: { - color: token2.colorPrimary - } - }, - "&-active": { - borderColor: token2.colorPrimary - } - } - } - }; -}; -var style_default42 = genComponentStyleHook("Pagination", (token2) => { - const paginationToken = merge(token2, { - paginationItemSize: token2.controlHeight, - paginationFontFamily: token2.fontFamily, - paginationItemBg: token2.colorBgContainer, - paginationItemBgActive: token2.colorBgContainer, - paginationFontWeightActive: token2.fontWeightStrong, - paginationItemSizeSM: token2.controlHeightSM, - paginationItemInputBg: token2.colorBgContainer, - paginationMiniOptionsSizeChangerTop: 0, - paginationItemDisabledBgActive: token2.controlItemBgActiveDisabled, - paginationItemDisabledColorActive: token2.colorTextDisabled, - paginationItemLinkBg: token2.colorBgContainer, - inputOutlineOffset: "0 0", - paginationMiniOptionsMarginInlineStart: token2.marginXXS / 2, - paginationMiniQuickJumperInputWidth: token2.controlHeightLG * 1.1, - paginationItemPaddingInline: token2.marginXXS * 1.5, - paginationEllipsisLetterSpacing: token2.marginXXS / 2, - paginationSlashMarginInlineStart: token2.marginXXS, - paginationSlashMarginInlineEnd: token2.marginSM, - paginationEllipsisTextIndent: "0.13em" - // magic for ui experience - }, initInputToken(token2)); - return [genPaginationStyle(paginationToken), token2.wireframe && genBorderedStyle2(paginationToken)]; -}); - -// node_modules/ant-design-vue/es/pagination/Pagination.js -var __rest49 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var paginationProps = () => ({ - total: Number, - defaultCurrent: Number, - disabled: booleanType(), - current: Number, - defaultPageSize: Number, - pageSize: Number, - hideOnSinglePage: booleanType(), - showSizeChanger: booleanType(), - pageSizeOptions: arrayType(), - buildOptionText: functionType(), - showQuickJumper: someType([Boolean, Object]), - showTotal: functionType(), - size: stringType(), - simple: booleanType(), - locale: Object, - prefixCls: String, - selectPrefixCls: String, - totalBoundaryShowSizeChanger: Number, - selectComponentClass: String, - itemRender: functionType(), - role: String, - responsive: Boolean, - showLessItems: booleanType(), - onChange: functionType(), - onShowSizeChange: functionType(), - "onUpdate:current": functionType(), - "onUpdate:pageSize": functionType() -}); -var Pagination_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "APagination", - inheritAttrs: false, - props: paginationProps(), - // emits: ['change', 'showSizeChange', 'update:current', 'update:pageSize'], - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - configProvider, - direction, - size: size2 - } = useConfigInject_default("pagination", props4); - const [wrapSSR, hashId] = style_default42(prefixCls); - const selectPrefixCls = computed(() => configProvider.getPrefixCls("select", props4.selectPrefixCls)); - const breakpoint = useBreakpoint_default(); - const [locale4] = useLocaleReceiver("Pagination", en_US_default, toRef(props4, "locale")); - const getIconsProps = (pre) => { - const ellipsis = createVNode("span", { - "class": `${pre}-item-ellipsis` - }, [createTextVNode("•••")]); - const prevIcon = createVNode("button", { - "class": `${pre}-item-link`, - "type": "button", - "tabindex": -1 - }, [direction.value === "rtl" ? createVNode(RightOutlined_default, null, null) : createVNode(LeftOutlined_default, null, null)]); - const nextIcon = createVNode("button", { - "class": `${pre}-item-link`, - "type": "button", - "tabindex": -1 - }, [direction.value === "rtl" ? createVNode(LeftOutlined_default, null, null) : createVNode(RightOutlined_default, null, null)]); - const jumpPrevIcon = createVNode("a", { - "rel": "nofollow", - "class": `${pre}-item-link` - }, [createVNode("div", { - "class": `${pre}-item-container` - }, [direction.value === "rtl" ? createVNode(DoubleRightOutlined_default, { - "class": `${pre}-item-link-icon` - }, null) : createVNode(DoubleLeftOutlined_default, { - "class": `${pre}-item-link-icon` - }, null), ellipsis])]); - const jumpNextIcon = createVNode("a", { - "rel": "nofollow", - "class": `${pre}-item-link` - }, [createVNode("div", { - "class": `${pre}-item-container` - }, [direction.value === "rtl" ? createVNode(DoubleLeftOutlined_default, { - "class": `${pre}-item-link-icon` - }, null) : createVNode(DoubleRightOutlined_default, { - "class": `${pre}-item-link-icon` - }, null), ellipsis])]); - return { - prevIcon, - nextIcon, - jumpPrevIcon, - jumpNextIcon - }; - }; - return () => { - var _a2; - const { - itemRender = slots.itemRender, - buildOptionText = slots.buildOptionText, - selectComponentClass, - responsive - } = props4, restProps = __rest49(props4, ["itemRender", "buildOptionText", "selectComponentClass", "responsive"]); - const isSmall = size2.value === "small" || !!(((_a2 = breakpoint.value) === null || _a2 === void 0 ? void 0 : _a2.xs) && !size2.value && responsive); - const paginationProps2 = _extends(_extends(_extends(_extends(_extends({}, restProps), getIconsProps(prefixCls.value)), { - prefixCls: prefixCls.value, - selectPrefixCls: selectPrefixCls.value, - selectComponentClass: selectComponentClass || (isSmall ? Select_default2 : MiddleSelect), - locale: locale4.value, - buildOptionText - }), attrs), { - class: classNames_default({ - [`${prefixCls.value}-mini`]: isSmall, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value), - itemRender - }); - return wrapSSR(createVNode(Pagination_default, paginationProps2, null)); - }; - } -}); - -// node_modules/ant-design-vue/es/pagination/index.js -var pagination_default = withInstall(Pagination_default2); - -// node_modules/ant-design-vue/es/list/ItemMeta.js -var listItemMetaProps = () => ({ - avatar: vue_types_default.any, - description: vue_types_default.any, - prefixCls: String, - title: vue_types_default.any -}); -var ItemMeta_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AListItemMeta", - props: listItemMetaProps(), - displayName: "AListItemMeta", - __ANT_LIST_ITEM_META: true, - slots: Object, - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("list", props4); - return () => { - var _a2, _b, _c, _d, _e, _f; - const classString = `${prefixCls.value}-item-meta`; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - const description = (_c = props4.description) !== null && _c !== void 0 ? _c : (_d = slots.description) === null || _d === void 0 ? void 0 : _d.call(slots); - const avatar = (_e = props4.avatar) !== null && _e !== void 0 ? _e : (_f = slots.avatar) === null || _f === void 0 ? void 0 : _f.call(slots); - const content = createVNode("div", { - "class": `${prefixCls.value}-item-meta-content` - }, [title && createVNode("h4", { - "class": `${prefixCls.value}-item-meta-title` - }, [title]), description && createVNode("div", { - "class": `${prefixCls.value}-item-meta-description` - }, [description])]); - return createVNode("div", { - "class": classString - }, [avatar && createVNode("div", { - "class": `${prefixCls.value}-item-meta-avatar` - }, [avatar]), (title || description) && content]); - }; - } -}); - -// node_modules/ant-design-vue/es/list/contextKey.js -var ListContextKey = Symbol("ListContextKey"); - -// node_modules/ant-design-vue/es/list/Item.js -var __rest50 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var listItemProps = () => ({ - prefixCls: String, - extra: vue_types_default.any, - actions: vue_types_default.array, - grid: Object, - colStyle: { - type: Object, - default: void 0 - } -}); -var Item_default3 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AListItem", - inheritAttrs: false, - Meta: ItemMeta_default, - props: listItemProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - itemLayout, - grid - } = inject(ListContextKey, { - grid: ref(), - itemLayout: ref() - }); - const { - prefixCls - } = useConfigInject_default("list", props4); - const isItemContainsTextNodeAndNotSingular = () => { - var _a2; - const children = ((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || []; - let result2; - children.forEach((element) => { - if (isStringElement(element) && !isEmptyElement(element)) { - result2 = true; - } - }); - return result2 && children.length > 1; - }; - const isFlexMode = () => { - var _a2, _b; - const extra = (_a2 = props4.extra) !== null && _a2 !== void 0 ? _a2 : (_b = slots.extra) === null || _b === void 0 ? void 0 : _b.call(slots); - if (itemLayout.value === "vertical") { - return !!extra; - } - return !isItemContainsTextNodeAndNotSingular(); - }; - return () => { - var _a2, _b, _c, _d, _e; - const { - class: className - } = attrs, restAttrs = __rest50(attrs, ["class"]); - const pre = prefixCls.value; - const extra = (_a2 = props4.extra) !== null && _a2 !== void 0 ? _a2 : (_b = slots.extra) === null || _b === void 0 ? void 0 : _b.call(slots); - const children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots); - let actions = (_d = props4.actions) !== null && _d !== void 0 ? _d : flattenChildren((_e = slots.actions) === null || _e === void 0 ? void 0 : _e.call(slots)); - actions = actions && !Array.isArray(actions) ? [actions] : actions; - const actionsContent = actions && actions.length > 0 && createVNode("ul", { - "class": `${pre}-item-action`, - "key": "actions" - }, [actions.map((action, i3) => createVNode("li", { - "key": `${pre}-item-action-${i3}` - }, [action, i3 !== actions.length - 1 && createVNode("em", { - "class": `${pre}-item-action-split` - }, null)]))]); - const Element3 = grid.value ? "div" : "li"; - const itemChildren = createVNode(Element3, _objectSpread2(_objectSpread2({}, restAttrs), {}, { - "class": classNames_default(`${pre}-item`, { - [`${pre}-item-no-flex`]: !isFlexMode() - }, className) - }), { - default: () => [itemLayout.value === "vertical" && extra ? [createVNode("div", { - "class": `${pre}-item-main`, - "key": "content" - }, [children, actionsContent]), createVNode("div", { - "class": `${pre}-item-extra`, - "key": "extra" - }, [extra])] : [children, actionsContent, cloneElement(extra, { - key: "extra" - })]] - }); - return grid.value ? createVNode(Col_default, { - "flex": 1, - "style": props4.colStyle - }, { - default: () => [itemChildren] - }) : itemChildren; - }; - } -}); - -// node_modules/ant-design-vue/es/list/style/index.js -var genBorderedStyle3 = (token2) => { - const { - listBorderedCls, - componentCls, - paddingLG, - margin, - padding, - listItemPaddingSM, - marginLG, - borderRadiusLG - } = token2; - return { - [`${listBorderedCls}`]: { - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: borderRadiusLG, - [`${componentCls}-header,${componentCls}-footer,${componentCls}-item`]: { - paddingInline: paddingLG - }, - [`${componentCls}-pagination`]: { - margin: `${margin}px ${marginLG}px` - } - }, - [`${listBorderedCls}${componentCls}-sm`]: { - [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: { - padding: listItemPaddingSM - } - }, - [`${listBorderedCls}${componentCls}-lg`]: { - [`${componentCls}-item,${componentCls}-header,${componentCls}-footer`]: { - padding: `${padding}px ${paddingLG}px` - } - } - }; -}; -var genResponsiveStyle = (token2) => { - const { - componentCls, - screenSM, - screenMD, - marginLG, - marginSM, - margin - } = token2; - return { - [`@media screen and (max-width:${screenMD})`]: { - [`${componentCls}`]: { - [`${componentCls}-item`]: { - [`${componentCls}-item-action`]: { - marginInlineStart: marginLG - } - } - }, - [`${componentCls}-vertical`]: { - [`${componentCls}-item`]: { - [`${componentCls}-item-extra`]: { - marginInlineStart: marginLG - } - } - } - }, - [`@media screen and (max-width: ${screenSM})`]: { - [`${componentCls}`]: { - [`${componentCls}-item`]: { - flexWrap: "wrap", - [`${componentCls}-action`]: { - marginInlineStart: marginSM - } - } - }, - [`${componentCls}-vertical`]: { - [`${componentCls}-item`]: { - flexWrap: "wrap-reverse", - [`${componentCls}-item-main`]: { - minWidth: token2.contentWidth - }, - [`${componentCls}-item-extra`]: { - margin: `auto auto ${margin}px` - } - } - } - } - }; -}; -var genBaseStyle11 = (token2) => { - const { - componentCls, - antCls, - controlHeight, - minHeight, - paddingSM, - marginLG, - padding, - listItemPadding, - colorPrimary, - listItemPaddingSM, - listItemPaddingLG, - paddingXS, - margin, - colorText, - colorTextDescription, - motionDurationSlow, - lineWidth - } = token2; - return { - [`${componentCls}`]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - "*": { - outline: "none" - }, - [`${componentCls}-header, ${componentCls}-footer`]: { - background: "transparent", - paddingBlock: paddingSM - }, - [`${componentCls}-pagination`]: { - marginBlockStart: marginLG, - textAlign: "end", - // https://github.com/ant-design/ant-design/issues/20037 - [`${antCls}-pagination-options`]: { - textAlign: "start" - } - }, - [`${componentCls}-spin`]: { - minHeight, - textAlign: "center" - }, - [`${componentCls}-items`]: { - margin: 0, - padding: 0, - listStyle: "none" - }, - [`${componentCls}-item`]: { - display: "flex", - alignItems: "center", - justifyContent: "space-between", - padding: listItemPadding, - color: colorText, - [`${componentCls}-item-meta`]: { - display: "flex", - flex: 1, - alignItems: "flex-start", - maxWidth: "100%", - [`${componentCls}-item-meta-avatar`]: { - marginInlineEnd: padding - }, - [`${componentCls}-item-meta-content`]: { - flex: "1 0", - width: 0, - color: colorText - }, - [`${componentCls}-item-meta-title`]: { - marginBottom: token2.marginXXS, - color: colorText, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - "> a": { - color: colorText, - transition: `all ${motionDurationSlow}`, - [`&:hover`]: { - color: colorPrimary - } - } - }, - [`${componentCls}-item-meta-description`]: { - color: colorTextDescription, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight - } - }, - [`${componentCls}-item-action`]: { - flex: "0 0 auto", - marginInlineStart: token2.marginXXL, - padding: 0, - fontSize: 0, - listStyle: "none", - [`& > li`]: { - position: "relative", - display: "inline-block", - padding: `0 ${paddingXS}px`, - color: colorTextDescription, - fontSize: token2.fontSize, - lineHeight: token2.lineHeight, - textAlign: "center", - [`&:first-child`]: { - paddingInlineStart: 0 - } - }, - [`${componentCls}-item-action-split`]: { - position: "absolute", - insetBlockStart: "50%", - insetInlineEnd: 0, - width: lineWidth, - height: Math.ceil(token2.fontSize * token2.lineHeight) - token2.marginXXS * 2, - transform: "translateY(-50%)", - backgroundColor: token2.colorSplit - } - } - }, - [`${componentCls}-empty`]: { - padding: `${padding}px 0`, - color: colorTextDescription, - fontSize: token2.fontSizeSM, - textAlign: "center" - }, - [`${componentCls}-empty-text`]: { - padding, - color: token2.colorTextDisabled, - fontSize: token2.fontSize, - textAlign: "center" - }, - // ============================ without flex ============================ - [`${componentCls}-item-no-flex`]: { - display: "block" - } - }), - [`${componentCls}-grid ${antCls}-col > ${componentCls}-item`]: { - display: "block", - maxWidth: "100%", - marginBlockEnd: margin, - paddingBlock: 0, - borderBlockEnd: "none" - }, - [`${componentCls}-vertical ${componentCls}-item`]: { - alignItems: "initial", - [`${componentCls}-item-main`]: { - display: "block", - flex: 1 - }, - [`${componentCls}-item-extra`]: { - marginInlineStart: marginLG - }, - [`${componentCls}-item-meta`]: { - marginBlockEnd: padding, - [`${componentCls}-item-meta-title`]: { - marginBlockEnd: paddingSM, - color: colorText, - fontSize: token2.fontSizeLG, - lineHeight: token2.lineHeightLG - } - }, - [`${componentCls}-item-action`]: { - marginBlockStart: padding, - marginInlineStart: "auto", - "> li": { - padding: `0 ${padding}px`, - [`&:first-child`]: { - paddingInlineStart: 0 - } - } - } - }, - [`${componentCls}-split ${componentCls}-item`]: { - borderBlockEnd: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - [`&:last-child`]: { - borderBlockEnd: "none" - } - }, - [`${componentCls}-split ${componentCls}-header`]: { - borderBlockEnd: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - [`${componentCls}-split${componentCls}-empty ${componentCls}-footer`]: { - borderTop: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - [`${componentCls}-loading ${componentCls}-spin-nested-loading`]: { - minHeight: controlHeight - }, - [`${componentCls}-split${componentCls}-something-after-last-item ${antCls}-spin-container > ${componentCls}-items > ${componentCls}-item:last-child`]: { - borderBlockEnd: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - [`${componentCls}-lg ${componentCls}-item`]: { - padding: listItemPaddingLG - }, - [`${componentCls}-sm ${componentCls}-item`]: { - padding: listItemPaddingSM - }, - // Horizontal - [`${componentCls}:not(${componentCls}-vertical)`]: { - [`${componentCls}-item-no-flex`]: { - [`${componentCls}-item-action`]: { - float: "right" - } - } - } - }; -}; -var style_default43 = genComponentStyleHook("List", (token2) => { - const listToken = merge(token2, { - listBorderedCls: `${token2.componentCls}-bordered`, - minHeight: token2.controlHeightLG, - listItemPadding: `${token2.paddingContentVertical}px ${token2.paddingContentHorizontalLG}px`, - listItemPaddingSM: `${token2.paddingContentVerticalSM}px ${token2.paddingContentHorizontal}px`, - listItemPaddingLG: `${token2.paddingContentVerticalLG}px ${token2.paddingContentHorizontalLG}px` - }); - return [genBaseStyle11(listToken), genBorderedStyle3(listToken), genResponsiveStyle(listToken)]; -}, { - contentWidth: 220 -}); - -// node_modules/ant-design-vue/es/list/index.js -var listProps = () => ({ - bordered: booleanType(), - dataSource: arrayType(), - extra: vNodeType(), - grid: objectType(), - itemLayout: String, - loading: someType([Boolean, Object]), - loadMore: vNodeType(), - pagination: someType([Boolean, Object]), - prefixCls: String, - rowKey: someType([String, Number, Function]), - renderItem: functionType(), - size: String, - split: booleanType(), - header: vNodeType(), - footer: vNodeType(), - locale: objectType() -}); -var List2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AList", - inheritAttrs: false, - Item: Item_default3, - props: initDefaultProps_default(listProps(), { - dataSource: [], - bordered: false, - split: true, - loading: false, - pagination: false - }), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - var _a2, _b; - provide(ListContextKey, { - grid: toRef(props4, "grid"), - itemLayout: toRef(props4, "itemLayout") - }); - const defaultPaginationProps = { - current: 1, - total: 0 - }; - const { - prefixCls, - direction, - renderEmpty: renderEmpty2 - } = useConfigInject_default("list", props4); - const [wrapSSR, hashId] = style_default43(prefixCls); - const paginationObj = computed(() => props4.pagination && typeof props4.pagination === "object" ? props4.pagination : {}); - const paginationCurrent = ref((_a2 = paginationObj.value.defaultCurrent) !== null && _a2 !== void 0 ? _a2 : 1); - const paginationSize = ref((_b = paginationObj.value.defaultPageSize) !== null && _b !== void 0 ? _b : 10); - watch(paginationObj, () => { - if ("current" in paginationObj.value) { - paginationCurrent.value = paginationObj.value.current; - } - if ("pageSize" in paginationObj.value) { - paginationSize.value = paginationObj.value.pageSize; - } - }); - const listItemsKeys = []; - const triggerPaginationEvent = (eventName) => (page, pageSize) => { - paginationCurrent.value = page; - paginationSize.value = pageSize; - if (paginationObj.value[eventName]) { - paginationObj.value[eventName](page, pageSize); - } - }; - const onPaginationChange = triggerPaginationEvent("onChange"); - const onPaginationShowSizeChange = triggerPaginationEvent("onShowSizeChange"); - const loadingProp = computed(() => { - if (typeof props4.loading === "boolean") { - return { - spinning: props4.loading - }; - } else { - return props4.loading; - } - }); - const isLoading = computed(() => loadingProp.value && loadingProp.value.spinning); - const sizeCls = computed(() => { - let size2 = ""; - switch (props4.size) { - case "large": - size2 = "lg"; - break; - case "small": - size2 = "sm"; - break; - default: - break; - } - return size2; - }); - const classObj = computed(() => ({ - [`${prefixCls.value}`]: true, - [`${prefixCls.value}-vertical`]: props4.itemLayout === "vertical", - [`${prefixCls.value}-${sizeCls.value}`]: sizeCls.value, - [`${prefixCls.value}-split`]: props4.split, - [`${prefixCls.value}-bordered`]: props4.bordered, - [`${prefixCls.value}-loading`]: isLoading.value, - [`${prefixCls.value}-grid`]: !!props4.grid, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - })); - const paginationProps2 = computed(() => { - const pp = _extends(_extends(_extends({}, defaultPaginationProps), { - total: props4.dataSource.length, - current: paginationCurrent.value, - pageSize: paginationSize.value - }), props4.pagination || {}); - const largestPage = Math.ceil(pp.total / pp.pageSize); - if (pp.current > largestPage) { - pp.current = largestPage; - } - return pp; - }); - const splitDataSource = computed(() => { - let dd = [...props4.dataSource]; - if (props4.pagination) { - if (props4.dataSource.length > (paginationProps2.value.current - 1) * paginationProps2.value.pageSize) { - dd = [...props4.dataSource].splice((paginationProps2.value.current - 1) * paginationProps2.value.pageSize, paginationProps2.value.pageSize); - } - } - return dd; - }); - const screens = useBreakpoint_default(); - const currentBreakpoint = eagerComputed(() => { - for (let i3 = 0; i3 < responsiveArray.length; i3 += 1) { - const breakpoint = responsiveArray[i3]; - if (screens.value[breakpoint]) { - return breakpoint; - } - } - return void 0; - }); - const colStyle = computed(() => { - if (!props4.grid) { - return void 0; - } - const columnCount = currentBreakpoint.value && props4.grid[currentBreakpoint.value] ? props4.grid[currentBreakpoint.value] : props4.grid.column; - if (columnCount) { - return { - width: `${100 / columnCount}%`, - maxWidth: `${100 / columnCount}%` - }; - } - return void 0; - }); - const renderInnerItem = (item, index3) => { - var _a3; - const renderItem = (_a3 = props4.renderItem) !== null && _a3 !== void 0 ? _a3 : slots.renderItem; - if (!renderItem) return null; - let key2; - const rowKeyType = typeof props4.rowKey; - if (rowKeyType === "function") { - key2 = props4.rowKey(item); - } else if (rowKeyType === "string" || rowKeyType === "number") { - key2 = item[props4.rowKey]; - } else { - key2 = item.key; - } - if (!key2) { - key2 = `list-item-${index3}`; - } - listItemsKeys[index3] = key2; - return renderItem({ - item, - index: index3 - }); - }; - return () => { - var _a3, _b2, _c, _d, _e, _f, _g, _h; - const loadMore = (_a3 = props4.loadMore) !== null && _a3 !== void 0 ? _a3 : (_b2 = slots.loadMore) === null || _b2 === void 0 ? void 0 : _b2.call(slots); - const footer = (_c = props4.footer) !== null && _c !== void 0 ? _c : (_d = slots.footer) === null || _d === void 0 ? void 0 : _d.call(slots); - const header = (_e = props4.header) !== null && _e !== void 0 ? _e : (_f = slots.header) === null || _f === void 0 ? void 0 : _f.call(slots); - const children = flattenChildren((_g = slots.default) === null || _g === void 0 ? void 0 : _g.call(slots)); - const isSomethingAfterLastItem = !!(loadMore || props4.pagination || footer); - const classString = classNames_default(_extends(_extends({}, classObj.value), { - [`${prefixCls.value}-something-after-last-item`]: isSomethingAfterLastItem - }), attrs.class, hashId.value); - const paginationContent = props4.pagination ? createVNode("div", { - "class": `${prefixCls.value}-pagination` - }, [createVNode(pagination_default, _objectSpread2(_objectSpread2({}, paginationProps2.value), {}, { - "onChange": onPaginationChange, - "onShowSizeChange": onPaginationShowSizeChange - }), null)]) : null; - let childrenContent = isLoading.value && createVNode("div", { - "style": { - minHeight: "53px" - } - }, null); - if (splitDataSource.value.length > 0) { - listItemsKeys.length = 0; - const items = splitDataSource.value.map((item, index3) => renderInnerItem(item, index3)); - const childrenList = items.map((child, index3) => createVNode("div", { - "key": listItemsKeys[index3], - "style": colStyle.value - }, [child])); - childrenContent = props4.grid ? createVNode(Row_default, { - "gutter": props4.grid.gutter - }, { - default: () => [childrenList] - }) : createVNode("ul", { - "class": `${prefixCls.value}-items` - }, [items]); - } else if (!children.length && !isLoading.value) { - childrenContent = createVNode("div", { - "class": `${prefixCls.value}-empty-text` - }, [((_h = props4.locale) === null || _h === void 0 ? void 0 : _h.emptyText) || renderEmpty2("List")]); - } - const paginationPosition = paginationProps2.value.position || "bottom"; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classString - }), [(paginationPosition === "top" || paginationPosition === "both") && paginationContent, header && createVNode("div", { - "class": `${prefixCls.value}-header` - }, [header]), createVNode(spin_default, loadingProp.value, { - default: () => [childrenContent, children] - }), footer && createVNode("div", { - "class": `${prefixCls.value}-footer` - }, [footer]), loadMore || (paginationPosition === "bottom" || paginationPosition === "both") && paginationContent])); - }; - } -}); -List2.install = function(app) { - app.component(List2.name, List2); - app.component(List2.Item.name, List2.Item); - app.component(List2.Item.Meta.name, List2.Item.Meta); - return app; -}; -var list_default = List2; - -// node_modules/ant-design-vue/es/vc-mentions/src/util.js -function getBeforeSelectionText(input) { - const { - selectionStart - } = input; - return input.value.slice(0, selectionStart); -} -function getLastMeasureIndex(text) { - let prefix2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; - const prefixList = Array.isArray(prefix2) ? prefix2 : [prefix2]; - return prefixList.reduce((lastMatch, prefixStr) => { - const lastIndex = text.lastIndexOf(prefixStr); - if (lastIndex > lastMatch.location) { - return { - location: lastIndex, - prefix: prefixStr - }; - } - return lastMatch; - }, { - location: -1, - prefix: "" - }); -} -function lower(char2) { - return (char2 || "").toLowerCase(); -} -function reduceText(text, targetText, split2) { - const firstChar = text[0]; - if (!firstChar || firstChar === split2) { - return text; - } - let restText = text; - const targetTextLen = targetText.length; - for (let i3 = 0; i3 < targetTextLen; i3 += 1) { - if (lower(restText[i3]) !== lower(targetText[i3])) { - restText = restText.slice(i3); - break; - } else if (i3 === targetTextLen - 1) { - restText = restText.slice(targetTextLen); - } - } - return restText; -} -function replaceWithMeasure(text, measureConfig) { - const { - measureLocation, - prefix: prefix2, - targetText, - selectionStart, - split: split2 - } = measureConfig; - let beforeMeasureText = text.slice(0, measureLocation); - if (beforeMeasureText[beforeMeasureText.length - split2.length] === split2) { - beforeMeasureText = beforeMeasureText.slice(0, beforeMeasureText.length - split2.length); - } - if (beforeMeasureText) { - beforeMeasureText = `${beforeMeasureText}${split2}`; - } - let restText = reduceText(text.slice(selectionStart), targetText.slice(selectionStart - measureLocation - prefix2.length), split2); - if (restText.slice(0, split2.length) === split2) { - restText = restText.slice(split2.length); - } - const connectedStartText = `${beforeMeasureText}${prefix2}${targetText}${split2}`; - return { - text: `${connectedStartText}${restText}`, - selectionLocation: connectedStartText.length - }; -} -function setInputSelection(input, location) { - input.setSelectionRange(location, location); - input.blur(); - input.focus(); -} -function validateSearch(text, props4) { - const { - split: split2 - } = props4; - return !split2 || text.indexOf(split2) === -1; -} -function filterOption(input, _ref) { - let { - value = "" - } = _ref; - const lowerCase2 = input.toLowerCase(); - return value.toLowerCase().indexOf(lowerCase2) !== -1; -} - -// node_modules/ant-design-vue/es/vc-mentions/src/MentionsContext.js -var MentionsContextKey = Symbol("MentionsContextKey"); -var MentionsContext_default = MentionsContextKey; - -// node_modules/ant-design-vue/es/vc-mentions/src/DropdownMenu.js -function noop9() { -} -var DropdownMenu_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "DropdownMenu", - props: { - prefixCls: String, - options: { - type: Array, - default: () => [] - } - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const { - activeIndex, - setActiveIndex, - selectOption, - onFocus = noop9, - loading - } = inject(MentionsContext_default, { - activeIndex: shallowRef(), - loading: shallowRef(false) - }); - let timeoutId; - const onMousedown = (e3) => { - clearTimeout(timeoutId); - timeoutId = setTimeout(() => { - onFocus(e3); - }); - }; - onBeforeUnmount(() => { - clearTimeout(timeoutId); - }); - return () => { - var _a2; - const { - prefixCls, - options - } = props4; - const activeOption = options[activeIndex.value] || {}; - return createVNode(menu_default, { - "prefixCls": `${prefixCls}-menu`, - "activeKey": activeOption.value, - "onSelect": (_ref2) => { - let { - key: key2 - } = _ref2; - const option = options.find((_ref3) => { - let { - value - } = _ref3; - return value === key2; - }); - selectOption(option); - }, - "onMousedown": onMousedown - }, { - default: () => [!loading.value && options.map((option, index3) => { - var _a3, _b; - const { - value, - disabled, - label = option.value, - class: className, - style - } = option; - return createVNode(MenuItem_default, { - "key": value, - "disabled": disabled, - "onMouseenter": () => { - setActiveIndex(index3); - }, - "class": className, - "style": style - }, { - default: () => [(_b = (_a3 = slots.option) === null || _a3 === void 0 ? void 0 : _a3.call(slots, option)) !== null && _b !== void 0 ? _b : typeof label === "function" ? label(option) : label] - }); - }), !loading.value && options.length === 0 ? createVNode(MenuItem_default, { - "key": "notFoundContent", - "disabled": true - }, { - default: () => [(_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }) : null, loading.value && createVNode(MenuItem_default, { - "key": "loading", - "disabled": true - }, { - default: () => [createVNode(spin_default, { - "size": "small" - }, null)] - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-mentions/src/KeywordTrigger.js -var BUILT_IN_PLACEMENTS2 = { - bottomRight: { - points: ["tl", "br"], - offset: [0, 4], - overflow: { - adjustX: 0, - adjustY: 1 - } - }, - bottomLeft: { - points: ["tr", "bl"], - offset: [0, 4], - overflow: { - adjustX: 0, - adjustY: 1 - } - }, - topRight: { - points: ["bl", "tr"], - offset: [0, -4], - overflow: { - adjustX: 0, - adjustY: 1 - } - }, - topLeft: { - points: ["br", "tl"], - offset: [0, -4], - overflow: { - adjustX: 0, - adjustY: 1 - } - } -}; -var KeywordTrigger_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "KeywordTrigger", - props: { - loading: { - type: Boolean, - default: void 0 - }, - options: { - type: Array, - default: () => [] - }, - prefixCls: String, - placement: String, - visible: { - type: Boolean, - default: void 0 - }, - transitionName: String, - getPopupContainer: Function, - direction: String, - dropdownClassName: String - }, - setup(props4, _ref) { - let { - slots - } = _ref; - const getDropdownPrefix = () => { - return `${props4.prefixCls}-dropdown`; - }; - const getDropdownElement = () => { - const { - options - } = props4; - return createVNode(DropdownMenu_default, { - "prefixCls": getDropdownPrefix(), - "options": options - }, { - notFoundContent: slots.notFoundContent, - option: slots.option - }); - }; - const popupPlacement = computed(() => { - const { - placement, - direction - } = props4; - let popupPlacement2 = "topRight"; - if (direction === "rtl") { - popupPlacement2 = placement === "top" ? "topLeft" : "bottomLeft"; - } else { - popupPlacement2 = placement === "top" ? "topRight" : "bottomRight"; - } - return popupPlacement2; - }); - return () => { - const { - visible, - transitionName: transitionName2, - getPopupContainer - } = props4; - return createVNode(vc_trigger_default, { - "prefixCls": getDropdownPrefix(), - "popupVisible": visible, - "popup": getDropdownElement(), - "popupClassName": props4.dropdownClassName, - "popupPlacement": popupPlacement.value, - "popupTransitionName": transitionName2, - "builtinPlacements": BUILT_IN_PLACEMENTS2, - "getPopupContainer": getPopupContainer - }, { - default: slots.default - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-mentions/src/mentionsProps.js -var PlaceMent = tuple("top", "bottom"); -var mentionsProps = { - autofocus: { - type: Boolean, - default: void 0 - }, - prefix: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.arrayOf(vue_types_default.string)]), - prefixCls: String, - value: String, - disabled: { - type: Boolean, - default: void 0 - }, - split: String, - transitionName: String, - placement: vue_types_default.oneOf(PlaceMent), - character: vue_types_default.any, - characterRender: Function, - filterOption: { - type: [Boolean, Function] - }, - validateSearch: Function, - getPopupContainer: { - type: Function - }, - options: arrayType(), - loading: { - type: Boolean, - default: void 0 - }, - rows: [Number, String], - direction: { - type: String - } -}; -var vcMentionsProps = _extends(_extends({}, mentionsProps), { - dropdownClassName: String -}); -var defaultProps2 = { - prefix: "@", - split: " ", - rows: 1, - validateSearch, - filterOption: () => filterOption -}; -var mentionsProps_default = initDefaultProps_default(vcMentionsProps, defaultProps2); - -// node_modules/ant-design-vue/es/vc-mentions/src/Mentions.js -var __rest51 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function noop10() { -} -var Mentions_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Mentions", - inheritAttrs: false, - props: initDefaultProps_default(vcMentionsProps, defaultProps2), - emits: ["change", "select", "search", "focus", "blur", "pressenter"], - setup(props4, _ref) { - let { - emit, - attrs, - expose, - slots - } = _ref; - const measure2 = ref(null); - const textarea = ref(null); - const focusId = ref(); - const state = reactive({ - value: props4.value || "", - measuring: false, - measureLocation: 0, - measureText: null, - measurePrefix: "", - activeIndex: 0, - isFocus: false - }); - watchEffect(() => { - state.value = props4.value; - }); - const triggerChange = (val) => { - emit("change", val); - }; - const onChange = (_ref2) => { - let { - target: { - value, - composing - }, - isComposing - } = _ref2; - if (isComposing || composing) return; - triggerChange(value); - }; - const startMeasure = (measureText, measurePrefix, measureLocation) => { - _extends(state, { - measuring: true, - measureText, - measurePrefix, - measureLocation, - activeIndex: 0 - }); - }; - const stopMeasure = (callback) => { - _extends(state, { - measuring: false, - measureLocation: 0, - measureText: null - }); - callback === null || callback === void 0 ? void 0 : callback(); - }; - const onKeyDown2 = (event) => { - const { - which - } = event; - if (!state.measuring) { - return; - } - if (which === KeyCode_default.UP || which === KeyCode_default.DOWN) { - const optionLen = options.value.length; - const offset4 = which === KeyCode_default.UP ? -1 : 1; - const newActiveIndex = (state.activeIndex + offset4 + optionLen) % optionLen; - state.activeIndex = newActiveIndex; - event.preventDefault(); - } else if (which === KeyCode_default.ESC) { - stopMeasure(); - } else if (which === KeyCode_default.ENTER) { - event.preventDefault(); - if (!options.value.length) { - stopMeasure(); - return; - } - const option = options.value[state.activeIndex]; - selectOption(option); - } - }; - const onKeyUp = (event) => { - const { - key: key2, - which - } = event; - const { - measureText: prevMeasureText, - measuring - } = state; - const { - prefix: prefix2, - validateSearch: validateSearch2 - } = props4; - const target = event.target; - if (target.composing) { - return; - } - const selectionStartText = getBeforeSelectionText(target); - const { - location: measureIndex, - prefix: measurePrefix - } = getLastMeasureIndex(selectionStartText, prefix2); - if ([KeyCode_default.ESC, KeyCode_default.UP, KeyCode_default.DOWN, KeyCode_default.ENTER].indexOf(which) !== -1) { - return; - } - if (measureIndex !== -1) { - const measureText = selectionStartText.slice(measureIndex + measurePrefix.length); - const validateMeasure = validateSearch2(measureText, props4); - const matchOption = !!getOptions2(measureText).length; - if (validateMeasure) { - if (key2 === measurePrefix || key2 === "Shift" || measuring || measureText !== prevMeasureText && matchOption) { - startMeasure(measureText, measurePrefix, measureIndex); - } - } else if (measuring) { - stopMeasure(); - } - if (validateMeasure) { - emit("search", measureText, measurePrefix); - } - } else if (measuring) { - stopMeasure(); - } - }; - const onPressEnter = (event) => { - if (!state.measuring) { - emit("pressenter", event); - } - }; - const onInputFocus = (event) => { - onFocus(event); - }; - const onInputBlur = (event) => { - onBlur(event); - }; - const onFocus = (event) => { - clearTimeout(focusId.value); - const { - isFocus - } = state; - if (!isFocus && event) { - emit("focus", event); - } - state.isFocus = true; - }; - const onBlur = (event) => { - focusId.value = setTimeout(() => { - state.isFocus = false; - stopMeasure(); - emit("blur", event); - }, 100); - }; - const selectOption = (option) => { - const { - split: split2 - } = props4; - const { - value: mentionValue = "" - } = option; - const { - text, - selectionLocation - } = replaceWithMeasure(state.value, { - measureLocation: state.measureLocation, - targetText: mentionValue, - prefix: state.measurePrefix, - selectionStart: textarea.value.selectionStart, - split: split2 - }); - triggerChange(text); - stopMeasure(() => { - setInputSelection(textarea.value, selectionLocation); - }); - emit("select", option, state.measurePrefix); - }; - const setActiveIndex = (activeIndex) => { - state.activeIndex = activeIndex; - }; - const getOptions2 = (measureText) => { - const targetMeasureText = measureText || state.measureText || ""; - const { - filterOption: filterOption2 - } = props4; - const list = props4.options.filter((option) => { - if (!!filterOption2 === false) { - return true; - } - return filterOption2(targetMeasureText, option); - }); - return list; - }; - const options = computed(() => { - return getOptions2(); - }); - const focus = () => { - textarea.value.focus(); - }; - const blur = () => { - textarea.value.blur(); - }; - expose({ - blur, - focus - }); - provide(MentionsContext_default, { - activeIndex: toRef(state, "activeIndex"), - setActiveIndex, - selectOption, - onFocus, - onBlur, - loading: toRef(props4, "loading") - }); - onUpdated(() => { - nextTick(() => { - if (state.measuring) { - measure2.value.scrollTop = textarea.value.scrollTop; - } - }); - }); - return () => { - const { - measureLocation, - measurePrefix, - measuring - } = state; - const { - prefixCls, - placement, - transitionName: transitionName2, - getPopupContainer, - direction - } = props4, restProps = __rest51(props4, ["prefixCls", "placement", "transitionName", "getPopupContainer", "direction"]); - const { - class: className, - style - } = attrs, otherAttrs = __rest51(attrs, ["class", "style"]); - const inputProps4 = omit_default(restProps, ["value", "prefix", "split", "validateSearch", "filterOption", "options", "loading"]); - const textareaProps = _extends(_extends(_extends({}, inputProps4), otherAttrs), { - onChange: noop10, - onSelect: noop10, - value: state.value, - onInput: onChange, - onBlur: onInputBlur, - onKeydown: onKeyDown2, - onKeyup: onKeyUp, - onFocus: onInputFocus, - onPressenter: onPressEnter - }); - return createVNode("div", { - "class": classNames_default(prefixCls, className), - "style": style - }, [withDirectives(createVNode("textarea", _objectSpread2({ - "ref": textarea - }, textareaProps), null), [[antInputDirective_default]]), measuring && createVNode("div", { - "ref": measure2, - "class": `${prefixCls}-measure` - }, [state.value.slice(0, measureLocation), createVNode(KeywordTrigger_default, { - "prefixCls": prefixCls, - "transitionName": transitionName2, - "dropdownClassName": props4.dropdownClassName, - "placement": placement, - "options": measuring ? options.value : [], - "visible": true, - "direction": direction, - "getPopupContainer": getPopupContainer - }, { - default: () => [createVNode("span", null, [measurePrefix])], - notFoundContent: slots.notFoundContent, - option: slots.option - }), state.value.slice(measureLocation + measurePrefix.length)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-mentions/src/Option.js -var baseOptionsProps = { - value: String, - disabled: Boolean, - payload: objectType() -}; -var optionProps = _extends(_extends({}, baseOptionsProps), { - label: anyType([]) -}); -var optionOptions = { - name: "Option", - props: optionProps, - render(_props, _ref) { - let { - slots - } = _ref; - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - } -}; -var Option_default3 = defineComponent(_extends({ - compatConfig: { - MODE: 3 - } -}, optionOptions)); - -// node_modules/ant-design-vue/es/vc-mentions/index.js -var vc_mentions_default = Mentions_default; - -// node_modules/ant-design-vue/es/mentions/style/index.js -var genMentionsStyle = (token2) => { - const { - componentCls, - colorTextDisabled, - controlItemBgHover, - controlPaddingHorizontal, - colorText, - motionDurationSlow, - lineHeight, - controlHeight, - inputPaddingHorizontal, - inputPaddingVertical, - fontSize, - colorBgElevated, - borderRadiusLG, - boxShadowSecondary - } = token2; - const itemPaddingVertical = Math.round((token2.controlHeight - token2.fontSize * token2.lineHeight) / 2); - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), genBasicInputStyle(token2)), { - position: "relative", - display: "inline-block", - height: "auto", - padding: 0, - overflow: "hidden", - lineHeight, - whiteSpace: "pre-wrap", - verticalAlign: "bottom" - }), genStatusStyle3(token2, componentCls)), { - "&-disabled": { - "> textarea": _extends({}, genDisabledStyle2(token2)) - }, - "&-focused": _extends({}, genActiveStyle(token2)), - [`&-affix-wrapper ${componentCls}-suffix`]: { - position: "absolute", - top: 0, - insetInlineEnd: inputPaddingHorizontal, - bottom: 0, - zIndex: 1, - display: "inline-flex", - alignItems: "center", - margin: "auto" - }, - // ================= Input Area ================= - [`> textarea, ${componentCls}-measure`]: { - color: colorText, - boxSizing: "border-box", - minHeight: controlHeight - 2, - margin: 0, - padding: `${inputPaddingVertical}px ${inputPaddingHorizontal}px`, - overflow: "inherit", - overflowX: "hidden", - overflowY: "auto", - fontWeight: "inherit", - fontSize: "inherit", - fontFamily: "inherit", - fontStyle: "inherit", - fontVariant: "inherit", - fontSizeAdjust: "inherit", - fontStretch: "inherit", - lineHeight: "inherit", - direction: "inherit", - letterSpacing: "inherit", - whiteSpace: "inherit", - textAlign: "inherit", - verticalAlign: "top", - wordWrap: "break-word", - wordBreak: "inherit", - tabSize: "inherit" - }, - "> textarea": _extends({ - width: "100%", - border: "none", - outline: "none", - resize: "none", - backgroundColor: "inherit" - }, genPlaceholderStyle(token2.colorTextPlaceholder)), - [`${componentCls}-measure`]: { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - zIndex: -1, - color: "transparent", - pointerEvents: "none", - "> span": { - display: "inline-block", - minHeight: "1em" - } - }, - // ================== Dropdown ================== - "&-dropdown": _extends(_extends({}, resetComponent(token2)), { - position: "absolute", - top: -9999, - insetInlineStart: -9999, - zIndex: token2.zIndexPopup, - boxSizing: "border-box", - fontSize, - fontVariant: "initial", - backgroundColor: colorBgElevated, - borderRadius: borderRadiusLG, - outline: "none", - boxShadow: boxShadowSecondary, - "&-hidden": { - display: "none" - }, - [`${componentCls}-dropdown-menu`]: { - maxHeight: token2.dropdownHeight, - marginBottom: 0, - paddingInlineStart: 0, - overflow: "auto", - listStyle: "none", - outline: "none", - "&-item": _extends(_extends({}, textEllipsis), { - position: "relative", - display: "block", - minWidth: token2.controlItemWidth, - padding: `${itemPaddingVertical}px ${controlPaddingHorizontal}px`, - color: colorText, - fontWeight: "normal", - lineHeight, - cursor: "pointer", - transition: `background ${motionDurationSlow} ease`, - "&:hover": { - backgroundColor: controlItemBgHover - }, - "&:first-child": { - borderStartStartRadius: borderRadiusLG, - borderStartEndRadius: borderRadiusLG, - borderEndStartRadius: 0, - borderEndEndRadius: 0 - }, - "&:last-child": { - borderStartStartRadius: 0, - borderStartEndRadius: 0, - borderEndStartRadius: borderRadiusLG, - borderEndEndRadius: borderRadiusLG - }, - "&-disabled": { - color: colorTextDisabled, - cursor: "not-allowed", - "&:hover": { - color: colorTextDisabled, - backgroundColor: controlItemBgHover, - cursor: "not-allowed" - } - }, - "&-selected": { - color: colorText, - fontWeight: token2.fontWeightStrong, - backgroundColor: controlItemBgHover - }, - "&-active": { - backgroundColor: controlItemBgHover - } - }) - } - }) - }) - }; -}; -var style_default44 = genComponentStyleHook("Mentions", (token2) => { - const mentionsToken = initInputToken(token2); - return [genMentionsStyle(mentionsToken)]; -}, (token2) => ({ - dropdownHeight: 250, - controlItemWidth: 100, - zIndexPopup: token2.zIndexPopupBase + 50 -})); - -// node_modules/ant-design-vue/es/mentions/index.js -var __rest52 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function loadingFilterOption() { - return true; -} -var getMentions = function() { - let value = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - let config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - const { - prefix: prefix2 = "@", - split: split2 = " " - } = config; - const prefixList = Array.isArray(prefix2) ? prefix2 : [prefix2]; - return value.split(split2).map(function() { - let str = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - let hitPrefix = null; - prefixList.some((prefixStr) => { - const startStr = str.slice(0, prefixStr.length); - if (startStr === prefixStr) { - hitPrefix = prefixStr; - return true; - } - return false; - }); - if (hitPrefix !== null) { - return { - prefix: hitPrefix, - value: str.slice(hitPrefix.length) - }; - } - return null; - }).filter((entity) => !!entity && !!entity.value); -}; -var mentionsProps2 = () => _extends(_extends({}, mentionsProps), { - loading: { - type: Boolean, - default: void 0 - }, - onFocus: { - type: Function - }, - onBlur: { - type: Function - }, - onSelect: { - type: Function - }, - onChange: { - type: Function - }, - onPressenter: { - type: Function - }, - "onUpdate:value": { - type: Function - }, - notFoundContent: vue_types_default.any, - defaultValue: String, - id: String, - status: String -}); -var Mentions = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AMentions", - inheritAttrs: false, - props: mentionsProps2(), - slots: Object, - setup(props4, _ref) { - let { - slots, - emit, - attrs, - expose - } = _ref; - var _a2, _b, _c; - if (true) { - devWarning_default(!flattenChildren(((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || []).length, "Mentions", "`Mentions.Option` is deprecated. Please use `options` instead."); - } - const { - prefixCls, - renderEmpty: renderEmpty2, - direction - } = useConfigInject_default("mentions", props4); - const [wrapSSR, hashId] = style_default44(prefixCls); - const focused = shallowRef(false); - const vcMentions = shallowRef(null); - const value = shallowRef((_c = (_b = props4.value) !== null && _b !== void 0 ? _b : props4.defaultValue) !== null && _c !== void 0 ? _c : ""); - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - useProvideOverride({ - prefixCls: computed(() => `${prefixCls.value}-menu`), - mode: computed(() => "vertical"), - selectable: computed(() => false), - onClick: () => { - }, - validator: (_ref2) => { - let { - mode - } = _ref2; - warning_default2(!mode || mode === "vertical", "Mentions", `mode="${mode}" is not supported for Mentions's Menu.`); - } - }); - watch(() => props4.value, (val) => { - value.value = val; - }); - const handleFocus = (e3) => { - focused.value = true; - emit("focus", e3); - }; - const handleBlur = (e3) => { - focused.value = false; - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const handleSelect = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - emit("select", ...args); - focused.value = true; - }; - const handleChange = (val) => { - if (props4.value === void 0) { - value.value = val; - } - emit("update:value", val); - emit("change", val); - formItemContext.onFieldChange(); - }; - const getNotFoundContent = () => { - const notFoundContent = props4.notFoundContent; - if (notFoundContent !== void 0) { - return notFoundContent; - } - if (slots.notFoundContent) { - return slots.notFoundContent(); - } - return renderEmpty2("Select"); - }; - const getOptions2 = () => { - var _a3; - return flattenChildren(((_a3 = slots.default) === null || _a3 === void 0 ? void 0 : _a3.call(slots)) || []).map((item) => { - var _a4, _b2; - return _extends(_extends({}, getOptionProps(item)), { - label: (_b2 = (_a4 = item.children) === null || _a4 === void 0 ? void 0 : _a4.default) === null || _b2 === void 0 ? void 0 : _b2.call(_a4) - }); - }); - }; - const focus = () => { - vcMentions.value.focus(); - }; - const blur = () => { - vcMentions.value.blur(); - }; - expose({ - focus, - blur - }); - const mentionsfilterOption = computed(() => props4.loading ? loadingFilterOption : props4.filterOption); - return () => { - const { - disabled, - getPopupContainer, - rows = 1, - id = formItemContext.id.value - } = props4, restProps = __rest52(props4, ["disabled", "getPopupContainer", "rows", "id"]); - const { - hasFeedback, - feedbackIcon - } = formItemInputContext; - const { - class: className - } = attrs, otherAttrs = __rest52(attrs, ["class"]); - const otherProps = omit_default(restProps, ["defaultValue", "onUpdate:value", "prefixCls"]); - const mergedClassName = classNames_default({ - [`${prefixCls.value}-disabled`]: disabled, - [`${prefixCls.value}-focused`]: focused.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, getStatusClassNames(prefixCls.value, mergedStatus.value), !hasFeedback && className, hashId.value); - const mentionsProps3 = _extends(_extends(_extends(_extends({ - prefixCls: prefixCls.value - }, otherProps), { - disabled, - direction: direction.value, - filterOption: mentionsfilterOption.value, - getPopupContainer, - options: props4.loading ? [{ - value: "ANTDV_SEARCHING", - disabled: true, - label: createVNode(spin_default, { - "size": "small" - }, null) - }] : props4.options || getOptions2(), - class: mergedClassName - }), otherAttrs), { - rows, - onChange: handleChange, - onSelect: handleSelect, - onFocus: handleFocus, - onBlur: handleBlur, - ref: vcMentions, - value: value.value, - id - }); - const mentions = createVNode(vc_mentions_default, _objectSpread2(_objectSpread2({}, mentionsProps3), {}, { - "dropdownClassName": hashId.value - }), { - notFoundContent: getNotFoundContent, - option: slots.option - }); - if (hasFeedback) { - return wrapSSR(createVNode("div", { - "class": classNames_default(`${prefixCls.value}-affix-wrapper`, getStatusClassNames(`${prefixCls.value}-affix-wrapper`, mergedStatus.value, hasFeedback), className, hashId.value) - }, [mentions, createVNode("span", { - "class": `${prefixCls.value}-suffix` - }, [feedbackIcon])])); - } - return wrapSSR(mentions); - }; - } -}); -var MentionsOption = defineComponent(_extends(_extends({ - compatConfig: { - MODE: 3 - } -}, optionOptions), { - name: "AMentionsOption", - props: optionProps -})); -var mentions_default = _extends(Mentions, { - Option: MentionsOption, - getMentions, - install: (app) => { - app.component(Mentions.name, Mentions); - app.component(MentionsOption.name, MentionsOption); - return app; - } -}); - -// node_modules/ant-design-vue/es/modal/Modal.js -var __rest53 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var mousePosition; -var getClickPosition = (e3) => { - mousePosition = { - x: e3.pageX, - y: e3.pageY - }; - setTimeout(() => mousePosition = null, 100); -}; -if (canUseDocElement()) { - addEventListenerWrap(document.documentElement, "click", getClickPosition, true); -} -var modalProps = () => ({ - prefixCls: String, - /** @deprecated Please use `open` instead. */ - visible: { - type: Boolean, - default: void 0 - }, - open: { - type: Boolean, - default: void 0 - }, - confirmLoading: { - type: Boolean, - default: void 0 - }, - title: vue_types_default.any, - closable: { - type: Boolean, - default: void 0 - }, - closeIcon: vue_types_default.any, - onOk: Function, - onCancel: Function, - "onUpdate:visible": Function, - "onUpdate:open": Function, - onChange: Function, - afterClose: Function, - centered: { - type: Boolean, - default: void 0 - }, - width: [String, Number], - footer: vue_types_default.any, - okText: vue_types_default.any, - okType: String, - cancelText: vue_types_default.any, - icon: vue_types_default.any, - maskClosable: { - type: Boolean, - default: void 0 - }, - forceRender: { - type: Boolean, - default: void 0 - }, - okButtonProps: objectType(), - cancelButtonProps: objectType(), - destroyOnClose: { - type: Boolean, - default: void 0 - }, - wrapClassName: String, - maskTransitionName: String, - transitionName: String, - getContainer: { - type: [String, Function, Boolean, Object], - default: void 0 - }, - zIndex: Number, - bodyStyle: objectType(), - maskStyle: objectType(), - mask: { - type: Boolean, - default: void 0 - }, - keyboard: { - type: Boolean, - default: void 0 - }, - wrapProps: Object, - focusTriggerAfterClose: { - type: Boolean, - default: void 0 - }, - modalRender: Function, - mousePosition: objectType() -}); -var Modal_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AModal", - inheritAttrs: false, - props: initDefaultProps_default(modalProps(), { - width: 520, - confirmLoading: false, - okType: "primary" - }), - setup(props4, _ref) { - let { - emit, - slots, - attrs - } = _ref; - const [locale4] = useLocaleReceiver("Modal"); - const { - prefixCls, - rootPrefixCls, - direction, - getPopupContainer - } = useConfigInject_default("modal", props4); - const [wrapSSR, hashId] = style_default37(prefixCls); - warning_default2(props4.visible === void 0, "Modal", `\`visible\` will be removed in next major version, please use \`open\` instead.`); - const handleCancel = (e3) => { - emit("update:visible", false); - emit("update:open", false); - emit("cancel", e3); - emit("change", false); - }; - const handleOk = (e3) => { - emit("ok", e3); - }; - const renderFooter = () => { - var _a2, _b; - const { - okText = (_a2 = slots.okText) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - okType, - cancelText = (_b = slots.cancelText) === null || _b === void 0 ? void 0 : _b.call(slots), - confirmLoading - } = props4; - return createVNode(Fragment, null, [createVNode(button_default2, _objectSpread2({ - "onClick": handleCancel - }, props4.cancelButtonProps), { - default: () => [cancelText || locale4.value.cancelText] - }), createVNode(button_default2, _objectSpread2(_objectSpread2({}, convertLegacyProps(okType)), {}, { - "loading": confirmLoading, - "onClick": handleOk - }, props4.okButtonProps), { - default: () => [okText || locale4.value.okText] - })]); - }; - return () => { - var _a2, _b; - const { - prefixCls: customizePrefixCls, - visible, - open: open2, - wrapClassName, - centered, - getContainer: getContainer3, - closeIcon = (_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - focusTriggerAfterClose = true - } = props4, restProps = __rest53(props4, ["prefixCls", "visible", "open", "wrapClassName", "centered", "getContainer", "closeIcon", "focusTriggerAfterClose"]); - const wrapClassNameExtended = classNames_default(wrapClassName, { - [`${prefixCls.value}-centered`]: !!centered, - [`${prefixCls.value}-wrap-rtl`]: direction.value === "rtl" - }); - return wrapSSR(createVNode(vc_dialog_default, _objectSpread2(_objectSpread2(_objectSpread2({}, restProps), attrs), {}, { - "rootClassName": hashId.value, - "class": classNames_default(hashId.value, attrs.class), - "getContainer": getContainer3 || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value), - "prefixCls": prefixCls.value, - "wrapClassName": wrapClassNameExtended, - "visible": open2 !== null && open2 !== void 0 ? open2 : visible, - "onClose": handleCancel, - "focusTriggerAfterClose": focusTriggerAfterClose, - "transitionName": getTransitionName2(rootPrefixCls.value, "zoom", props4.transitionName), - "maskTransitionName": getTransitionName2(rootPrefixCls.value, "fade", props4.maskTransitionName), - "mousePosition": (_b = restProps.mousePosition) !== null && _b !== void 0 ? _b : mousePosition - }), _extends(_extends({}, slots), { - footer: slots.footer || renderFooter, - closeIcon: () => { - return createVNode("span", { - "class": `${prefixCls.value}-close-x` - }, [closeIcon || createVNode(CloseOutlined_default, { - "class": `${prefixCls.value}-close-icon` - }, null)]); - } - }))); - }; - } -}); - -// node_modules/ant-design-vue/es/_util/hooks/useDestroyed.js -var useDestroyed = () => { - const destroyed = shallowRef(false); - onBeforeUnmount(() => { - destroyed.value = true; - }); - return destroyed; -}; -var useDestroyed_default = useDestroyed; - -// node_modules/ant-design-vue/es/_util/ActionButton.js -var actionButtonProps = { - type: { - type: String - }, - actionFn: Function, - close: Function, - autofocus: Boolean, - prefixCls: String, - buttonProps: objectType(), - emitEvent: Boolean, - quitOnNullishReturnValue: Boolean -}; -function isThenable(thing) { - return !!(thing && thing.then); -} -var ActionButton_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ActionButton", - props: actionButtonProps, - setup(props4, _ref) { - let { - slots - } = _ref; - const clickedRef = shallowRef(false); - const buttonRef = shallowRef(); - const loading = shallowRef(false); - let timeoutId; - const isDestroyed = useDestroyed_default(); - onMounted(() => { - if (props4.autofocus) { - timeoutId = setTimeout(() => { - var _a2, _b; - return (_b = (_a2 = findDOMNode(buttonRef.value)) === null || _a2 === void 0 ? void 0 : _a2.focus) === null || _b === void 0 ? void 0 : _b.call(_a2); - }); - } - }); - onBeforeUnmount(() => { - clearTimeout(timeoutId); - }); - const onInternalClose = function() { - var _a2; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - (_a2 = props4.close) === null || _a2 === void 0 ? void 0 : _a2.call(props4, ...args); - }; - const handlePromiseOnOk = (returnValueOfOnOk) => { - if (!isThenable(returnValueOfOnOk)) { - return; - } - loading.value = true; - returnValueOfOnOk.then(function() { - if (!isDestroyed.value) { - loading.value = false; - } - onInternalClose(...arguments); - clickedRef.value = false; - }, (e3) => { - if (!isDestroyed.value) { - loading.value = false; - } - clickedRef.value = false; - return Promise.reject(e3); - }); - }; - const onClick = (e3) => { - const { - actionFn - } = props4; - if (clickedRef.value) { - return; - } - clickedRef.value = true; - if (!actionFn) { - onInternalClose(); - return; - } - let returnValueOfOnOk; - if (props4.emitEvent) { - returnValueOfOnOk = actionFn(e3); - if (props4.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) { - clickedRef.value = false; - onInternalClose(e3); - return; - } - } else if (actionFn.length) { - returnValueOfOnOk = actionFn(props4.close); - clickedRef.value = false; - } else { - returnValueOfOnOk = actionFn(); - if (!returnValueOfOnOk) { - onInternalClose(); - return; - } - } - handlePromiseOnOk(returnValueOfOnOk); - }; - return () => { - const { - type: type4, - prefixCls, - buttonProps: buttonProps2 - } = props4; - return createVNode(button_default2, _objectSpread2(_objectSpread2(_objectSpread2({}, convertLegacyProps(type4)), {}, { - "onClick": onClick, - "loading": loading.value, - "prefixCls": prefixCls - }, buttonProps2), {}, { - "ref": buttonRef - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/modal/ConfirmDialog.js -function renderSomeContent(someContent) { - if (typeof someContent === "function") { - return someContent(); - } - return someContent; -} -var ConfirmDialog_default = defineComponent({ - name: "ConfirmDialog", - inheritAttrs: false, - props: ["icon", "onCancel", "onOk", "close", "closable", "zIndex", "afterClose", "visible", "open", "keyboard", "centered", "getContainer", "maskStyle", "okButtonProps", "cancelButtonProps", "okType", "prefixCls", "okCancel", "width", "mask", "maskClosable", "okText", "cancelText", "autoFocusButton", "transitionName", "maskTransitionName", "type", "title", "content", "direction", "rootPrefixCls", "bodyStyle", "closeIcon", "modalRender", "focusTriggerAfterClose", "wrapClassName", "confirmPrefixCls", "footer"], - setup(props4, _ref) { - let { - attrs - } = _ref; - const [locale4] = useLocaleReceiver("Modal"); - if (true) { - warning_default2(props4.visible === void 0, "Modal", `\`visible\` is deprecated, please use \`open\` instead.`); - } - return () => { - const { - icon, - onCancel, - onOk, - close, - okText, - closable = false, - zIndex, - afterClose, - keyboard, - centered, - getContainer: getContainer3, - maskStyle, - okButtonProps, - cancelButtonProps, - okCancel, - width = 416, - mask = true, - maskClosable = false, - type: type4, - open: open2, - title, - content, - direction, - closeIcon, - modalRender, - focusTriggerAfterClose, - rootPrefixCls, - bodyStyle, - wrapClassName, - footer - } = props4; - let mergedIcon = icon; - if (!icon && icon !== null) { - switch (type4) { - case "info": - mergedIcon = createVNode(InfoCircleFilled_default, null, null); - break; - case "success": - mergedIcon = createVNode(CheckCircleFilled_default, null, null); - break; - case "error": - mergedIcon = createVNode(CloseCircleFilled_default, null, null); - break; - default: - mergedIcon = createVNode(ExclamationCircleFilled_default, null, null); - } - } - const okType = props4.okType || "primary"; - const prefixCls = props4.prefixCls || "ant-modal"; - const contentPrefixCls = `${prefixCls}-confirm`; - const style = attrs.style || {}; - const mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type4 === "confirm"; - const autoFocusButton = props4.autoFocusButton === null ? false : props4.autoFocusButton || "ok"; - const confirmPrefixCls = `${prefixCls}-confirm`; - const classString = classNames_default(confirmPrefixCls, `${confirmPrefixCls}-${props4.type}`, { - [`${confirmPrefixCls}-rtl`]: direction === "rtl" - }, attrs.class); - const mergedLocal = locale4.value; - const cancelButton = mergedOkCancel && createVNode(ActionButton_default, { - "actionFn": onCancel, - "close": close, - "autofocus": autoFocusButton === "cancel", - "buttonProps": cancelButtonProps, - "prefixCls": `${rootPrefixCls}-btn` - }, { - default: () => [renderSomeContent(props4.cancelText) || mergedLocal.cancelText] - }); - return createVNode(Modal_default, { - "prefixCls": prefixCls, - "class": classString, - "wrapClassName": classNames_default({ - [`${confirmPrefixCls}-centered`]: !!centered - }, wrapClassName), - "onCancel": (e3) => close === null || close === void 0 ? void 0 : close({ - triggerCancel: true - }, e3), - "open": open2, - "title": "", - "footer": "", - "transitionName": getTransitionName2(rootPrefixCls, "zoom", props4.transitionName), - "maskTransitionName": getTransitionName2(rootPrefixCls, "fade", props4.maskTransitionName), - "mask": mask, - "maskClosable": maskClosable, - "maskStyle": maskStyle, - "style": style, - "bodyStyle": bodyStyle, - "width": width, - "zIndex": zIndex, - "afterClose": afterClose, - "keyboard": keyboard, - "centered": centered, - "getContainer": getContainer3, - "closable": closable, - "closeIcon": closeIcon, - "modalRender": modalRender, - "focusTriggerAfterClose": focusTriggerAfterClose - }, { - default: () => [createVNode("div", { - "class": `${contentPrefixCls}-body-wrapper` - }, [createVNode("div", { - "class": `${contentPrefixCls}-body` - }, [renderSomeContent(mergedIcon), title === void 0 ? null : createVNode("span", { - "class": `${contentPrefixCls}-title` - }, [renderSomeContent(title)]), createVNode("div", { - "class": `${contentPrefixCls}-content` - }, [renderSomeContent(content)])]), footer !== void 0 ? renderSomeContent(footer) : createVNode("div", { - "class": `${contentPrefixCls}-btns` - }, [cancelButton, createVNode(ActionButton_default, { - "type": okType, - "actionFn": onOk, - "close": close, - "autofocus": autoFocusButton === "ok", - "buttonProps": okButtonProps, - "prefixCls": `${rootPrefixCls}-btn` - }, { - default: () => [renderSomeContent(okText) || (mergedOkCancel ? mergedLocal.okText : mergedLocal.justOkText)] - })])])] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/modal/destroyFns.js -var destroyFns = []; -var destroyFns_default = destroyFns; - -// node_modules/ant-design-vue/es/modal/confirm.js -var confirm = (config) => { - const container = document.createDocumentFragment(); - let currentConfig = _extends(_extends({}, omit_default(config, ["parentContext", "appContext"])), { - close, - open: true - }); - let confirmDialogInstance = null; - function destroy() { - if (confirmDialogInstance) { - render(null, container); - confirmDialogInstance = null; - } - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - const triggerCancel = args.some((param) => param && param.triggerCancel); - if (config.onCancel && triggerCancel) { - config.onCancel(() => { - }, ...args.slice(1)); - } - for (let i3 = 0; i3 < destroyFns_default.length; i3++) { - const fn = destroyFns_default[i3]; - if (fn === close) { - destroyFns_default.splice(i3, 1); - break; - } - } - } - function close() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - currentConfig = _extends(_extends({}, currentConfig), { - open: false, - afterClose: () => { - if (typeof config.afterClose === "function") { - config.afterClose(); - } - destroy.apply(this, args); - } - }); - if (currentConfig.visible) { - delete currentConfig.visible; - } - update2(currentConfig); - } - function update2(configUpdate) { - if (typeof configUpdate === "function") { - currentConfig = configUpdate(currentConfig); - } else { - currentConfig = _extends(_extends({}, currentConfig), configUpdate); - } - if (confirmDialogInstance) { - triggerVNodeUpdate(confirmDialogInstance, currentConfig, container); - } - } - const Wrapper = (p) => { - const global2 = globalConfigForApi; - const rootPrefixCls = global2.prefixCls; - const prefixCls = p.prefixCls || `${rootPrefixCls}-modal`; - const iconPrefixCls = global2.iconPrefixCls; - const runtimeLocale2 = getConfirmLocale(); - return createVNode(config_provider_default, _objectSpread2(_objectSpread2({}, global2), {}, { - "prefixCls": rootPrefixCls - }), { - default: () => [createVNode(ConfirmDialog_default, _objectSpread2(_objectSpread2({}, p), {}, { - "rootPrefixCls": rootPrefixCls, - "prefixCls": prefixCls, - "iconPrefixCls": iconPrefixCls, - "locale": runtimeLocale2, - "cancelText": p.cancelText || runtimeLocale2.cancelText - }), null)] - }); - }; - function render2(props4) { - const vm = createVNode(Wrapper, _extends({}, props4)); - vm.appContext = config.parentContext || config.appContext || vm.appContext; - render(vm, container); - return vm; - } - confirmDialogInstance = render2(currentConfig); - destroyFns_default.push(close); - return { - destroy: close, - update: update2 - }; -}; -var confirm_default = confirm; -function withWarn(props4) { - return _extends(_extends({}, props4), { - type: "warning" - }); -} -function withInfo(props4) { - return _extends(_extends({}, props4), { - type: "info" - }); -} -function withSuccess(props4) { - return _extends(_extends({}, props4), { - type: "success" - }); -} -function withError(props4) { - return _extends(_extends({}, props4), { - type: "error" - }); -} -function withConfirm(props4) { - return _extends(_extends({}, props4), { - type: "confirm" - }); -} - -// node_modules/ant-design-vue/es/modal/useModal/HookModal.js -var comfirmFuncProps = () => ({ - config: Object, - afterClose: Function, - destroyAction: Function, - open: Boolean -}); -var HookModal_default = defineComponent({ - name: "HookModal", - inheritAttrs: false, - props: initDefaultProps_default(comfirmFuncProps(), { - config: { - width: 520, - okType: "primary" - } - }), - setup(props4, _ref) { - let { - expose - } = _ref; - var _a2; - const open2 = computed(() => props4.open); - const innerConfig = computed(() => props4.config); - const { - direction, - getPrefixCls - } = useConfigContextInject(); - const prefixCls = getPrefixCls("modal"); - const rootPrefixCls = getPrefixCls(); - const afterClose = () => { - var _a3, _b; - props4 === null || props4 === void 0 ? void 0 : props4.afterClose(); - (_b = (_a3 = innerConfig.value).afterClose) === null || _b === void 0 ? void 0 : _b.call(_a3); - }; - const close = function() { - props4.destroyAction(...arguments); - }; - expose({ - destroy: close - }); - const mergedOkCancel = (_a2 = innerConfig.value.okCancel) !== null && _a2 !== void 0 ? _a2 : innerConfig.value.type === "confirm"; - const [contextLocale] = useLocaleReceiver("Modal", en_US_default6.Modal); - return () => createVNode(ConfirmDialog_default, _objectSpread2(_objectSpread2({ - "prefixCls": prefixCls, - "rootPrefixCls": rootPrefixCls - }, innerConfig.value), {}, { - "close": close, - "open": open2.value, - "afterClose": afterClose, - "okText": innerConfig.value.okText || (mergedOkCancel ? contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.value.okText : contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.value.justOkText), - "direction": innerConfig.value.direction || direction.value, - "cancelText": innerConfig.value.cancelText || (contextLocale === null || contextLocale === void 0 ? void 0 : contextLocale.value.cancelText) - }), null); - } -}); - -// node_modules/ant-design-vue/es/modal/useModal/index.js -var uuid7 = 0; -var ElementsHolder = defineComponent({ - name: "ElementsHolder", - inheritAttrs: false, - setup(_2, _ref) { - let { - expose - } = _ref; - const modals = shallowRef([]); - const addModal = (modal) => { - modals.value.push(modal); - modals.value = modals.value.slice(); - return () => { - modals.value = modals.value.filter((currentModal) => currentModal !== modal); - }; - }; - expose({ - addModal - }); - return () => { - return modals.value.map((modal) => modal()); - }; - } -}); -function useModal() { - const holderRef = shallowRef(null); - const actionQueue = shallowRef([]); - watch(actionQueue, () => { - if (actionQueue.value.length) { - const cloneQueue = [...actionQueue.value]; - cloneQueue.forEach((action) => { - action(); - }); - actionQueue.value = []; - } - }, { - immediate: true - }); - const getConfirmFunc = (withFunc) => function hookConfirm(config) { - var _a2; - uuid7 += 1; - const open2 = shallowRef(true); - const modalRef = shallowRef(null); - const configRef = shallowRef(unref(config)); - const updateConfig = shallowRef({}); - watch(() => config, (val) => { - updateAction(_extends(_extends({}, isRef(val) ? val.value : val), updateConfig.value)); - }); - const destroyAction = function() { - open2.value = false; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - const triggerCancel = args.some((param) => param && param.triggerCancel); - if (configRef.value.onCancel && triggerCancel) { - configRef.value.onCancel(() => { - }, ...args.slice(1)); - } - }; - let closeFunc; - const modal = () => createVNode(HookModal_default, { - "key": `modal-${uuid7}`, - "config": withFunc(configRef.value), - "ref": modalRef, - "open": open2.value, - "destroyAction": destroyAction, - "afterClose": () => { - closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc(); - } - }, null); - closeFunc = (_a2 = holderRef.value) === null || _a2 === void 0 ? void 0 : _a2.addModal(modal); - if (closeFunc) { - destroyFns_default.push(closeFunc); - } - const updateAction = (newConfig) => { - configRef.value = _extends(_extends({}, configRef.value), newConfig); - }; - const destroy = () => { - if (modalRef.value) { - destroyAction(); - } else { - actionQueue.value = [...actionQueue.value, destroyAction]; - } - }; - const update2 = (newConfig) => { - updateConfig.value = newConfig; - if (modalRef.value) { - updateAction(newConfig); - } else { - actionQueue.value = [...actionQueue.value, () => updateAction(newConfig)]; - } - }; - return { - destroy, - update: update2 - }; - }; - const fns = computed(() => ({ - info: getConfirmFunc(withInfo), - success: getConfirmFunc(withSuccess), - error: getConfirmFunc(withError), - warning: getConfirmFunc(withWarn), - confirm: getConfirmFunc(withConfirm) - })); - const holderKey = Symbol("modalHolderKey"); - return [fns.value, () => createVNode(ElementsHolder, { - "key": holderKey, - "ref": holderRef - }, null)]; -} -var useModal_default = useModal; - -// node_modules/ant-design-vue/es/modal/index.js -function modalWarn(props4) { - return confirm_default(withWarn(props4)); -} -Modal_default.useModal = useModal_default; -Modal_default.info = function infoFn(props4) { - return confirm_default(withInfo(props4)); -}; -Modal_default.success = function successFn(props4) { - return confirm_default(withSuccess(props4)); -}; -Modal_default.error = function errorFn(props4) { - return confirm_default(withError(props4)); -}; -Modal_default.warning = modalWarn; -Modal_default.warn = modalWarn; -Modal_default.confirm = function confirmFn(props4) { - return confirm_default(withConfirm(props4)); -}; -Modal_default.destroyAll = function destroyAllFn() { - while (destroyFns_default.length) { - const close = destroyFns_default.pop(); - if (close) { - close(); - } - } -}; -Modal_default.install = function(app) { - app.component(Modal_default.name, Modal_default); - return app; -}; -var modal_default = Modal_default; - -// node_modules/ant-design-vue/es/statistic/Number.js -var StatisticNumber = (props4) => { - const { - value, - formatter, - precision, - decimalSeparator, - groupSeparator = "", - prefixCls - } = props4; - let valueNode; - if (typeof formatter === "function") { - valueNode = formatter({ - value - }); - } else { - const val = String(value); - const cells = val.match(/^(-?)(\d*)(\.(\d+))?$/); - if (!cells) { - valueNode = val; - } else { - const negative = cells[1]; - let int = cells[2] || "0"; - let decimal = cells[4] || ""; - int = int.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator); - if (typeof precision === "number") { - decimal = decimal.padEnd(precision, "0").slice(0, precision > 0 ? precision : 0); - } - if (decimal) { - decimal = `${decimalSeparator}${decimal}`; - } - valueNode = [createVNode("span", { - "key": "int", - "class": `${prefixCls}-content-value-int` - }, [negative, int]), decimal && createVNode("span", { - "key": "decimal", - "class": `${prefixCls}-content-value-decimal` - }, [decimal])]; - } - } - return createVNode("span", { - "class": `${prefixCls}-content-value` - }, [valueNode]); -}; -StatisticNumber.displayName = "StatisticNumber"; -var Number_default = StatisticNumber; - -// node_modules/ant-design-vue/es/statistic/style/index.js -var genStatisticStyle = (token2) => { - const { - componentCls, - marginXXS, - padding, - colorTextDescription, - statisticTitleFontSize, - colorTextHeading, - statisticContentFontSize, - statisticFontFamily - } = token2; - return { - [`${componentCls}`]: _extends(_extends({}, resetComponent(token2)), { - [`${componentCls}-title`]: { - marginBottom: marginXXS, - color: colorTextDescription, - fontSize: statisticTitleFontSize - }, - [`${componentCls}-skeleton`]: { - paddingTop: padding - }, - [`${componentCls}-content`]: { - color: colorTextHeading, - fontSize: statisticContentFontSize, - fontFamily: statisticFontFamily, - [`${componentCls}-content-value`]: { - display: "inline-block", - direction: "ltr" - }, - [`${componentCls}-content-prefix, ${componentCls}-content-suffix`]: { - display: "inline-block" - }, - [`${componentCls}-content-prefix`]: { - marginInlineEnd: marginXXS - }, - [`${componentCls}-content-suffix`]: { - marginInlineStart: marginXXS - } - } - }) - }; -}; -var style_default45 = genComponentStyleHook("Statistic", (token2) => { - const { - fontSizeHeading3, - fontSize, - fontFamily - } = token2; - const statisticToken2 = merge(token2, { - statisticTitleFontSize: fontSize, - statisticContentFontSize: fontSizeHeading3, - statisticFontFamily: fontFamily - }); - return [genStatisticStyle(statisticToken2)]; -}); - -// node_modules/ant-design-vue/es/statistic/Statistic.js -var statisticProps = () => ({ - prefixCls: String, - decimalSeparator: String, - groupSeparator: String, - format: String, - value: someType([Number, String, Object]), - valueStyle: { - type: Object, - default: void 0 - }, - valueRender: functionType(), - formatter: anyType(), - precision: Number, - prefix: vNodeType(), - suffix: vNodeType(), - title: vNodeType(), - loading: booleanType() -}); -var Statistic_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AStatistic", - inheritAttrs: false, - props: initDefaultProps_default(statisticProps(), { - decimalSeparator: ".", - groupSeparator: ",", - loading: false - }), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("statistic", props4); - const [wrapSSR, hashId] = style_default45(prefixCls); - return () => { - var _a2, _b, _c, _d, _e, _f, _g; - const { - value = 0, - valueStyle, - valueRender - } = props4; - const pre = prefixCls.value; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - const prefix2 = (_c = props4.prefix) !== null && _c !== void 0 ? _c : (_d = slots.prefix) === null || _d === void 0 ? void 0 : _d.call(slots); - const suffix = (_e = props4.suffix) !== null && _e !== void 0 ? _e : (_f = slots.suffix) === null || _f === void 0 ? void 0 : _f.call(slots); - const formatter = (_g = props4.formatter) !== null && _g !== void 0 ? _g : slots.formatter; - let valueNode = createVNode(Number_default, _objectSpread2({ - "data-for-update": Date.now() - }, _extends(_extends({}, props4), { - prefixCls: pre, - value, - formatter - })), null); - if (valueRender) { - valueNode = valueRender(valueNode); - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [pre, { - [`${pre}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value] - }), [title && createVNode("div", { - "class": `${pre}-title` - }, [title]), createVNode(Skeleton_default, { - "paragraph": false, - "loading": props4.loading - }, { - default: () => [createVNode("div", { - "style": valueStyle, - "class": `${pre}-content` - }, [prefix2 && createVNode("span", { - "class": `${pre}-content-prefix` - }, [prefix2]), valueNode, suffix && createVNode("span", { - "class": `${pre}-content-suffix` - }, [suffix])])] - })])); - }; - } -}); - -// node_modules/ant-design-vue/es/statistic/utils.js -var timeUnits = [ - ["Y", 1e3 * 60 * 60 * 24 * 365], - ["M", 1e3 * 60 * 60 * 24 * 30], - ["D", 1e3 * 60 * 60 * 24], - ["H", 1e3 * 60 * 60], - ["m", 1e3 * 60], - ["s", 1e3], - ["S", 1] - // million seconds -]; -function formatTimeStr(duration, format3) { - let leftDuration = duration; - const escapeRegex = /\[[^\]]*]/g; - const keepList = (format3.match(escapeRegex) || []).map((str) => str.slice(1, -1)); - const templateText = format3.replace(escapeRegex, "[]"); - const replacedText = timeUnits.reduce((current, _ref) => { - let [name, unit] = _ref; - if (current.includes(name)) { - const value = Math.floor(leftDuration / unit); - leftDuration -= value * unit; - return current.replace(new RegExp(`${name}+`, "g"), (match3) => { - const len = match3.length; - return value.toString().padStart(len, "0"); - }); - } - return current; - }, templateText); - let index3 = 0; - return replacedText.replace(escapeRegex, () => { - const match3 = keepList[index3]; - index3 += 1; - return match3; - }); -} -function formatCountdown(value, config) { - const { - format: format3 = "" - } = config; - const target = new Date(value).getTime(); - const current = Date.now(); - const diff = Math.max(target - current, 0); - return formatTimeStr(diff, format3); -} - -// node_modules/ant-design-vue/es/statistic/Countdown.js -var REFRESH_INTERVAL2 = 1e3 / 30; -function getTime(value) { - return new Date(value).getTime(); -} -var countdownProps = () => { - return _extends(_extends({}, statisticProps()), { - value: someType([Number, String, Object]), - format: String, - onFinish: Function, - onChange: Function - }); -}; -var Countdown_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AStatisticCountdown", - props: initDefaultProps_default(countdownProps(), { - format: "HH:mm:ss" - }), - // emits: ['finish', 'change'], - setup(props4, _ref) { - let { - emit, - slots - } = _ref; - const countdownId = ref(); - const statistic2 = ref(); - const syncTimer = () => { - const { - value - } = props4; - const timestamp = getTime(value); - if (timestamp >= Date.now()) { - startTimer(); - } else { - stopTimer(); - } - }; - const startTimer = () => { - if (countdownId.value) return; - const timestamp = getTime(props4.value); - countdownId.value = setInterval(() => { - statistic2.value.$forceUpdate(); - if (timestamp > Date.now()) { - emit("change", timestamp - Date.now()); - } - syncTimer(); - }, REFRESH_INTERVAL2); - }; - const stopTimer = () => { - const { - value - } = props4; - if (countdownId.value) { - clearInterval(countdownId.value); - countdownId.value = void 0; - const timestamp = getTime(value); - if (timestamp < Date.now()) { - emit("finish"); - } - } - }; - const formatCountdown2 = (_ref2) => { - let { - value, - config - } = _ref2; - const { - format: format3 - } = props4; - return formatCountdown(value, _extends(_extends({}, config), { - format: format3 - })); - }; - const valueRenderHtml = (node2) => node2; - onMounted(() => { - syncTimer(); - }); - onUpdated(() => { - syncTimer(); - }); - onBeforeUnmount(() => { - stopTimer(); - }); - return () => { - const value = props4.value; - return createVNode(Statistic_default, _objectSpread2({ - "ref": statistic2 - }, _extends(_extends({}, omit_default(props4, ["onFinish", "onChange"])), { - value, - valueRender: valueRenderHtml, - formatter: formatCountdown2 - })), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/statistic/index.js -Statistic_default.Countdown = Countdown_default; -Statistic_default.install = function(app) { - app.component(Statistic_default.name, Statistic_default); - app.component(Statistic_default.Countdown.name, Statistic_default.Countdown); - return app; -}; -var StatisticCountdown = Statistic_default.Countdown; -var statistic_default = Statistic_default; - -// node_modules/ant-design-vue/es/_util/transButton.js -var __rest54 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var inlineStyle = { - border: 0, - background: "transparent", - padding: 0, - lineHeight: "inherit", - display: "inline-block" -}; -var TransButton = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TransButton", - inheritAttrs: false, - props: { - noStyle: { - type: Boolean, - default: void 0 - }, - onClick: Function, - disabled: { - type: Boolean, - default: void 0 - }, - autofocus: { - type: Boolean, - default: void 0 - } - }, - setup(props4, _ref) { - let { - slots, - emit, - attrs, - expose - } = _ref; - const domRef = shallowRef(); - const onKeyDown2 = (event) => { - const { - keyCode - } = event; - if (keyCode === KeyCode_default.ENTER) { - event.preventDefault(); - } - }; - const onKeyUp = (event) => { - const { - keyCode - } = event; - if (keyCode === KeyCode_default.ENTER) { - emit("click", event); - } - }; - const onClick = (e3) => { - emit("click", e3); - }; - const focus = () => { - if (domRef.value) { - domRef.value.focus(); - } - }; - const blur = () => { - if (domRef.value) { - domRef.value.blur(); - } - }; - onMounted(() => { - if (props4.autofocus) { - focus(); - } - }); - expose({ - focus, - blur - }); - return () => { - var _a2; - const { - noStyle, - disabled - } = props4, restProps = __rest54(props4, ["noStyle", "disabled"]); - let mergedStyle = {}; - if (!noStyle) { - mergedStyle = _extends({}, inlineStyle); - } - if (disabled) { - mergedStyle.pointerEvents = "none"; - } - return createVNode("div", _objectSpread2(_objectSpread2(_objectSpread2({ - "role": "button", - "tabindex": 0, - "ref": domRef - }, restProps), attrs), {}, { - "onClick": onClick, - "onKeydown": onKeyDown2, - "onKeyup": onKeyUp, - "style": _extends(_extends({}, mergedStyle), attrs.style || {}) - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); -var transButton_default = TransButton; - -// node_modules/ant-design-vue/es/space/index.js -var spaceSize = { - small: 8, - middle: 16, - large: 24 -}; -var spaceProps = () => ({ - prefixCls: String, - size: { - type: [String, Number, Array] - }, - direction: vue_types_default.oneOf(tuple("horizontal", "vertical")).def("horizontal"), - align: vue_types_default.oneOf(tuple("start", "end", "center", "baseline")), - wrap: booleanType() -}); -function getNumberSize(size2) { - return typeof size2 === "string" ? spaceSize[size2] : size2 || 0; -} -var Space = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASpace", - inheritAttrs: false, - props: spaceProps(), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - space, - direction: directionConfig - } = useConfigInject_default("space", props4); - const [wrapSSR, hashId] = style_default4(prefixCls); - const supportFlexGap = useFlexGapSupport_default(); - const size2 = computed(() => { - var _a2, _b, _c; - return (_c = (_a2 = props4.size) !== null && _a2 !== void 0 ? _a2 : (_b = space === null || space === void 0 ? void 0 : space.value) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : "small"; - }); - const horizontalSize = ref(); - const verticalSize = ref(); - watch(size2, () => { - [horizontalSize.value, verticalSize.value] = (Array.isArray(size2.value) ? size2.value : [size2.value, size2.value]).map((item) => getNumberSize(item)); - }, { - immediate: true - }); - const mergedAlign = computed(() => props4.align === void 0 && props4.direction === "horizontal" ? "center" : props4.align); - const cn = computed(() => { - return classNames_default(prefixCls.value, hashId.value, `${prefixCls.value}-${props4.direction}`, { - [`${prefixCls.value}-rtl`]: directionConfig.value === "rtl", - [`${prefixCls.value}-align-${mergedAlign.value}`]: mergedAlign.value - }); - }); - const marginDirection = computed(() => directionConfig.value === "rtl" ? "marginLeft" : "marginRight"); - const style = computed(() => { - const gapStyle = {}; - if (supportFlexGap.value) { - gapStyle.columnGap = `${horizontalSize.value}px`; - gapStyle.rowGap = `${verticalSize.value}px`; - } - return _extends(_extends({}, gapStyle), props4.wrap && { - flexWrap: "wrap", - marginBottom: `${-verticalSize.value}px` - }); - }); - return () => { - var _a2, _b; - const { - wrap: wrap2, - direction = "horizontal" - } = props4; - const children = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - const items = filterEmpty(children); - const len = items.length; - if (len === 0) { - return null; - } - const split2 = (_b = slots.split) === null || _b === void 0 ? void 0 : _b.call(slots); - const itemClassName = `${prefixCls.value}-item`; - const horizontalSizeVal = horizontalSize.value; - const latestIndex = len - 1; - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [cn.value, attrs.class], - "style": [style.value, attrs.style] - }), [items.map((child, index3) => { - let originIndex = children.indexOf(child); - if (originIndex === -1) { - originIndex = `$$space-${index3}`; - } - let itemStyle = {}; - if (!supportFlexGap.value) { - if (direction === "vertical") { - if (index3 < latestIndex) { - itemStyle = { - marginBottom: `${horizontalSizeVal / (split2 ? 2 : 1)}px` - }; - } - } else { - itemStyle = _extends(_extends({}, index3 < latestIndex && { - [marginDirection.value]: `${horizontalSizeVal / (split2 ? 2 : 1)}px` - }), wrap2 && { - paddingBottom: `${verticalSize.value}px` - }); - } - } - return wrapSSR(createVNode(Fragment, { - "key": originIndex - }, [createVNode("div", { - "class": itemClassName, - "style": itemStyle - }, [child]), index3 < latestIndex && split2 && createVNode("span", { - "class": `${itemClassName}-split`, - "style": itemStyle - }, [split2])])); - })]); - }; - } -}); -Space.Compact = Compact_default; -Space.install = function(app) { - app.component(Space.name, Space); - app.component(Compact_default.name, Compact_default); - return app; -}; -var space_default = Space; - -// node_modules/ant-design-vue/es/page-header/style/index.js -var genPageHeaderStyle = (token2) => { - const { - componentCls, - antCls - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - padding: `${token2.pageHeaderPaddingVertical}px ${token2.pageHeaderPadding}px`, - backgroundColor: token2.colorBgContainer, - [`&${componentCls}-ghost`]: { - backgroundColor: token2.pageHeaderGhostBg - }, - [`&.has-footer`]: { - paddingBottom: 0 - }, - [`${componentCls}-back`]: { - marginRight: token2.marginMD, - fontSize: token2.fontSizeLG, - lineHeight: 1, - [`&-button`]: _extends(_extends({}, operationUnit(token2)), { - color: token2.pageHeaderBackColor, - cursor: "pointer" - }) - }, - [`${antCls}-divider-vertical`]: { - height: "14px", - margin: `0 ${token2.marginSM}`, - verticalAlign: "middle" - }, - [`${antCls}-breadcrumb + &-heading`]: { - marginTop: token2.marginXS - }, - [`${componentCls}-heading`]: { - display: "flex", - justifyContent: "space-between", - [`&-left`]: { - display: "flex", - alignItems: "center", - margin: `${token2.marginXS / 2}px 0`, - overflow: "hidden" - }, - [`&-title`]: _extends({ - marginRight: token2.marginSM, - marginBottom: 0, - color: token2.colorTextHeading, - fontWeight: 600, - fontSize: token2.pageHeaderHeadingTitle, - lineHeight: `${token2.controlHeight}px` - }, textEllipsis), - [`${antCls}-avatar`]: { - marginRight: token2.marginSM - }, - [`&-sub-title`]: _extends({ - marginRight: token2.marginSM, - color: token2.colorTextDescription, - fontSize: token2.pageHeaderHeadingSubTitle, - lineHeight: token2.lineHeight - }, textEllipsis), - [`&-extra`]: { - margin: `${token2.marginXS / 2}px 0`, - whiteSpace: "nowrap", - [`> *`]: { - marginLeft: token2.marginSM, - whiteSpace: "unset" - }, - [`> *:first-child`]: { - marginLeft: 0 - } - } - }, - [`${componentCls}-content`]: { - paddingTop: token2.pageHeaderContentPaddingVertical - }, - [`${componentCls}-footer`]: { - marginTop: token2.marginMD, - [`${antCls}-tabs`]: { - [`> ${antCls}-tabs-nav`]: { - margin: 0, - [`&::before`]: { - border: "none" - } - }, - [`${antCls}-tabs-tab`]: { - paddingTop: token2.paddingXS, - paddingBottom: token2.paddingXS, - fontSize: token2.pageHeaderTabFontSize - } - } - }, - [`${componentCls}-compact ${componentCls}-heading`]: { - flexWrap: "wrap" - }, - // rtl style - [`&${token2.componentCls}-rtl`]: { - direction: "rtl" - } - }) - }; -}; -var style_default46 = genComponentStyleHook("PageHeader", (token2) => { - const PageHeaderToken = merge(token2, { - pageHeaderPadding: token2.paddingLG, - pageHeaderPaddingVertical: token2.paddingMD, - pageHeaderPaddingBreadcrumb: token2.paddingSM, - pageHeaderContentPaddingVertical: token2.paddingSM, - pageHeaderBackColor: token2.colorTextBase, - pageHeaderGhostBg: "transparent", - pageHeaderHeadingTitle: token2.fontSizeHeading4, - pageHeaderHeadingSubTitle: token2.fontSize, - pageHeaderTabFontSize: token2.fontSizeLG - }); - return [genPageHeaderStyle(PageHeaderToken)]; -}); - -// node_modules/ant-design-vue/es/page-header/index.js -var pageHeaderProps = () => ({ - backIcon: vNodeType(), - prefixCls: String, - title: vNodeType(), - subTitle: vNodeType(), - breadcrumb: vue_types_default.object, - tags: vNodeType(), - footer: vNodeType(), - extra: vNodeType(), - avatar: objectType(), - ghost: { - type: Boolean, - default: void 0 - }, - onBack: Function -}); -var PageHeader = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "APageHeader", - inheritAttrs: false, - props: pageHeaderProps(), - // emits: ['back'], - slots: Object, - setup(props4, _ref) { - let { - emit, - slots, - attrs - } = _ref; - const { - prefixCls, - direction, - pageHeader - } = useConfigInject_default("page-header", props4); - const [wrapSSR, hashId] = style_default46(prefixCls); - const compact2 = shallowRef(false); - const isDestroyed = useDestroyed_default(); - const onResize = (_ref2) => { - let { - width - } = _ref2; - if (!isDestroyed.value) { - compact2.value = width < 768; - } - }; - const ghost = computed(() => { - var _a2, _b, _c; - return (_c = (_a2 = props4.ghost) !== null && _a2 !== void 0 ? _a2 : (_b = pageHeader === null || pageHeader === void 0 ? void 0 : pageHeader.value) === null || _b === void 0 ? void 0 : _b.ghost) !== null && _c !== void 0 ? _c : true; - }); - const getBackIcon = () => { - var _a2, _b, _c; - return (_c = (_a2 = props4.backIcon) !== null && _a2 !== void 0 ? _a2 : (_b = slots.backIcon) === null || _b === void 0 ? void 0 : _b.call(slots)) !== null && _c !== void 0 ? _c : direction.value === "rtl" ? createVNode(ArrowRightOutlined_default, null, null) : createVNode(ArrowLeftOutlined_default, null, null); - }; - const renderBack = (backIcon) => { - if (!backIcon || !props4.onBack) { - return null; - } - return createVNode(LocaleReceiver_default2, { - "componentName": "PageHeader", - "children": (_ref3) => { - let { - back - } = _ref3; - return createVNode("div", { - "class": `${prefixCls.value}-back` - }, [createVNode(transButton_default, { - "onClick": (e3) => { - emit("back", e3); - }, - "class": `${prefixCls.value}-back-button`, - "aria-label": back - }, { - default: () => [backIcon] - })]); - } - }, null); - }; - const renderBreadcrumb = () => { - var _a2; - return props4.breadcrumb ? createVNode(breadcrumb_default, props4.breadcrumb, null) : (_a2 = slots.breadcrumb) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - const renderTitle = () => { - var _a2, _b, _c, _d, _e, _f, _g, _h, _j; - const { - avatar - } = props4; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - const subTitle = (_c = props4.subTitle) !== null && _c !== void 0 ? _c : (_d = slots.subTitle) === null || _d === void 0 ? void 0 : _d.call(slots); - const tags = (_e = props4.tags) !== null && _e !== void 0 ? _e : (_f = slots.tags) === null || _f === void 0 ? void 0 : _f.call(slots); - const extra = (_g = props4.extra) !== null && _g !== void 0 ? _g : (_h = slots.extra) === null || _h === void 0 ? void 0 : _h.call(slots); - const headingPrefixCls = `${prefixCls.value}-heading`; - const hasHeading = title || subTitle || tags || extra; - if (!hasHeading) { - return null; - } - const backIcon = getBackIcon(); - const backIconDom = renderBack(backIcon); - const hasTitle = backIconDom || avatar || hasHeading; - return createVNode("div", { - "class": headingPrefixCls - }, [hasTitle && createVNode("div", { - "class": `${headingPrefixCls}-left` - }, [backIconDom, avatar ? createVNode(avatar_default, avatar, null) : (_j = slots.avatar) === null || _j === void 0 ? void 0 : _j.call(slots), title && createVNode("span", { - "class": `${headingPrefixCls}-title`, - "title": typeof title === "string" ? title : void 0 - }, [title]), subTitle && createVNode("span", { - "class": `${headingPrefixCls}-sub-title`, - "title": typeof subTitle === "string" ? subTitle : void 0 - }, [subTitle]), tags && createVNode("span", { - "class": `${headingPrefixCls}-tags` - }, [tags])]), extra && createVNode("span", { - "class": `${headingPrefixCls}-extra` - }, [createVNode(space_default, null, { - default: () => [extra] - })])]); - }; - const renderFooter = () => { - var _a2, _b; - const footer = (_a2 = props4.footer) !== null && _a2 !== void 0 ? _a2 : filterEmpty((_b = slots.footer) === null || _b === void 0 ? void 0 : _b.call(slots)); - return isEmptyContent(footer) ? null : createVNode("div", { - "class": `${prefixCls.value}-footer` - }, [footer]); - }; - const renderChildren2 = (children) => { - return createVNode("div", { - "class": `${prefixCls.value}-content` - }, [children]); - }; - return () => { - var _a2, _b; - const hasBreadcrumb = ((_a2 = props4.breadcrumb) === null || _a2 === void 0 ? void 0 : _a2.routes) || slots.breadcrumb; - const hasFooter = props4.footer || slots.footer; - const children = flattenChildren((_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)); - const className = classNames_default(prefixCls.value, { - "has-breadcrumb": hasBreadcrumb, - "has-footer": hasFooter, - [`${prefixCls.value}-ghost`]: ghost.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-compact`]: compact2.value - }, attrs.class, hashId.value); - return wrapSSR(createVNode(vc_resize_observer_default, { - "onResize": onResize - }, { - default: () => [createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": className - }), [renderBreadcrumb(), renderTitle(), children.length ? renderChildren2(children) : null, renderFooter()])] - })); - }; - } -}); -var page_header_default = withInstall(PageHeader); - -// node_modules/ant-design-vue/es/popconfirm/style/index.js -var genBaseStyle12 = (token2) => { - const { - componentCls, - iconCls, - zIndexPopup, - colorText, - colorWarning, - marginXS, - fontSize, - fontWeightStrong, - lineHeight - } = token2; - return { - [componentCls]: { - zIndex: zIndexPopup, - [`${componentCls}-inner-content`]: { - color: colorText - }, - [`${componentCls}-message`]: { - position: "relative", - marginBottom: marginXS, - color: colorText, - fontSize, - display: "flex", - flexWrap: "nowrap", - alignItems: "start", - [`> ${componentCls}-message-icon ${iconCls}`]: { - color: colorWarning, - fontSize, - flex: "none", - lineHeight: 1, - paddingTop: (Math.round(fontSize * lineHeight) - fontSize) / 2 - }, - "&-title": { - flex: "auto", - marginInlineStart: marginXS - }, - "&-title-only": { - fontWeight: fontWeightStrong - } - }, - [`${componentCls}-description`]: { - position: "relative", - marginInlineStart: fontSize + marginXS, - marginBottom: marginXS, - color: colorText, - fontSize - }, - [`${componentCls}-buttons`]: { - textAlign: "end", - button: { - marginInlineStart: marginXS - } - } - } - }; -}; -var style_default47 = genComponentStyleHook("Popconfirm", (token2) => genBaseStyle12(token2), (token2) => { - const { - zIndexPopupBase - } = token2; - return { - zIndexPopup: zIndexPopupBase + 60 - }; -}); - -// node_modules/ant-design-vue/es/popconfirm/index.js -var __rest55 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var popconfirmProps = () => _extends(_extends({}, abstractTooltipProps_default()), { - prefixCls: String, - content: anyType(), - title: anyType(), - description: anyType(), - okType: stringType("primary"), - disabled: { - type: Boolean, - default: false - }, - okText: anyType(), - cancelText: anyType(), - icon: anyType(), - okButtonProps: objectType(), - cancelButtonProps: objectType(), - showCancel: { - type: Boolean, - default: true - }, - onConfirm: Function, - onCancel: Function -}); -var Popconfirm = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "APopconfirm", - inheritAttrs: false, - props: initDefaultProps_default(popconfirmProps(), _extends(_extends({}, tooltipDefaultProps()), { - trigger: "click", - placement: "top", - mouseEnterDelay: 0.1, - mouseLeaveDelay: 0.1, - arrowPointAtCenter: false, - autoAdjustOverflow: true, - okType: "primary", - disabled: false - })), - slots: Object, - // emits: ['update:open', 'visibleChange'], - setup(props4, _ref) { - let { - slots, - emit, - expose, - attrs - } = _ref; - const rootRef = ref(); - warning_default2(props4.visible === void 0, "Popconfirm", `\`visible\` will be removed in next major version, please use \`open\` instead.`); - expose({ - getPopupDomNode: () => { - var _a2, _b; - return (_b = (_a2 = rootRef.value) === null || _a2 === void 0 ? void 0 : _a2.getPopupDomNode) === null || _b === void 0 ? void 0 : _b.call(_a2); - } - }); - const [open2, setOpen] = useMergedState(false, { - value: toRef(props4, "open") - }); - const settingOpen = (value, e3) => { - if (props4.open === void 0) { - setOpen(value); - } - emit("update:open", value); - emit("openChange", value, e3); - }; - const close = (e3) => { - settingOpen(false, e3); - }; - const onConfirm = (e3) => { - var _a2; - return (_a2 = props4.onConfirm) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }; - const onCancel = (e3) => { - var _a2; - settingOpen(false, e3); - (_a2 = props4.onCancel) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }; - const onKeyDown2 = (e3) => { - if (e3.keyCode === KeyCode_default.ESC && open2) { - settingOpen(false, e3); - } - }; - const onOpenChange = (value) => { - const { - disabled - } = props4; - if (disabled) { - return; - } - settingOpen(value); - }; - const { - prefixCls: prefixClsConfirm, - getPrefixCls - } = useConfigInject_default("popconfirm", props4); - const rootPrefixCls = computed(() => getPrefixCls()); - const btnPrefixCls = computed(() => getPrefixCls("btn")); - const [wrapSSR] = style_default47(prefixClsConfirm); - const [popconfirmLocale] = useLocaleReceiver("Popconfirm", en_US_default6.Popconfirm); - const renderOverlay = () => { - var _a2, _b, _c, _d, _e; - const { - okButtonProps, - cancelButtonProps, - title = (_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - description = (_b = slots.description) === null || _b === void 0 ? void 0 : _b.call(slots), - cancelText = (_c = slots.cancel) === null || _c === void 0 ? void 0 : _c.call(slots), - okText = (_d = slots.okText) === null || _d === void 0 ? void 0 : _d.call(slots), - okType, - icon = ((_e = slots.icon) === null || _e === void 0 ? void 0 : _e.call(slots)) || createVNode(ExclamationCircleFilled_default, null, null), - showCancel = true - } = props4; - const { - cancelButton, - okButton - } = slots; - const cancelProps = _extends({ - onClick: onCancel, - size: "small" - }, cancelButtonProps); - const okProps = _extends(_extends(_extends({ - onClick: onConfirm - }, convertLegacyProps(okType)), { - size: "small" - }), okButtonProps); - return createVNode("div", { - "class": `${prefixClsConfirm.value}-inner-content` - }, [createVNode("div", { - "class": `${prefixClsConfirm.value}-message` - }, [icon && createVNode("span", { - "class": `${prefixClsConfirm.value}-message-icon` - }, [icon]), createVNode("div", { - "class": [`${prefixClsConfirm.value}-message-title`, { - [`${prefixClsConfirm.value}-message-title-only`]: !!description - }] - }, [title])]), description && createVNode("div", { - "class": `${prefixClsConfirm.value}-description` - }, [description]), createVNode("div", { - "class": `${prefixClsConfirm.value}-buttons` - }, [showCancel ? cancelButton ? cancelButton(cancelProps) : createVNode(button_default2, cancelProps, { - default: () => [cancelText || popconfirmLocale.value.cancelText] - }) : null, okButton ? okButton(okProps) : createVNode(ActionButton_default, { - "buttonProps": _extends(_extends({ - size: "small" - }, convertLegacyProps(okType)), okButtonProps), - "actionFn": onConfirm, - "close": close, - "prefixCls": btnPrefixCls.value, - "quitOnNullishReturnValue": true, - "emitEvent": true - }, { - default: () => [okText || popconfirmLocale.value.okText] - })])]); - }; - return () => { - var _a2; - const { - placement, - overlayClassName, - trigger: trigger2 = "click" - } = props4, restProps = __rest55(props4, ["placement", "overlayClassName", "trigger"]); - const otherProps = omit_default(restProps, ["title", "content", "cancelText", "okText", "onUpdate:open", "onConfirm", "onCancel", "prefixCls"]); - const overlayClassNames = classNames_default(prefixClsConfirm.value, overlayClassName); - return wrapSSR(createVNode(popover_default, _objectSpread2(_objectSpread2(_objectSpread2({}, otherProps), attrs), {}, { - "trigger": trigger2, - "placement": placement, - "onOpenChange": onOpenChange, - "open": open2.value, - "overlayClassName": overlayClassNames, - "transitionName": getTransitionName2(rootPrefixCls.value, "zoom-big", props4.transitionName), - "ref": rootRef, - "data-popover-inject": true - }), { - default: () => [cloneVNodes(((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || [], { - onKeydown: (e3) => { - onKeyDown2(e3); - } - }, false)], - content: renderOverlay - })); - }; - } -}); -var popconfirm_default = withInstall(Popconfirm); - -// node_modules/ant-design-vue/es/progress/props.js -var progressStatuses = ["normal", "exception", "active", "success"]; -var progressProps = () => ({ - prefixCls: String, - type: stringType(), - percent: Number, - format: functionType(), - status: stringType(), - showInfo: booleanType(), - strokeWidth: Number, - strokeLinecap: stringType(), - strokeColor: anyType(), - trailColor: String, - /** @deprecated Use `size` instead */ - width: Number, - success: objectType(), - gapDegree: Number, - gapPosition: stringType(), - size: someType([String, Number, Array]), - steps: Number, - /** @deprecated Use `success` instead */ - successPercent: Number, - title: String, - progressStatus: stringType() -}); - -// node_modules/ant-design-vue/es/progress/utils.js -function validProgress(progress) { - if (!progress || progress < 0) { - return 0; - } - if (progress > 100) { - return 100; - } - return progress; -} -function getSuccessPercent(_ref) { - let { - success, - successPercent - } = _ref; - let percent = successPercent; - if (success && "progress" in success) { - devWarning_default(false, "Progress", "`success.progress` is deprecated. Please use `success.percent` instead."); - percent = success.progress; - } - if (success && "percent" in success) { - percent = success.percent; - } - return percent; -} -function getPercentage(_ref2) { - let { - percent, - success, - successPercent - } = _ref2; - const realSuccessPercent = validProgress(getSuccessPercent({ - success, - successPercent - })); - return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)]; -} -function getStrokeColor(_ref3) { - let { - success = {}, - strokeColor - } = _ref3; - const { - strokeColor: successColor - } = success; - return [successColor || presetPrimaryColors.green, strokeColor || null]; -} -var getSize = (size2, type4, extra) => { - var _a2, _b, _c, _d; - let width = -1; - let height = -1; - if (type4 === "step") { - const steps = extra.steps; - const strokeWidth = extra.strokeWidth; - if (typeof size2 === "string" || typeof size2 === "undefined") { - width = size2 === "small" ? 2 : 14; - height = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 8; - } else if (typeof size2 === "number") { - [width, height] = [size2, size2]; - } else { - [width = 14, height = 8] = size2; - } - width *= steps; - } else if (type4 === "line") { - const strokeWidth = extra === null || extra === void 0 ? void 0 : extra.strokeWidth; - if (typeof size2 === "string" || typeof size2 === "undefined") { - height = strokeWidth || (size2 === "small" ? 6 : 8); - } else if (typeof size2 === "number") { - [width, height] = [size2, size2]; - } else { - [width = -1, height = 8] = size2; - } - } else if (type4 === "circle" || type4 === "dashboard") { - if (typeof size2 === "string" || typeof size2 === "undefined") { - [width, height] = size2 === "small" ? [60, 60] : [120, 120]; - } else if (typeof size2 === "number") { - [width, height] = [size2, size2]; - } else { - if (true) { - devWarning_default(false, "Progress", 'Type "circle" and "dashboard" do not accept array as `size`, please use number or preset size instead.'); - } - width = (_b = (_a2 = size2[0]) !== null && _a2 !== void 0 ? _a2 : size2[1]) !== null && _b !== void 0 ? _b : 120; - height = (_d = (_c = size2[0]) !== null && _c !== void 0 ? _c : size2[1]) !== null && _d !== void 0 ? _d : 120; - } - } - return { - width, - height - }; -}; - -// node_modules/ant-design-vue/es/progress/Line.js -var __rest56 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var lineProps = () => _extends(_extends({}, progressProps()), { - strokeColor: anyType(), - direction: stringType() -}); -var sortGradient = (gradients) => { - let tempArr = []; - Object.keys(gradients).forEach((key2) => { - const formattedKey = parseFloat(key2.replace(/%/g, "")); - if (!isNaN(formattedKey)) { - tempArr.push({ - key: formattedKey, - value: gradients[key2] - }); - } - }); - tempArr = tempArr.sort((a2, b2) => a2.key - b2.key); - return tempArr.map((_ref) => { - let { - key: key2, - value - } = _ref; - return `${value} ${key2}%`; - }).join(", "); -}; -var handleGradient = (strokeColor, directionConfig) => { - const { - from: from2 = presetPrimaryColors.blue, - to = presetPrimaryColors.blue, - direction = directionConfig === "rtl" ? "to left" : "to right" - } = strokeColor, rest2 = __rest56(strokeColor, ["from", "to", "direction"]); - if (Object.keys(rest2).length !== 0) { - const sortedGradients = sortGradient(rest2); - return { - backgroundImage: `linear-gradient(${direction}, ${sortedGradients})` - }; - } - return { - backgroundImage: `linear-gradient(${direction}, ${from2}, ${to})` - }; -}; -var Line_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ProgressLine", - inheritAttrs: false, - props: lineProps(), - setup(props4, _ref2) { - let { - slots, - attrs - } = _ref2; - const backgroundProps = computed(() => { - const { - strokeColor, - direction - } = props4; - return strokeColor && typeof strokeColor !== "string" ? handleGradient(strokeColor, direction) : { - backgroundColor: strokeColor - }; - }); - const borderRadius = computed(() => props4.strokeLinecap === "square" || props4.strokeLinecap === "butt" ? 0 : void 0); - const trailStyle = computed(() => props4.trailColor ? { - backgroundColor: props4.trailColor - } : void 0); - const mergedSize = computed(() => { - var _a2; - return (_a2 = props4.size) !== null && _a2 !== void 0 ? _a2 : [-1, props4.strokeWidth || (props4.size === "small" ? 6 : 8)]; - }); - const sizeRef = computed(() => getSize(mergedSize.value, "line", { - strokeWidth: props4.strokeWidth - })); - if (true) { - devWarning_default("strokeWidth" in props4, "Progress", "`strokeWidth` is deprecated. Please use `size` instead."); - } - const percentStyle = computed(() => { - const { - percent - } = props4; - return _extends({ - width: `${validProgress(percent)}%`, - height: `${sizeRef.value.height}px`, - borderRadius: borderRadius.value - }, backgroundProps.value); - }); - const successPercent = computed(() => { - return getSuccessPercent(props4); - }); - const successPercentStyle = computed(() => { - const { - success - } = props4; - return { - width: `${validProgress(successPercent.value)}%`, - height: `${sizeRef.value.height}px`, - borderRadius: borderRadius.value, - backgroundColor: success === null || success === void 0 ? void 0 : success.strokeColor - }; - }); - const outerStyle = { - width: sizeRef.value.width < 0 ? "100%" : sizeRef.value.width, - height: `${sizeRef.value.height}px` - }; - return () => { - var _a2; - return createVNode(Fragment, null, [createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [`${props4.prefixCls}-outer`, attrs.class], - "style": [attrs.style, outerStyle] - }), [createVNode("div", { - "class": `${props4.prefixCls}-inner`, - "style": trailStyle.value - }, [createVNode("div", { - "class": `${props4.prefixCls}-bg`, - "style": percentStyle.value - }, null), successPercent.value !== void 0 ? createVNode("div", { - "class": `${props4.prefixCls}-success-bg`, - "style": successPercentStyle.value - }, null) : null])]), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-progress/src/common.js -var defaultProps3 = { - percent: 0, - prefixCls: "vc-progress", - strokeColor: "#2db7f5", - strokeLinecap: "round", - strokeWidth: 1, - trailColor: "#D9D9D9", - trailWidth: 1 -}; -var useTransitionDuration = (paths) => { - const prevTimeStamp = ref(null); - onUpdated(() => { - const now5 = Date.now(); - let updated = false; - paths.value.forEach((val) => { - const path2 = (val === null || val === void 0 ? void 0 : val.$el) || val; - if (!path2) { - return; - } - updated = true; - const pathStyle = path2.style; - pathStyle.transitionDuration = ".3s, .3s, .3s, .06s"; - if (prevTimeStamp.value && now5 - prevTimeStamp.value < 100) { - pathStyle.transitionDuration = "0s, 0s"; - } - }); - if (updated) { - prevTimeStamp.value = Date.now(); - } - }); - return paths; -}; - -// node_modules/ant-design-vue/es/vc-progress/src/types.js -var propTypes = { - gapDegree: Number, - gapPosition: { - type: String - }, - percent: { - type: [Array, Number] - }, - prefixCls: String, - strokeColor: { - type: [Object, String, Array] - }, - strokeLinecap: { - type: String - }, - strokeWidth: Number, - trailColor: String, - trailWidth: Number, - transition: String -}; - -// node_modules/ant-design-vue/es/vc-progress/src/Line.js -var __rest57 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Line_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ProgressLine", - props: initDefaultProps_default(propTypes, defaultProps3), - setup(props4) { - const percentList = computed(() => { - const { - percent - } = props4; - return Array.isArray(percent) ? percent : [percent]; - }); - const percentListProps = computed(() => { - const { - prefixCls, - strokeLinecap, - strokeWidth, - transition - } = props4; - let stackPtg = 0; - return percentList.value.map((ptg, index3) => { - let dashPercent = 1; - switch (strokeLinecap) { - case "round": - dashPercent = 1 - strokeWidth / 100; - break; - case "square": - dashPercent = 1 - strokeWidth / 2 / 100; - break; - default: - dashPercent = 1; - break; - } - const pathStyle = { - strokeDasharray: `${ptg * dashPercent}px, 100px`, - strokeDashoffset: `-${stackPtg}px`, - transition: transition || "stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear" - }; - const color = strokeColorList.value[index3] || strokeColorList.value[strokeColorList.value.length - 1]; - stackPtg += ptg; - const pathProps = { - key: index3, - d: pathString.value, - "stroke-linecap": strokeLinecap, - stroke: color, - "stroke-width": strokeWidth, - "fill-opacity": "0", - class: `${prefixCls}-line-path`, - style: pathStyle - }; - return pathProps; - }); - }); - const strokeColorList = computed(() => { - const { - strokeColor - } = props4; - return Array.isArray(strokeColor) ? strokeColor : [strokeColor]; - }); - const [setRef, paths] = useRefs_default(); - useTransitionDuration(paths); - const center = computed(() => props4.strokeWidth / 2); - const right = computed(() => 100 - props4.strokeWidth / 2); - const pathString = computed(() => `M ${props4.strokeLinecap === "round" ? center.value : 0},${center.value} - L ${props4.strokeLinecap === "round" ? right.value : 100},${center.value}`); - const viewBoxString = computed(() => `0 0 100 ${props4.strokeWidth}`); - const pathFirst = computed(() => ({ - d: pathString.value, - "stroke-linecap": props4.strokeLinecap, - stroke: props4.trailColor, - "stroke-width": props4.trailWidth || props4.strokeWidth, - "fill-opacity": "0", - class: `${props4.prefixCls}-line-trail` - })); - return () => { - const { - percent, - prefixCls, - strokeColor, - strokeLinecap, - strokeWidth, - trailColor, - trailWidth, - transition - } = props4, restProps = __rest57(props4, ["percent", "prefixCls", "strokeColor", "strokeLinecap", "strokeWidth", "trailColor", "trailWidth", "transition"]); - delete restProps.gapPosition; - return createVNode("svg", _objectSpread2({ - "class": `${prefixCls}-line`, - "viewBox": viewBoxString.value, - "preserveAspectRatio": "none" - }, restProps), [createVNode("path", pathFirst.value, null), percentListProps.value.map((pathProps, index3) => { - return createVNode("path", _objectSpread2({ - "ref": setRef(index3) - }, pathProps), null); - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-progress/src/Circle.js -var __rest58 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var gradientSeed = 0; -function stripPercentToNumber(percent) { - return +percent.replace("%", ""); -} -function toArray7(value) { - return Array.isArray(value) ? value : [value]; -} -function getPathStyles(offset4, percent, strokeColor, strokeWidth) { - let gapDegree = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0; - let gapPosition = arguments.length > 5 ? arguments[5] : void 0; - const radius = 50 - strokeWidth / 2; - let beginPositionX = 0; - let beginPositionY = -radius; - let endPositionX = 0; - let endPositionY = -2 * radius; - switch (gapPosition) { - case "left": - beginPositionX = -radius; - beginPositionY = 0; - endPositionX = 2 * radius; - endPositionY = 0; - break; - case "right": - beginPositionX = radius; - beginPositionY = 0; - endPositionX = -2 * radius; - endPositionY = 0; - break; - case "bottom": - beginPositionY = radius; - endPositionY = 2 * radius; - break; - default: - } - const pathString = `M 50,50 m ${beginPositionX},${beginPositionY} - a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY} - a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`; - const len = Math.PI * 2 * radius; - const pathStyle = { - stroke: strokeColor, - strokeDasharray: `${percent / 100 * (len - gapDegree)}px ${len}px`, - strokeDashoffset: `-${gapDegree / 2 + offset4 / 100 * (len - gapDegree)}px`, - transition: "stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s" - // eslint-disable-line - }; - return { - pathString, - pathStyle - }; -} -var Circle_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "VCCircle", - props: initDefaultProps_default(propTypes, defaultProps3), - setup(props4) { - gradientSeed += 1; - const gradientId = ref(gradientSeed); - const percentList = computed(() => toArray7(props4.percent)); - const strokeColorList = computed(() => toArray7(props4.strokeColor)); - const [setRef, paths] = useRefs_default(); - useTransitionDuration(paths); - const getStokeList = () => { - const { - prefixCls, - strokeWidth, - strokeLinecap, - gapDegree, - gapPosition - } = props4; - let stackPtg = 0; - return percentList.value.map((ptg, index3) => { - const color = strokeColorList.value[index3] || strokeColorList.value[strokeColorList.value.length - 1]; - const stroke = Object.prototype.toString.call(color) === "[object Object]" ? `url(#${prefixCls}-gradient-${gradientId.value})` : ""; - const { - pathString, - pathStyle - } = getPathStyles(stackPtg, ptg, color, strokeWidth, gapDegree, gapPosition); - stackPtg += ptg; - const pathProps = { - key: index3, - d: pathString, - stroke, - "stroke-linecap": strokeLinecap, - "stroke-width": strokeWidth, - opacity: ptg === 0 ? 0 : 1, - "fill-opacity": "0", - class: `${prefixCls}-circle-path`, - style: pathStyle - }; - return createVNode("path", _objectSpread2({ - "ref": setRef(index3) - }, pathProps), null); - }); - }; - return () => { - const { - prefixCls, - strokeWidth, - trailWidth, - gapDegree, - gapPosition, - trailColor, - strokeLinecap, - strokeColor - } = props4, restProps = __rest58(props4, ["prefixCls", "strokeWidth", "trailWidth", "gapDegree", "gapPosition", "trailColor", "strokeLinecap", "strokeColor"]); - const { - pathString, - pathStyle - } = getPathStyles(0, 100, trailColor, strokeWidth, gapDegree, gapPosition); - delete restProps.percent; - const gradient = strokeColorList.value.find((color) => Object.prototype.toString.call(color) === "[object Object]"); - const pathFirst = { - d: pathString, - stroke: trailColor, - "stroke-linecap": strokeLinecap, - "stroke-width": trailWidth || strokeWidth, - "fill-opacity": "0", - class: `${prefixCls}-circle-trail`, - style: pathStyle - }; - return createVNode("svg", _objectSpread2({ - "class": `${prefixCls}-circle`, - "viewBox": "0 0 100 100" - }, restProps), [gradient && createVNode("defs", null, [createVNode("linearGradient", { - "id": `${prefixCls}-gradient-${gradientId.value}`, - "x1": "100%", - "y1": "0%", - "x2": "0%", - "y2": "0%" - }, [Object.keys(gradient).sort((a2, b2) => stripPercentToNumber(a2) - stripPercentToNumber(b2)).map((key2, index3) => createVNode("stop", { - "key": index3, - "offset": key2, - "stop-color": gradient[key2] - }, null))])]), createVNode("path", pathFirst, null), getStokeList().reverse()]); - }; - } -}); - -// node_modules/ant-design-vue/es/progress/Circle.js -var circleProps = () => _extends(_extends({}, progressProps()), { - strokeColor: anyType() -}); -var CIRCLE_MIN_STROKE_WIDTH = 3; -var getMinPercent = (width) => CIRCLE_MIN_STROKE_WIDTH / width * 100; -var Circle_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ProgressCircle", - inheritAttrs: false, - props: initDefaultProps_default(circleProps(), { - trailColor: null - }), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const originWidth = computed(() => { - var _a2; - return (_a2 = props4.width) !== null && _a2 !== void 0 ? _a2 : 120; - }); - const mergedSize = computed(() => { - var _a2; - return (_a2 = props4.size) !== null && _a2 !== void 0 ? _a2 : [originWidth.value, originWidth.value]; - }); - const sizeRef = computed(() => getSize(mergedSize.value, "circle")); - const gapDeg = computed(() => { - if (props4.gapDegree || props4.gapDegree === 0) { - return props4.gapDegree; - } - if (props4.type === "dashboard") { - return 75; - } - return void 0; - }); - const circleStyle = computed(() => { - return { - width: `${sizeRef.value.width}px`, - height: `${sizeRef.value.height}px`, - fontSize: `${sizeRef.value.width * 0.15 + 6}px` - }; - }); - const circleWidth = computed(() => { - var _a2; - return (_a2 = props4.strokeWidth) !== null && _a2 !== void 0 ? _a2 : Math.max(getMinPercent(sizeRef.value.width), 6); - }); - const gapPos = computed(() => props4.gapPosition || props4.type === "dashboard" && "bottom" || void 0); - const percent = computed(() => getPercentage(props4)); - const isGradient = computed(() => Object.prototype.toString.call(props4.strokeColor) === "[object Object]"); - const strokeColor = computed(() => getStrokeColor({ - success: props4.success, - strokeColor: props4.strokeColor - })); - const wrapperClassName = computed(() => ({ - [`${props4.prefixCls}-inner`]: true, - [`${props4.prefixCls}-circle-gradient`]: isGradient.value - })); - return () => { - var _a2; - const circleContent = createVNode(Circle_default, { - "percent": percent.value, - "strokeWidth": circleWidth.value, - "trailWidth": circleWidth.value, - "strokeColor": strokeColor.value, - "strokeLinecap": props4.strokeLinecap, - "trailColor": props4.trailColor, - "prefixCls": props4.prefixCls, - "gapDegree": gapDeg.value, - "gapPosition": gapPos.value - }, null); - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [wrapperClassName.value, attrs.class], - "style": [attrs.style, circleStyle.value] - }), [sizeRef.value.width <= 20 ? createVNode(tooltip_default, null, { - default: () => [createVNode("span", null, [circleContent])], - title: slots.default - }) : createVNode(Fragment, null, [circleContent, (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/progress/Steps.js -var stepsProps = () => _extends(_extends({}, progressProps()), { - steps: Number, - strokeColor: someType(), - trailColor: String -}); -var Steps_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Steps", - props: stepsProps(), - setup(props4, _ref) { - let { - slots - } = _ref; - const current = computed(() => Math.round(props4.steps * ((props4.percent || 0) / 100))); - const mergedSize = computed(() => { - var _a2; - return (_a2 = props4.size) !== null && _a2 !== void 0 ? _a2 : [props4.size === "small" ? 2 : 14, props4.strokeWidth || 8]; - }); - const sizeRef = computed(() => getSize(mergedSize.value, "step", { - steps: props4.steps, - strokeWidth: props4.strokeWidth || 8 - })); - const styledSteps = computed(() => { - const { - steps, - strokeColor, - trailColor, - prefixCls - } = props4; - const temp = []; - for (let i3 = 0; i3 < steps; i3 += 1) { - const color = Array.isArray(strokeColor) ? strokeColor[i3] : strokeColor; - const cls = { - [`${prefixCls}-steps-item`]: true, - [`${prefixCls}-steps-item-active`]: i3 <= current.value - 1 - }; - temp.push(createVNode("div", { - "key": i3, - "class": cls, - "style": { - backgroundColor: i3 <= current.value - 1 ? color : trailColor, - width: `${sizeRef.value.width / steps}px`, - height: `${sizeRef.value.height}px` - } - }, null)); - } - return temp; - }); - return () => { - var _a2; - return createVNode("div", { - "class": `${props4.prefixCls}-steps-outer` - }, [styledSteps.value, (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/ant-design-vue/es/progress/style/index.js -var antProgressActive = new Keyframes_default("antProgressActive", { - "0%": { - transform: "translateX(-100%) scaleX(0)", - opacity: 0.1 - }, - "20%": { - transform: "translateX(-100%) scaleX(0)", - opacity: 0.5 - }, - to: { - transform: "translateX(0) scaleX(1)", - opacity: 0 - } -}); -var genBaseStyle13 = (token2) => { - const { - componentCls: progressCls, - iconCls: iconPrefixCls - } = token2; - return { - [progressCls]: _extends(_extends({}, resetComponent(token2)), { - display: "inline-block", - "&-rtl": { - direction: "rtl" - }, - "&-line": { - position: "relative", - width: "100%", - fontSize: token2.fontSize, - marginInlineEnd: token2.marginXS, - marginBottom: token2.marginXS - }, - [`${progressCls}-outer`]: { - display: "inline-block", - width: "100%" - }, - [`&${progressCls}-show-info`]: { - [`${progressCls}-outer`]: { - marginInlineEnd: `calc(-2em - ${token2.marginXS}px)`, - paddingInlineEnd: `calc(2em + ${token2.paddingXS}px)` - } - }, - [`${progressCls}-inner`]: { - position: "relative", - display: "inline-block", - width: "100%", - overflow: "hidden", - verticalAlign: "middle", - backgroundColor: token2.progressRemainingColor, - borderRadius: token2.progressLineRadius - }, - [`${progressCls}-inner:not(${progressCls}-circle-gradient)`]: { - [`${progressCls}-circle-path`]: { - stroke: token2.colorInfo - } - }, - [`${progressCls}-success-bg, ${progressCls}-bg`]: { - position: "relative", - backgroundColor: token2.colorInfo, - borderRadius: token2.progressLineRadius, - transition: `all ${token2.motionDurationSlow} ${token2.motionEaseInOutCirc}` - }, - [`${progressCls}-success-bg`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - backgroundColor: token2.colorSuccess - }, - [`${progressCls}-text`]: { - display: "inline-block", - width: "2em", - marginInlineStart: token2.marginXS, - color: token2.progressInfoTextColor, - lineHeight: 1, - whiteSpace: "nowrap", - textAlign: "start", - verticalAlign: "middle", - wordBreak: "normal", - [iconPrefixCls]: { - fontSize: token2.fontSize - } - }, - [`&${progressCls}-status-active`]: { - [`${progressCls}-bg::before`]: { - position: "absolute", - inset: 0, - backgroundColor: token2.colorBgContainer, - borderRadius: token2.progressLineRadius, - opacity: 0, - animationName: antProgressActive, - animationDuration: token2.progressActiveMotionDuration, - animationTimingFunction: token2.motionEaseOutQuint, - animationIterationCount: "infinite", - content: '""' - } - }, - [`&${progressCls}-status-exception`]: { - [`${progressCls}-bg`]: { - backgroundColor: token2.colorError - }, - [`${progressCls}-text`]: { - color: token2.colorError - } - }, - [`&${progressCls}-status-exception ${progressCls}-inner:not(${progressCls}-circle-gradient)`]: { - [`${progressCls}-circle-path`]: { - stroke: token2.colorError - } - }, - [`&${progressCls}-status-success`]: { - [`${progressCls}-bg`]: { - backgroundColor: token2.colorSuccess - }, - [`${progressCls}-text`]: { - color: token2.colorSuccess - } - }, - [`&${progressCls}-status-success ${progressCls}-inner:not(${progressCls}-circle-gradient)`]: { - [`${progressCls}-circle-path`]: { - stroke: token2.colorSuccess - } - } - }) - }; -}; -var genCircleStyle = (token2) => { - const { - componentCls: progressCls, - iconCls: iconPrefixCls - } = token2; - return { - [progressCls]: { - [`${progressCls}-circle-trail`]: { - stroke: token2.progressRemainingColor - }, - [`&${progressCls}-circle ${progressCls}-inner`]: { - position: "relative", - lineHeight: 1, - backgroundColor: "transparent" - }, - [`&${progressCls}-circle ${progressCls}-text`]: { - position: "absolute", - insetBlockStart: "50%", - insetInlineStart: 0, - width: "100%", - margin: 0, - padding: 0, - color: token2.colorText, - lineHeight: 1, - whiteSpace: "normal", - textAlign: "center", - transform: "translateY(-50%)", - [iconPrefixCls]: { - fontSize: `${token2.fontSize / token2.fontSizeSM}em` - } - }, - [`${progressCls}-circle&-status-exception`]: { - [`${progressCls}-text`]: { - color: token2.colorError - } - }, - [`${progressCls}-circle&-status-success`]: { - [`${progressCls}-text`]: { - color: token2.colorSuccess - } - } - }, - [`${progressCls}-inline-circle`]: { - lineHeight: 1, - [`${progressCls}-inner`]: { - verticalAlign: "bottom" - } - } - }; -}; -var genStepStyle = (token2) => { - const { - componentCls: progressCls - } = token2; - return { - [progressCls]: { - [`${progressCls}-steps`]: { - display: "inline-block", - "&-outer": { - display: "flex", - flexDirection: "row", - alignItems: "center" - }, - "&-item": { - flexShrink: 0, - minWidth: token2.progressStepMinWidth, - marginInlineEnd: token2.progressStepMarginInlineEnd, - backgroundColor: token2.progressRemainingColor, - transition: `all ${token2.motionDurationSlow}`, - "&-active": { - backgroundColor: token2.colorInfo - } - } - } - } - }; -}; -var genSmallLine = (token2) => { - const { - componentCls: progressCls, - iconCls: iconPrefixCls - } = token2; - return { - [progressCls]: { - [`${progressCls}-small&-line, ${progressCls}-small&-line ${progressCls}-text ${iconPrefixCls}`]: { - fontSize: token2.fontSizeSM - } - } - }; -}; -var style_default48 = genComponentStyleHook("Progress", (token2) => { - const progressStepMarginInlineEnd = token2.marginXXS / 2; - const progressToken = merge(token2, { - progressLineRadius: 100, - progressInfoTextColor: token2.colorText, - progressDefaultColor: token2.colorInfo, - progressRemainingColor: token2.colorFillSecondary, - progressStepMarginInlineEnd, - progressStepMinWidth: progressStepMarginInlineEnd, - progressActiveMotionDuration: "2.4s" - }); - return [genBaseStyle13(progressToken), genCircleStyle(progressToken), genStepStyle(progressToken), genSmallLine(progressToken)]; -}); - -// node_modules/ant-design-vue/es/progress/progress.js -var __rest59 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var progress_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AProgress", - inheritAttrs: false, - props: initDefaultProps_default(progressProps(), { - type: "line", - percent: 0, - showInfo: true, - // null for different theme definition - trailColor: null, - size: "default", - strokeLinecap: "round" - }), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("progress", props4); - const [wrapSSR, hashId] = style_default48(prefixCls); - if (true) { - devWarning_default("successPercent" in props4, "Progress", "`successPercent` is deprecated. Please use `success.percent` instead."); - devWarning_default("width" in props4, "Progress", "`width` is deprecated. Please use `size` instead."); - } - const strokeColorNotArray = computed(() => Array.isArray(props4.strokeColor) ? props4.strokeColor[0] : props4.strokeColor); - const percentNumber = computed(() => { - const { - percent = 0 - } = props4; - const successPercent = getSuccessPercent(props4); - return parseInt(successPercent !== void 0 ? successPercent.toString() : percent.toString(), 10); - }); - const progressStatus = computed(() => { - const { - status - } = props4; - if (!progressStatuses.includes(status) && percentNumber.value >= 100) { - return "success"; - } - return status || "normal"; - }); - const classString = computed(() => { - const { - type: type4, - showInfo, - size: size2 - } = props4; - const pre = prefixCls.value; - return { - [pre]: true, - [`${pre}-inline-circle`]: type4 === "circle" && getSize(size2, "circle").width <= 20, - [`${pre}-${type4 === "dashboard" && "circle" || type4}`]: true, - [`${pre}-status-${progressStatus.value}`]: true, - [`${pre}-show-info`]: showInfo, - [`${pre}-${size2}`]: size2, - [`${pre}-rtl`]: direction.value === "rtl", - [hashId.value]: true - }; - }); - const strokeColorNotGradient = computed(() => typeof props4.strokeColor === "string" || Array.isArray(props4.strokeColor) ? props4.strokeColor : void 0); - const renderProcessInfo = () => { - const { - showInfo, - format: format3, - type: type4, - percent, - title - } = props4; - const successPercent = getSuccessPercent(props4); - if (!showInfo) return null; - let text; - const textFormatter = format3 || (slots === null || slots === void 0 ? void 0 : slots.format) || ((val) => `${val}%`); - const isLineType = type4 === "line"; - if (format3 || (slots === null || slots === void 0 ? void 0 : slots.format) || progressStatus.value !== "exception" && progressStatus.value !== "success") { - text = textFormatter(validProgress(percent), validProgress(successPercent)); - } else if (progressStatus.value === "exception") { - text = isLineType ? createVNode(CloseCircleFilled_default, null, null) : createVNode(CloseOutlined_default, null, null); - } else if (progressStatus.value === "success") { - text = isLineType ? createVNode(CheckCircleFilled_default, null, null) : createVNode(CheckOutlined_default, null, null); - } - return createVNode("span", { - "class": `${prefixCls.value}-text`, - "title": title === void 0 && typeof text === "string" ? text : void 0 - }, [text]); - }; - return () => { - const { - type: type4, - steps, - title - } = props4; - const { - class: cls - } = attrs, restAttrs = __rest59(attrs, ["class"]); - const progressInfo = renderProcessInfo(); - let progress; - if (type4 === "line") { - progress = steps ? createVNode(Steps_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "strokeColor": strokeColorNotGradient.value, - "prefixCls": prefixCls.value, - "steps": steps - }), { - default: () => [progressInfo] - }) : createVNode(Line_default, _objectSpread2(_objectSpread2({}, props4), {}, { - "strokeColor": strokeColorNotArray.value, - "prefixCls": prefixCls.value, - "direction": direction.value - }), { - default: () => [progressInfo] - }); - } else if (type4 === "circle" || type4 === "dashboard") { - progress = createVNode(Circle_default2, _objectSpread2(_objectSpread2({}, props4), {}, { - "prefixCls": prefixCls.value, - "strokeColor": strokeColorNotArray.value, - "progressStatus": progressStatus.value - }), { - default: () => [progressInfo] - }); - } - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({ - "role": "progressbar" - }, restAttrs), {}, { - "class": [classString.value, cls], - "title": title - }), [progress])); - }; - } -}); - -// node_modules/ant-design-vue/es/progress/index.js -var progress_default2 = withInstall(progress_default); - -// node_modules/ant-design-vue/es/rate/util.js -function getScroll4(w2) { - let ret = w2.pageXOffset; - const method5 = "scrollLeft"; - if (typeof ret !== "number") { - const d2 = w2.document; - ret = d2.documentElement[method5]; - if (typeof ret !== "number") { - ret = d2.body[method5]; - } - } - return ret; -} -function getClientPosition2(elem) { - let x2; - let y2; - const doc = elem.ownerDocument; - const { - body - } = doc; - const docElem = doc && doc.documentElement; - const box2 = elem.getBoundingClientRect(); - x2 = box2.left; - y2 = box2.top; - x2 -= docElem.clientLeft || body.clientLeft || 0; - y2 -= docElem.clientTop || body.clientTop || 0; - return { - left: x2, - top: y2 - }; -} -function getOffsetLeft(el) { - const pos = getClientPosition2(el); - const doc = el.ownerDocument; - const w2 = doc.defaultView || doc.parentWindow; - pos.left += getScroll4(w2); - return pos.left; -} - -// node_modules/ant-design-vue/es/rate/Star.js -var starProps = { - value: Number, - index: Number, - prefixCls: String, - allowHalf: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - character: vue_types_default.any, - characterRender: Function, - focused: { - type: Boolean, - default: void 0 - }, - count: Number, - onClick: Function, - onHover: Function -}; -var Star_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Star", - inheritAttrs: false, - props: starProps, - emits: ["hover", "click"], - setup(props4, _ref) { - let { - emit - } = _ref; - const onHover = (e3) => { - const { - index: index3 - } = props4; - emit("hover", e3, index3); - }; - const onClick = (e3) => { - const { - index: index3 - } = props4; - emit("click", e3, index3); - }; - const onKeyDown2 = (e3) => { - const { - index: index3 - } = props4; - if (e3.keyCode === 13) { - emit("click", e3, index3); - } - }; - const cls = computed(() => { - const { - prefixCls, - index: index3, - value, - allowHalf, - focused - } = props4; - const starValue = index3 + 1; - let className = prefixCls; - if (value === 0 && index3 === 0 && focused) { - className += ` ${prefixCls}-focused`; - } else if (allowHalf && value + 0.5 >= starValue && value < starValue) { - className += ` ${prefixCls}-half ${prefixCls}-active`; - if (focused) { - className += ` ${prefixCls}-focused`; - } - } else { - className += starValue <= value ? ` ${prefixCls}-full` : ` ${prefixCls}-zero`; - if (starValue === value && focused) { - className += ` ${prefixCls}-focused`; - } - } - return className; - }); - return () => { - const { - disabled, - prefixCls, - characterRender, - character: character2, - index: index3, - count, - value - } = props4; - const characterNode = typeof character2 === "function" ? character2({ - disabled, - prefixCls, - index: index3, - count, - value - }) : character2; - let star = createVNode("li", { - "class": cls.value - }, [createVNode("div", { - "onClick": disabled ? null : onClick, - "onKeydown": disabled ? null : onKeyDown2, - "onMousemove": disabled ? null : onHover, - "role": "radio", - "aria-checked": value > index3 ? "true" : "false", - "aria-posinset": index3 + 1, - "aria-setsize": count, - "tabindex": disabled ? -1 : 0 - }, [createVNode("div", { - "class": `${prefixCls}-first` - }, [characterNode]), createVNode("div", { - "class": `${prefixCls}-second` - }, [characterNode])])]); - if (characterRender) { - star = characterRender(star, props4); - } - return star; - }; - } -}); - -// node_modules/ant-design-vue/es/rate/style/index.js -var genRateStarStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-star`]: { - position: "relative", - display: "inline-block", - color: "inherit", - cursor: "pointer", - "&:not(:last-child)": { - marginInlineEnd: token2.marginXS - }, - "> div": { - transition: `all ${token2.motionDurationMid}, outline 0s`, - "&:hover": { - transform: token2.rateStarHoverScale - }, - "&:focus": { - outline: 0 - }, - "&:focus-visible": { - outline: `${token2.lineWidth}px dashed ${token2.rateStarColor}`, - transform: token2.rateStarHoverScale - } - }, - "&-first, &-second": { - color: token2.defaultColor, - transition: `all ${token2.motionDurationMid}`, - userSelect: "none", - [token2.iconCls]: { - verticalAlign: "middle" - } - }, - "&-first": { - position: "absolute", - top: 0, - insetInlineStart: 0, - width: "50%", - height: "100%", - overflow: "hidden", - opacity: 0 - }, - [`&-half ${componentCls}-star-first, &-half ${componentCls}-star-second`]: { - opacity: 1 - }, - [`&-half ${componentCls}-star-first, &-full ${componentCls}-star-second`]: { - color: "inherit" - } - } - }; -}; -var genRateRtlStyle = (token2) => ({ - [`&-rtl${token2.componentCls}`]: { - direction: "rtl" - } -}); -var genRateStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), { - display: "inline-block", - margin: 0, - padding: 0, - color: token2.rateStarColor, - fontSize: token2.rateStarSize, - lineHeight: "unset", - listStyle: "none", - outline: "none", - // disable styles - [`&-disabled${componentCls} ${componentCls}-star`]: { - cursor: "default", - "&:hover": { - transform: "scale(1)" - } - } - }), genRateStarStyle(token2)), { - // text styles - [`+ ${componentCls}-text`]: { - display: "inline-block", - marginInlineStart: token2.marginXS, - fontSize: token2.fontSize - } - }), genRateRtlStyle(token2)) - }; -}; -var style_default49 = genComponentStyleHook("Rate", (token2) => { - const { - colorFillContent - } = token2; - const rateToken = merge(token2, { - rateStarColor: token2["yellow-6"], - rateStarSize: token2.controlHeightLG * 0.5, - rateStarHoverScale: "scale(1.1)", - defaultColor: colorFillContent - }); - return [genRateStyle(rateToken)]; -}); - -// node_modules/ant-design-vue/es/rate/index.js -var rateProps = () => ({ - prefixCls: String, - count: Number, - value: Number, - allowHalf: { - type: Boolean, - default: void 0 - }, - allowClear: { - type: Boolean, - default: void 0 - }, - tooltips: Array, - disabled: { - type: Boolean, - default: void 0 - }, - character: vue_types_default.any, - autofocus: { - type: Boolean, - default: void 0 - }, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - direction: String, - id: String, - onChange: Function, - onHoverChange: Function, - "onUpdate:value": Function, - onFocus: Function, - onBlur: Function, - onKeydown: Function -}); -var Rate = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ARate", - inheritAttrs: false, - props: initDefaultProps_default(rateProps(), { - value: 0, - count: 5, - allowHalf: false, - allowClear: true, - tabindex: 0, - direction: "ltr" - }), - // emits: ['hoverChange', 'update:value', 'change', 'focus', 'blur', 'keydown'], - setup(props4, _ref) { - let { - slots, - attrs, - emit, - expose - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("rate", props4); - const [wrapSSR, hashId] = style_default49(prefixCls); - const formItemContext = useInjectFormItemContext(); - const rateRef = ref(); - const [setRef, starRefs] = useRefs_default(); - const state = reactive({ - value: props4.value, - focused: false, - cleanedValue: null, - hoverValue: void 0 - }); - watch(() => props4.value, () => { - state.value = props4.value; - }); - const getStarDOM = (index3) => { - return findDOMNode(starRefs.value.get(index3)); - }; - const getStarValue = (index3, x2) => { - const reverse2 = direction.value === "rtl"; - let value = index3 + 1; - if (props4.allowHalf) { - const starEle = getStarDOM(index3); - const leftDis = getOffsetLeft(starEle); - const width = starEle.clientWidth; - if (reverse2 && x2 - leftDis > width / 2) { - value -= 0.5; - } else if (!reverse2 && x2 - leftDis < width / 2) { - value -= 0.5; - } - } - return value; - }; - const changeValue = (value) => { - if (props4.value === void 0) { - state.value = value; - } - emit("update:value", value); - emit("change", value); - formItemContext.onFieldChange(); - }; - const onHover = (e3, index3) => { - const hoverValue = getStarValue(index3, e3.pageX); - if (hoverValue !== state.cleanedValue) { - state.hoverValue = hoverValue; - state.cleanedValue = null; - } - emit("hoverChange", hoverValue); - }; - const onMouseLeave = () => { - state.hoverValue = void 0; - state.cleanedValue = null; - emit("hoverChange", void 0); - }; - const onClick = (event, index3) => { - const { - allowClear - } = props4; - const newValue = getStarValue(index3, event.pageX); - let isReset = false; - if (allowClear) { - isReset = newValue === state.value; - } - onMouseLeave(); - changeValue(isReset ? 0 : newValue); - state.cleanedValue = isReset ? newValue : null; - }; - const onFocus = (e3) => { - state.focused = true; - emit("focus", e3); - }; - const onBlur = (e3) => { - state.focused = false; - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const onKeyDown2 = (event) => { - const { - keyCode - } = event; - const { - count, - allowHalf - } = props4; - const reverse2 = direction.value === "rtl"; - if (keyCode === KeyCode_default.RIGHT && state.value < count && !reverse2) { - if (allowHalf) { - state.value += 0.5; - } else { - state.value += 1; - } - changeValue(state.value); - event.preventDefault(); - } else if (keyCode === KeyCode_default.LEFT && state.value > 0 && !reverse2) { - if (allowHalf) { - state.value -= 0.5; - } else { - state.value -= 1; - } - changeValue(state.value); - event.preventDefault(); - } else if (keyCode === KeyCode_default.RIGHT && state.value > 0 && reverse2) { - if (allowHalf) { - state.value -= 0.5; - } else { - state.value -= 1; - } - changeValue(state.value); - event.preventDefault(); - } else if (keyCode === KeyCode_default.LEFT && state.value < count && reverse2) { - if (allowHalf) { - state.value += 0.5; - } else { - state.value += 1; - } - changeValue(state.value); - event.preventDefault(); - } - emit("keydown", event); - }; - const focus = () => { - if (!props4.disabled) { - rateRef.value.focus(); - } - }; - const blur = () => { - if (!props4.disabled) { - rateRef.value.blur(); - } - }; - expose({ - focus, - blur - }); - onMounted(() => { - const { - autofocus, - disabled - } = props4; - if (autofocus && !disabled) { - focus(); - } - }); - const characterRender = (node2, _ref2) => { - let { - index: index3 - } = _ref2; - const { - tooltips - } = props4; - if (!tooltips) return node2; - return createVNode(tooltip_default, { - "title": tooltips[index3] - }, { - default: () => [node2] - }); - }; - return () => { - const { - count, - allowHalf, - disabled, - tabindex, - id = formItemContext.id.value - } = props4; - const { - class: className, - style - } = attrs; - const stars = []; - const disabledClass = disabled ? `${prefixCls.value}-disabled` : ""; - const character2 = props4.character || slots.character || (() => createVNode(StarFilled_default, null, null)); - for (let index3 = 0; index3 < count; index3++) { - stars.push(createVNode(Star_default, { - "ref": setRef(index3), - "key": index3, - "index": index3, - "count": count, - "disabled": disabled, - "prefixCls": `${prefixCls.value}-star`, - "allowHalf": allowHalf, - "value": state.hoverValue === void 0 ? state.value : state.hoverValue, - "onClick": onClick, - "onHover": onHover, - "character": character2, - "characterRender": characterRender, - "focused": state.focused - }, null)); - } - const rateClassName = classNames_default(prefixCls.value, disabledClass, className, { - [hashId.value]: true, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }); - return wrapSSR(createVNode("ul", _objectSpread2(_objectSpread2({}, attrs), {}, { - "id": id, - "class": rateClassName, - "style": style, - "onMouseleave": disabled ? null : onMouseLeave, - "tabindex": disabled ? -1 : tabindex, - "onFocus": disabled ? null : onFocus, - "onBlur": disabled ? null : onBlur, - "onKeydown": disabled ? null : onKeyDown2, - "ref": rateRef, - "role": "radiogroup" - }), [stars])); - }; - } -}); -var rate_default = withInstall(Rate); - -// node_modules/ant-design-vue/es/result/noFound.js -var NoFound = () => { - return createVNode("svg", { - "width": "252", - "height": "294" - }, [createVNode("defs", null, [createVNode("path", { - "d": "M0 .387h251.772v251.772H0z" - }, null)]), createVNode("g", { - "fill": "none", - "fill-rule": "evenodd" - }, [createVNode("g", { - "transform": "translate(0 .012)" - }, [createVNode("mask", { - "fill": "#fff" - }, null), createVNode("path", { - "d": "M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321", - "fill": "#E4EBF7", - "mask": "url(#b)" - }, null)]), createVNode("path", { - "d": "M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "d": "M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "d": "M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "stroke": "#FFF", - "stroke-width": "2", - "d": "M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39" - }, null), createVNode("path", { - "d": "M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48", - "fill": "#1890FF" - }, null), createVNode("path", { - "d": "M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88", - "fill": "#FFB594" - }, null), createVNode("path", { - "d": "M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165", - "fill": "#7BB2F9" - }, null), createVNode("path", { - "d": "M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M107.275 222.1s2.773-1.11 6.102-3.884", - "stroke": "#648BD8", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z", - "fill": "#520038" - }, null), createVNode("path", { - "d": "M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254", - "fill": "#552950" - }, null), createVNode("path", { - "stroke": "#DB836E", - "stroke-width": "1.118", - "stroke-linecap": "round", - "stroke-linejoin": "round", - "d": "M110.13 74.84l-.896 1.61-.298 4.357h-2.228" - }, null), createVNode("path", { - "d": "M110.846 74.481s1.79-.716 2.506.537", - "stroke": "#5C2552", - "stroke-width": "1.118", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67", - "stroke": "#DB836E", - "stroke-width": "1.118", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M103.287 72.93s1.83 1.113 4.137.954", - "stroke": "#5C2552", - "stroke-width": "1.118", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639", - "stroke": "#DB836E", - "stroke-width": "1.118", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206", - "stroke": "#E4EBF7", - "stroke-width": "1.101", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M129.405 122.865s-5.272 7.403-9.422 10.768", - "stroke": "#E4EBF7", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M119.306 107.329s.452 4.366-2.127 32.062", - "stroke": "#E4EBF7", - "stroke-width": "1.101", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01", - "fill": "#F2D7AD" - }, null), createVNode("path", { - "d": "M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92", - "fill": "#F4D19D" - }, null), createVNode("path", { - "d": "M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z", - "fill": "#F2D7AD" - }, null), createVNode("path", { - "fill": "#CC9B6E", - "d": "M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z" - }, null), createVNode("path", { - "d": "M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83", - "fill": "#F4D19D" - }, null), createVNode("path", { - "fill": "#CC9B6E", - "d": "M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z" - }, null), createVNode("path", { - "fill": "#CC9B6E", - "d": "M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z" - }, null), createVNode("path", { - "d": "M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044", - "stroke": "#DB836E", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617", - "stroke": "#DB836E", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754", - "stroke": "#DB836E", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647", - "fill": "#5BA02E" - }, null), createVNode("path", { - "d": "M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647", - "fill": "#92C110" - }, null), createVNode("path", { - "d": "M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187", - "fill": "#F2D7AD" - }, null), createVNode("path", { - "d": "M88.979 89.48s7.776 5.384 16.6 2.842", - "stroke": "#E4EBF7", - "stroke-width": "1.101", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null)])]); -}; -var noFound_default = NoFound; - -// node_modules/ant-design-vue/es/result/serverError.js -var ServerError = () => { - return createVNode("svg", { - "width": "254", - "height": "294" - }, [createVNode("defs", null, [createVNode("path", { - "d": "M0 .335h253.49v253.49H0z" - }, null), createVNode("path", { - "d": "M0 293.665h253.49V.401H0z" - }, null)]), createVNode("g", { - "fill": "none", - "fill-rule": "evenodd" - }, [createVNode("g", { - "transform": "translate(0 .067)" - }, [createVNode("mask", { - "fill": "#fff" - }, null), createVNode("path", { - "d": "M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134", - "fill": "#E4EBF7", - "mask": "url(#b)" - }, null)]), createVNode("path", { - "d": "M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "d": "M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68", - "fill": "#FF603B" - }, null), createVNode("path", { - "d": "M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487", - "fill": "#FFB594" - }, null), createVNode("path", { - "d": "M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246", - "fill": "#FFB594" - }, null), createVNode("path", { - "d": "M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z", - "fill": "#520038" - }, null), createVNode("path", { - "d": "M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26", - "fill": "#552950" - }, null), createVNode("path", { - "stroke": "#DB836E", - "stroke-width": "1.063", - "stroke-linecap": "round", - "stroke-linejoin": "round", - "d": "M99.206 73.644l-.9 1.62-.3 4.38h-2.24" - }, null), createVNode("path", { - "d": "M99.926 73.284s1.8-.72 2.52.54", - "stroke": "#5C2552", - "stroke-width": "1.117", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68", - "stroke": "#DB836E", - "stroke-width": "1.117", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M92.326 71.724s1.84 1.12 4.16.96", - "stroke": "#5C2552", - "stroke-width": "1.117", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954", - "stroke": "#DB836E", - "stroke-width": "1.063", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044", - "stroke": "#E4EBF7", - "stroke-width": "1.136", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51", - "stroke": "#E4EBF7", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69", - "fill": "#7BB2F9" - }, null), createVNode("path", { - "d": "M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034", - "stroke": "#648BD8", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M96.973 219.373s2.882-1.153 6.34-4.034", - "stroke": "#648BD8", - "stroke-width": "1.032", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07", - "stroke": "#648BD8", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513", - "stroke": "#648BD8", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72", - "stroke": "#E4EBF7", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593", - "stroke": "#DB836E", - "stroke-width": ".774", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762", - "stroke": "#E59788", - "stroke-width": ".774", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12", - "stroke": "#E59788", - "stroke-width": ".774", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M109.278 112.533s3.38-3.613 7.575-4.662", - "stroke": "#E4EBF7", - "stroke-width": "1.085", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M107.375 123.006s9.697-2.745 11.445-.88", - "stroke": "#E59788", - "stroke-width": ".774", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955", - "stroke": "#BFCDDD", - "stroke-width": "2", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01", - "fill": "#A3B4C6" - }, null), createVNode("path", { - "d": "M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813", - "fill": "#A3B4C6" - }, null), createVNode("mask", { - "fill": "#fff" - }, null), createVNode("path", { - "fill": "#A3B4C6", - "mask": "url(#d)", - "d": "M154.098 190.096h70.513v-84.617h-70.513z" - }, null), createVNode("path", { - "d": "M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208", - "fill": "#BFCDDD", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802", - "fill": "#FFF", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209", - "fill": "#BFCDDD", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751", - "stroke": "#7C90A5", - "stroke-width": "1.124", - "stroke-linecap": "round", - "stroke-linejoin": "round", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802", - "fill": "#FFF", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407", - "fill": "#BFCDDD", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M177.259 207.217v11.52M201.05 207.217v11.52", - "stroke": "#A3B4C6", - "stroke-width": "1.124", - "stroke-linecap": "round", - "stroke-linejoin": "round", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422", - "fill": "#5BA02E", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423", - "fill": "#92C110", - "mask": "url(#d)" - }, null), createVNode("path", { - "d": "M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209", - "fill": "#F2D7AD", - "mask": "url(#d)" - }, null)])]); -}; -var serverError_default = ServerError; - -// node_modules/ant-design-vue/es/result/unauthorized.js -var Unauthorized = () => { - return createVNode("svg", { - "width": "251", - "height": "294" - }, [createVNode("g", { - "fill": "none", - "fill-rule": "evenodd" - }, [createVNode("path", { - "d": "M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023", - "fill": "#E4EBF7" - }, null), createVNode("path", { - "d": "M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "d": "M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "d": "M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z", - "stroke": "#FFF", - "stroke-width": "2" - }, null), createVNode("path", { - "stroke": "#FFF", - "stroke-width": "2", - "d": "M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668" - }, null), createVNode("path", { - "d": "M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321", - "fill": "#A26EF4" - }, null), createVNode("path", { - "d": "M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61", - "fill": "#5BA02E" - }, null), createVNode("path", { - "d": "M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611", - "fill": "#92C110" - }, null), createVNode("path", { - "d": "M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17", - "fill": "#F2D7AD" - }, null), createVNode("path", { - "d": "M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367", - "fill": "#FFB594" - }, null), createVNode("path", { - "d": "M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M78.18 94.656s.911 7.41-4.914 13.078", - "stroke": "#E4EBF7", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437", - "stroke": "#E4EBF7", - "stroke-width": ".932", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91", - "fill": "#FFB594" - }, null), createVNode("path", { - "d": "M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103", - "fill": "#5C2552" - }, null), createVNode("path", { - "d": "M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "stroke": "#DB836E", - "stroke-width": "1.145", - "stroke-linecap": "round", - "stroke-linejoin": "round", - "d": "M100.843 77.099l1.701-.928-1.015-4.324.674-1.406" - }, null), createVNode("path", { - "d": "M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32", - "fill": "#552950" - }, null), createVNode("path", { - "d": "M91.132 86.786s5.269 4.957 12.679 2.327", - "stroke": "#DB836E", - "stroke-width": "1.145", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25", - "fill": "#DB836E" - }, null), createVNode("path", { - "d": "M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073", - "stroke": "#5C2552", - "stroke-width": "1.526", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254", - "stroke": "#DB836E", - "stroke-width": "1.145", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008", - "stroke": "#E4EBF7", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M66.508 86.763s-1.598 8.83-6.697 14.078", - "stroke": "#E4EBF7", - "stroke-width": "1.114", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M128.31 87.934s3.013 4.121 4.06 11.785", - "stroke": "#E4EBF7", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M64.09 84.816s-6.03 9.912-13.607 9.903", - "stroke": "#DB836E", - "stroke-width": ".795", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73", - "fill": "#FFC6A0" - }, null), createVNode("path", { - "d": "M130.532 85.488s4.588 5.757 11.619 6.214", - "stroke": "#DB836E", - "stroke-width": ".75", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M121.708 105.73s-.393 8.564-1.34 13.612", - "stroke": "#E4EBF7", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M115.784 161.512s-3.57-1.488-2.678-7.14", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z", - "fill": "#CBD1D1" - }, null), createVNode("path", { - "d": "M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078", - "fill": "#2B0849" - }, null), createVNode("path", { - "d": "M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15", - "fill": "#A4AABA" - }, null), createVNode("path", { - "d": "M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954", - "fill": "#7BB2F9" - }, null), createVNode("path", { - "d": "M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M108.459 220.905s2.759-1.104 6.07-3.863", - "stroke": "#648BD8", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null), createVNode("path", { - "d": "M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806", - "fill": "#FFF" - }, null), createVNode("path", { - "d": "M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64", - "fill": "#192064" - }, null), createVNode("path", { - "d": "M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956", - "stroke": "#648BD8", - "stroke-width": "1.051", - "stroke-linecap": "round", - "stroke-linejoin": "round" - }, null)])]); -}; -var unauthorized_default = Unauthorized; - -// node_modules/ant-design-vue/es/result/style/index.js -var genBaseStyle14 = (token2) => { - const { - componentCls, - lineHeightHeading3, - iconCls, - padding, - paddingXL, - paddingXS, - paddingLG, - marginXS, - lineHeight - } = token2; - return { - // Result - [componentCls]: { - padding: `${paddingLG * 2}px ${paddingXL}px`, - // RTL - "&-rtl": { - direction: "rtl" - } - }, - // Exception Status image - [`${componentCls} ${componentCls}-image`]: { - width: token2.imageWidth, - height: token2.imageHeight, - margin: "auto" - }, - [`${componentCls} ${componentCls}-icon`]: { - marginBottom: paddingLG, - textAlign: "center", - [`& > ${iconCls}`]: { - fontSize: token2.resultIconFontSize - } - }, - [`${componentCls} ${componentCls}-title`]: { - color: token2.colorTextHeading, - fontSize: token2.resultTitleFontSize, - lineHeight: lineHeightHeading3, - marginBlock: marginXS, - textAlign: "center" - }, - [`${componentCls} ${componentCls}-subtitle`]: { - color: token2.colorTextDescription, - fontSize: token2.resultSubtitleFontSize, - lineHeight, - textAlign: "center" - }, - [`${componentCls} ${componentCls}-content`]: { - marginTop: paddingLG, - padding: `${paddingLG}px ${padding * 2.5}px`, - backgroundColor: token2.colorFillAlter - }, - [`${componentCls} ${componentCls}-extra`]: { - margin: token2.resultExtraMargin, - textAlign: "center", - "& > *": { - marginInlineEnd: paddingXS, - "&:last-child": { - marginInlineEnd: 0 - } - } - } - }; -}; -var genStatusIconStyle = (token2) => { - const { - componentCls, - iconCls - } = token2; - return { - [`${componentCls}-success ${componentCls}-icon > ${iconCls}`]: { - color: token2.resultSuccessIconColor - }, - [`${componentCls}-error ${componentCls}-icon > ${iconCls}`]: { - color: token2.resultErrorIconColor - }, - [`${componentCls}-info ${componentCls}-icon > ${iconCls}`]: { - color: token2.resultInfoIconColor - }, - [`${componentCls}-warning ${componentCls}-icon > ${iconCls}`]: { - color: token2.resultWarningIconColor - } - }; -}; -var genResultStyle = (token2) => [genBaseStyle14(token2), genStatusIconStyle(token2)]; -var getStyle4 = (token2) => genResultStyle(token2); -var style_default50 = genComponentStyleHook("Result", (token2) => { - const { - paddingLG, - fontSizeHeading3 - } = token2; - const resultSubtitleFontSize = token2.fontSize; - const resultExtraMargin = `${paddingLG}px 0 0 0`; - const resultInfoIconColor = token2.colorInfo; - const resultErrorIconColor = token2.colorError; - const resultSuccessIconColor = token2.colorSuccess; - const resultWarningIconColor = token2.colorWarning; - const resultToken = merge(token2, { - resultTitleFontSize: fontSizeHeading3, - resultSubtitleFontSize, - resultIconFontSize: fontSizeHeading3 * 3, - resultExtraMargin, - resultInfoIconColor, - resultErrorIconColor, - resultSuccessIconColor, - resultWarningIconColor - }); - return [getStyle4(resultToken)]; -}, { - imageWidth: 250, - imageHeight: 295 -}); - -// node_modules/ant-design-vue/es/result/index.js -var IconMap = { - success: CheckCircleFilled_default, - error: CloseCircleFilled_default, - info: ExclamationCircleFilled_default, - warning: WarningFilled_default -}; -var ExceptionMap = { - "404": noFound_default, - "500": serverError_default, - "403": unauthorized_default -}; -var ExceptionStatus = Object.keys(ExceptionMap); -var resultProps = () => ({ - prefixCls: String, - icon: vue_types_default.any, - status: { - type: [Number, String], - default: "info" - }, - title: vue_types_default.any, - subTitle: vue_types_default.any, - extra: vue_types_default.any -}); -var renderIcon = (prefixCls, _ref) => { - let { - status, - icon - } = _ref; - if (ExceptionStatus.includes(`${status}`)) { - const SVGComponent = ExceptionMap[status]; - return createVNode("div", { - "class": `${prefixCls}-icon ${prefixCls}-image` - }, [createVNode(SVGComponent, null, null)]); - } - const IconComponent = IconMap[status]; - const iconNode = icon || createVNode(IconComponent, null, null); - return createVNode("div", { - "class": `${prefixCls}-icon` - }, [iconNode]); -}; -var renderExtra = (prefixCls, extra) => extra && createVNode("div", { - "class": `${prefixCls}-extra` -}, [extra]); -var Result = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AResult", - inheritAttrs: false, - props: resultProps(), - slots: Object, - setup(props4, _ref2) { - let { - slots, - attrs - } = _ref2; - const { - prefixCls, - direction - } = useConfigInject_default("result", props4); - const [wrapSSR, hashId] = style_default50(prefixCls); - const className = computed(() => classNames_default(prefixCls.value, hashId.value, `${prefixCls.value}-${props4.status}`, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - })); - return () => { - var _a2, _b, _c, _d, _e, _f, _g, _h; - const title = (_a2 = props4.title) !== null && _a2 !== void 0 ? _a2 : (_b = slots.title) === null || _b === void 0 ? void 0 : _b.call(slots); - const subTitle = (_c = props4.subTitle) !== null && _c !== void 0 ? _c : (_d = slots.subTitle) === null || _d === void 0 ? void 0 : _d.call(slots); - const icon = (_e = props4.icon) !== null && _e !== void 0 ? _e : (_f = slots.icon) === null || _f === void 0 ? void 0 : _f.call(slots); - const extra = (_g = props4.extra) !== null && _g !== void 0 ? _g : (_h = slots.extra) === null || _h === void 0 ? void 0 : _h.call(slots); - const pre = prefixCls.value; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": [className.value, attrs.class] - }), [renderIcon(pre, { - status: props4.status, - icon - }), createVNode("div", { - "class": `${pre}-title` - }, [title]), subTitle && createVNode("div", { - "class": `${pre}-subtitle` - }, [subTitle]), renderExtra(pre, extra), slots.default && createVNode("div", { - "class": `${pre}-content` - }, [slots.default()])])); - }; - } -}); -Result.PRESENTED_IMAGE_403 = ExceptionMap[403]; -Result.PRESENTED_IMAGE_404 = ExceptionMap[404]; -Result.PRESENTED_IMAGE_500 = ExceptionMap[500]; -Result.install = function(app) { - app.component(Result.name, Result); - return app; -}; -var result_default2 = Result; - -// node_modules/ant-design-vue/es/row/index.js -var row_default = withInstall(Row_default); - -// node_modules/ant-design-vue/es/vc-slider/src/common/Track.js -var Track2 = (_2, _ref) => { - let { - attrs - } = _ref; - const { - included, - vertical, - style, - class: className - } = attrs; - let { - length: length2, - offset: offset4, - reverse: reverse2 - } = attrs; - if (length2 < 0) { - reverse2 = !reverse2; - length2 = Math.abs(length2); - offset4 = 100 - offset4; - } - const positonStyle = vertical ? { - [reverse2 ? "top" : "bottom"]: `${offset4}%`, - [reverse2 ? "bottom" : "top"]: "auto", - height: `${length2}%` - } : { - [reverse2 ? "right" : "left"]: `${offset4}%`, - [reverse2 ? "left" : "right"]: "auto", - width: `${length2}%` - }; - const elStyle = _extends(_extends({}, style), positonStyle); - return included ? createVNode("div", { - "class": className, - "style": elStyle - }, null) : null; -}; -Track2.inheritAttrs = false; -var Track_default = Track2; - -// node_modules/ant-design-vue/es/vc-slider/src/common/Steps.js -var calcPoints = (_vertical, marks, dots, step, min2, max2) => { - warning_default2(dots ? step > 0 : true, "Slider", "`Slider[step]` should be a positive number in order to make Slider[dots] work."); - const points = Object.keys(marks).map(parseFloat).sort((a2, b2) => a2 - b2); - if (dots && step) { - for (let i3 = min2; i3 <= max2; i3 += step) { - if (points.indexOf(i3) === -1) { - points.push(i3); - } - } - } - return points; -}; -var Steps = (_2, _ref) => { - let { - attrs - } = _ref; - const { - prefixCls, - vertical, - reverse: reverse2, - marks, - dots, - step, - included, - lowerBound, - upperBound, - max: max2, - min: min2, - dotStyle, - activeDotStyle - } = attrs; - const range4 = max2 - min2; - const elements = calcPoints(vertical, marks, dots, step, min2, max2).map((point) => { - const offset4 = `${Math.abs(point - min2) / range4 * 100}%`; - const isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound; - let style = vertical ? _extends(_extends({}, dotStyle), { - [reverse2 ? "top" : "bottom"]: offset4 - }) : _extends(_extends({}, dotStyle), { - [reverse2 ? "right" : "left"]: offset4 - }); - if (isActived) { - style = _extends(_extends({}, style), activeDotStyle); - } - const pointClassName = classNames_default({ - [`${prefixCls}-dot`]: true, - [`${prefixCls}-dot-active`]: isActived, - [`${prefixCls}-dot-reverse`]: reverse2 - }); - return createVNode("span", { - "class": pointClassName, - "style": style, - "key": point - }, null); - }); - return createVNode("div", { - "class": `${prefixCls}-step` - }, [elements]); -}; -Steps.inheritAttrs = false; -var Steps_default2 = Steps; - -// node_modules/ant-design-vue/es/vc-slider/src/common/Marks.js -var Marks = (_2, _ref) => { - let { - attrs, - slots - } = _ref; - const { - class: className, - vertical, - reverse: reverse2, - marks, - included, - upperBound, - lowerBound, - max: max2, - min: min2, - onClickLabel - } = attrs; - const marksKeys = Object.keys(marks); - const customMark = slots.mark; - const range4 = max2 - min2; - const elements = marksKeys.map(parseFloat).sort((a2, b2) => a2 - b2).map((point) => { - const markPoint = typeof marks[point] === "function" ? marks[point]() : marks[point]; - const markPointIsObject = typeof markPoint === "object" && !isValidElement(markPoint); - let markLabel = markPointIsObject ? markPoint.label : markPoint; - if (!markLabel && markLabel !== 0) { - return null; - } - if (customMark) { - markLabel = customMark({ - point, - label: markLabel - }); - } - const isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound; - const markClassName = classNames_default({ - [`${className}-text`]: true, - [`${className}-text-active`]: isActive - }); - const bottomStyle = { - marginBottom: "-50%", - [reverse2 ? "top" : "bottom"]: `${(point - min2) / range4 * 100}%` - }; - const leftStyle = { - transform: `translateX(${reverse2 ? `50%` : `-50%`})`, - msTransform: `translateX(${reverse2 ? `50%` : `-50%`})`, - [reverse2 ? "right" : "left"]: `${(point - min2) / range4 * 100}%` - }; - const style = vertical ? bottomStyle : leftStyle; - const markStyle = markPointIsObject ? _extends(_extends({}, style), markPoint.style) : style; - const touchEvents = { - [supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"]: (e3) => onClickLabel(e3, point) - }; - return createVNode("span", _objectSpread2({ - "class": markClassName, - "style": markStyle, - "key": point, - "onMousedown": (e3) => onClickLabel(e3, point) - }, touchEvents), [markLabel]); - }); - return createVNode("div", { - "class": className - }, [elements]); -}; -Marks.inheritAttrs = false; -var Marks_default = Marks; - -// node_modules/ant-design-vue/es/vc-slider/src/Handle.js -var Handle_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Handle", - inheritAttrs: false, - props: { - prefixCls: String, - vertical: { - type: Boolean, - default: void 0 - }, - offset: Number, - disabled: { - type: Boolean, - default: void 0 - }, - min: Number, - max: Number, - value: Number, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - reverse: { - type: Boolean, - default: void 0 - }, - ariaLabel: String, - ariaLabelledBy: String, - ariaValueTextFormatter: Function, - onMouseenter: { - type: Function - }, - onMouseleave: { - type: Function - }, - onMousedown: { - type: Function - } - }, - setup(props4, _ref) { - let { - attrs, - emit, - expose - } = _ref; - const clickFocused = shallowRef(false); - const handle = shallowRef(); - const handleMouseUp = () => { - if (document.activeElement === handle.value) { - clickFocused.value = true; - } - }; - const handleBlur = (e3) => { - clickFocused.value = false; - emit("blur", e3); - }; - const handleKeyDown = () => { - clickFocused.value = false; - }; - const focus = () => { - var _a2; - (_a2 = handle.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = handle.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - const clickFocus = () => { - clickFocused.value = true; - focus(); - }; - const handleMousedown = (e3) => { - e3.preventDefault(); - focus(); - emit("mousedown", e3); - }; - expose({ - focus, - blur, - clickFocus, - ref: handle - }); - let onMouseUpListener = null; - onMounted(() => { - onMouseUpListener = addEventListenerWrap(document, "mouseup", handleMouseUp); - }); - onBeforeUnmount(() => { - onMouseUpListener === null || onMouseUpListener === void 0 ? void 0 : onMouseUpListener.remove(); - }); - const positionStyle = computed(() => { - const { - vertical, - offset: offset4, - reverse: reverse2 - } = props4; - return vertical ? { - [reverse2 ? "top" : "bottom"]: `${offset4}%`, - [reverse2 ? "bottom" : "top"]: "auto", - transform: reverse2 ? null : `translateY(+50%)` - } : { - [reverse2 ? "right" : "left"]: `${offset4}%`, - [reverse2 ? "left" : "right"]: "auto", - transform: `translateX(${reverse2 ? "+" : "-"}50%)` - }; - }); - return () => { - const { - prefixCls, - disabled, - min: min2, - max: max2, - value, - tabindex, - ariaLabel, - ariaLabelledBy, - ariaValueTextFormatter, - onMouseenter, - onMouseleave - } = props4; - const className = classNames_default(attrs.class, { - [`${prefixCls}-handle-click-focused`]: clickFocused.value - }); - const ariaProps = { - "aria-valuemin": min2, - "aria-valuemax": max2, - "aria-valuenow": value, - "aria-disabled": !!disabled - }; - const elStyle = [attrs.style, positionStyle.value]; - let mergedTabIndex = tabindex || 0; - if (disabled || tabindex === null) { - mergedTabIndex = null; - } - let ariaValueText; - if (ariaValueTextFormatter) { - ariaValueText = ariaValueTextFormatter(value); - } - const handleProps = _extends(_extends(_extends(_extends({}, attrs), { - role: "slider", - tabindex: mergedTabIndex - }), ariaProps), { - class: className, - onBlur: handleBlur, - onKeydown: handleKeyDown, - onMousedown: handleMousedown, - onMouseenter, - onMouseleave, - ref: handle, - style: elStyle - }); - return createVNode("div", _objectSpread2(_objectSpread2({}, handleProps), {}, { - "aria-label": ariaLabel, - "aria-labelledby": ariaLabelledBy, - "aria-valuetext": ariaValueText - }), null); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-slider/src/utils.js -function isEventFromHandle(e3, handles) { - try { - return Object.keys(handles).some((key2) => e3.target === handles[key2].ref); - } catch (error) { - return false; - } -} -function isValueOutOfRange(value, _ref) { - let { - min: min2, - max: max2 - } = _ref; - return value < min2 || value > max2; -} -function isNotTouchEvent(e3) { - return e3.touches.length > 1 || e3.type.toLowerCase() === "touchend" && e3.touches.length > 0; -} -function getClosestPoint(val, _ref2) { - let { - marks, - step, - min: min2, - max: max2 - } = _ref2; - const points = Object.keys(marks).map(parseFloat); - if (step !== null) { - const baseNum = Math.pow(10, getPrecision(step)); - const maxSteps = Math.floor((max2 * baseNum - min2 * baseNum) / (step * baseNum)); - const steps = Math.min((val - min2) / step, maxSteps); - const closestStep = Math.round(steps) * step + min2; - points.push(closestStep); - } - const diffs = points.map((point) => Math.abs(val - point)); - return points[diffs.indexOf(Math.min(...diffs))]; -} -function getPrecision(step) { - const stepString = step.toString(); - let precision = 0; - if (stepString.indexOf(".") >= 0) { - precision = stepString.length - stepString.indexOf(".") - 1; - } - return precision; -} -function getMousePosition(vertical, e3) { - let zoom = 1; - if (window.visualViewport) { - zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2); - } - return (vertical ? e3.clientY : e3.pageX) / zoom; -} -function getTouchPosition(vertical, e3) { - let zoom = 1; - if (window.visualViewport) { - zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2); - } - return (vertical ? e3.touches[0].clientY : e3.touches[0].pageX) / zoom; -} -function getHandleCenterPosition(vertical, handle) { - const coords = handle.getBoundingClientRect(); - return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5; -} -function ensureValueInRange(val, _ref3) { - let { - max: max2, - min: min2 - } = _ref3; - if (val <= min2) { - return min2; - } - if (val >= max2) { - return max2; - } - return val; -} -function ensureValuePrecision(val, props4) { - const { - step - } = props4; - const closestPoint = isFinite(getClosestPoint(val, props4)) ? getClosestPoint(val, props4) : 0; - return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step))); -} -function pauseEvent(e3) { - e3.stopPropagation(); - e3.preventDefault(); -} -function calculateNextValue(func, value, props4) { - const operations = { - increase: (a2, b2) => a2 + b2, - decrease: (a2, b2) => a2 - b2 - }; - const indexToGet = operations[func](Object.keys(props4.marks).indexOf(JSON.stringify(value)), 1); - const keyToGet = Object.keys(props4.marks)[indexToGet]; - if (props4.step) { - return operations[func](value, props4.step); - } - if (!!Object.keys(props4.marks).length && !!props4.marks[keyToGet]) { - return props4.marks[keyToGet]; - } - return value; -} -function getKeyboardValueMutator(e3, vertical, reverse2) { - const increase = "increase"; - const decrease = "decrease"; - let method5 = increase; - switch (e3.keyCode) { - case KeyCode_default.UP: - method5 = vertical && reverse2 ? decrease : increase; - break; - case KeyCode_default.RIGHT: - method5 = !vertical && reverse2 ? decrease : increase; - break; - case KeyCode_default.DOWN: - method5 = vertical && reverse2 ? increase : decrease; - break; - case KeyCode_default.LEFT: - method5 = !vertical && reverse2 ? increase : decrease; - break; - case KeyCode_default.END: - return (_value, props4) => props4.max; - case KeyCode_default.HOME: - return (_value, props4) => props4.min; - case KeyCode_default.PAGE_UP: - return (value, props4) => value + props4.step * 2; - case KeyCode_default.PAGE_DOWN: - return (value, props4) => value - props4.step * 2; - default: - return void 0; - } - return (value, props4) => calculateNextValue(method5, value, props4); -} - -// node_modules/ant-design-vue/es/vc-slider/src/common/createSlider.js -var __rest60 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function noop11() { -} -function createSlider(Component) { - const propTypes2 = { - id: String, - min: Number, - max: Number, - step: Number, - marks: vue_types_default.object, - included: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - disabled: { - type: Boolean, - default: void 0 - }, - handle: Function, - dots: { - type: Boolean, - default: void 0 - }, - vertical: { - type: Boolean, - default: void 0 - }, - reverse: { - type: Boolean, - default: void 0 - }, - minimumTrackStyle: vue_types_default.object, - maximumTrackStyle: vue_types_default.object, - handleStyle: vue_types_default.oneOfType([vue_types_default.object, vue_types_default.arrayOf(vue_types_default.object)]), - trackStyle: vue_types_default.oneOfType([vue_types_default.object, vue_types_default.arrayOf(vue_types_default.object)]), - railStyle: vue_types_default.object, - dotStyle: vue_types_default.object, - activeDotStyle: vue_types_default.object, - autofocus: { - type: Boolean, - default: void 0 - }, - draggableTrack: { - type: Boolean, - default: void 0 - } - }; - return defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "CreateSlider", - mixins: [BaseMixin_default, Component], - inheritAttrs: false, - props: initDefaultProps_default(propTypes2, { - prefixCls: "rc-slider", - min: 0, - max: 100, - step: 1, - marks: {}, - included: true, - disabled: false, - dots: false, - vertical: false, - reverse: false, - trackStyle: [{}], - handleStyle: [{}], - railStyle: {}, - dotStyle: {}, - activeDotStyle: {} - }), - emits: ["change", "blur", "focus"], - data() { - const { - step, - max: max2, - min: min2 - } = this; - const isPointDiffEven = isFinite(max2 - min2) ? (max2 - min2) % step === 0 : true; - warning_default2(step && Math.floor(step) === step ? isPointDiffEven : true, `Slider[max] - Slider[min] (${max2 - min2}) should be a multiple of Slider[step] (${step})`); - this.handlesRefs = {}; - return {}; - }, - mounted() { - this.$nextTick(() => { - this.document = this.sliderRef && this.sliderRef.ownerDocument; - const { - autofocus, - disabled - } = this; - if (autofocus && !disabled) { - this.focus(); - } - }); - }, - beforeUnmount() { - this.$nextTick(() => { - this.removeDocumentEvents(); - }); - }, - methods: { - defaultHandle(_a2) { - var { - index: index3, - directives, - className, - style - } = _a2, restProps = __rest60(_a2, ["index", "directives", "className", "style"]); - delete restProps.dragging; - if (restProps.value === null) { - return null; - } - const handleProps = _extends(_extends({}, restProps), { - class: className, - style, - key: index3 - }); - return createVNode(Handle_default, handleProps, null); - }, - onDown(e3, position2) { - let p = position2; - const { - draggableTrack, - vertical: isVertical - } = this.$props; - const { - bounds - } = this.$data; - const value = draggableTrack && this.positionGetValue ? this.positionGetValue(p) || [] : []; - const inPoint = isEventFromHandle(e3, this.handlesRefs); - this.dragTrack = draggableTrack && bounds.length >= 2 && !inPoint && !value.map((n3, i3) => { - const v2 = !i3 ? n3 >= bounds[i3] : true; - return i3 === value.length - 1 ? n3 <= bounds[i3] : v2; - }).some((c2) => !c2); - if (this.dragTrack) { - this.dragOffset = p; - this.startBounds = [...bounds]; - } else { - if (!inPoint) { - this.dragOffset = 0; - } else { - const handlePosition = getHandleCenterPosition(isVertical, e3.target); - this.dragOffset = p - handlePosition; - p = handlePosition; - } - this.onStart(p); - } - }, - onMouseDown(e3) { - if (e3.button !== 0) { - return; - } - this.removeDocumentEvents(); - const isVertical = this.$props.vertical; - const position2 = getMousePosition(isVertical, e3); - this.onDown(e3, position2); - this.addDocumentMouseEvents(); - }, - onTouchStart(e3) { - if (isNotTouchEvent(e3)) return; - const isVertical = this.vertical; - const position2 = getTouchPosition(isVertical, e3); - this.onDown(e3, position2); - this.addDocumentTouchEvents(); - pauseEvent(e3); - }, - onFocus(e3) { - const { - vertical - } = this; - if (isEventFromHandle(e3, this.handlesRefs) && !this.dragTrack) { - const handlePosition = getHandleCenterPosition(vertical, e3.target); - this.dragOffset = 0; - this.onStart(handlePosition); - pauseEvent(e3); - this.$emit("focus", e3); - } - }, - onBlur(e3) { - if (!this.dragTrack) { - this.onEnd(); - } - this.$emit("blur", e3); - }, - onMouseUp() { - if (this.handlesRefs[this.prevMovedHandleIndex]) { - this.handlesRefs[this.prevMovedHandleIndex].clickFocus(); - } - }, - onMouseMove(e3) { - if (!this.sliderRef) { - this.onEnd(); - return; - } - const position2 = getMousePosition(this.vertical, e3); - this.onMove(e3, position2 - this.dragOffset, this.dragTrack, this.startBounds); - }, - onTouchMove(e3) { - if (isNotTouchEvent(e3) || !this.sliderRef) { - this.onEnd(); - return; - } - const position2 = getTouchPosition(this.vertical, e3); - this.onMove(e3, position2 - this.dragOffset, this.dragTrack, this.startBounds); - }, - onKeyDown(e3) { - if (this.sliderRef && isEventFromHandle(e3, this.handlesRefs)) { - this.onKeyboard(e3); - } - }, - onClickMarkLabel(e3, value) { - e3.stopPropagation(); - this.onChange({ - sValue: value - }); - this.setState({ - sValue: value - }, () => this.onEnd(true)); - }, - getSliderStart() { - const slider = this.sliderRef; - const { - vertical, - reverse: reverse2 - } = this; - const rect = slider.getBoundingClientRect(); - if (vertical) { - return reverse2 ? rect.bottom : rect.top; - } - return window.pageXOffset + (reverse2 ? rect.right : rect.left); - }, - getSliderLength() { - const slider = this.sliderRef; - if (!slider) { - return 0; - } - const coords = slider.getBoundingClientRect(); - return this.vertical ? coords.height : coords.width; - }, - addDocumentTouchEvents() { - this.onTouchMoveListener = addEventListenerWrap(this.document, "touchmove", this.onTouchMove); - this.onTouchUpListener = addEventListenerWrap(this.document, "touchend", this.onEnd); - }, - addDocumentMouseEvents() { - this.onMouseMoveListener = addEventListenerWrap(this.document, "mousemove", this.onMouseMove); - this.onMouseUpListener = addEventListenerWrap(this.document, "mouseup", this.onEnd); - }, - removeDocumentEvents() { - this.onTouchMoveListener && this.onTouchMoveListener.remove(); - this.onTouchUpListener && this.onTouchUpListener.remove(); - this.onMouseMoveListener && this.onMouseMoveListener.remove(); - this.onMouseUpListener && this.onMouseUpListener.remove(); - }, - focus() { - var _a2; - if (this.$props.disabled) { - return; - } - (_a2 = this.handlesRefs[0]) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - if (this.$props.disabled) { - return; - } - Object.keys(this.handlesRefs).forEach((key2) => { - var _a2, _b; - (_b = (_a2 = this.handlesRefs[key2]) === null || _a2 === void 0 ? void 0 : _a2.blur) === null || _b === void 0 ? void 0 : _b.call(_a2); - }); - }, - calcValue(offset4) { - const { - vertical, - min: min2, - max: max2 - } = this; - const ratio = Math.abs(Math.max(offset4, 0) / this.getSliderLength()); - const value = vertical ? (1 - ratio) * (max2 - min2) + min2 : ratio * (max2 - min2) + min2; - return value; - }, - calcValueByPos(position2) { - const sign = this.reverse ? -1 : 1; - const pixelOffset = sign * (position2 - this.getSliderStart()); - const nextValue = this.trimAlignValue(this.calcValue(pixelOffset)); - return nextValue; - }, - calcOffset(value) { - const { - min: min2, - max: max2 - } = this; - const ratio = (value - min2) / (max2 - min2); - return Math.max(0, ratio * 100); - }, - saveSlider(slider) { - this.sliderRef = slider; - }, - saveHandle(index3, handle) { - this.handlesRefs[index3] = handle; - } - }, - render() { - const { - prefixCls, - marks, - dots, - step, - included, - disabled, - vertical, - reverse: reverse2, - min: min2, - max: max2, - maximumTrackStyle, - railStyle, - dotStyle, - activeDotStyle, - id - } = this; - const { - class: className, - style - } = this.$attrs; - const { - tracks, - handles - } = this.renderSlider(); - const sliderClassName = classNames_default(prefixCls, className, { - [`${prefixCls}-with-marks`]: Object.keys(marks).length, - [`${prefixCls}-disabled`]: disabled, - [`${prefixCls}-vertical`]: vertical, - [`${prefixCls}-horizontal`]: !vertical - }); - const markProps = { - vertical, - marks, - included, - lowerBound: this.getLowerBound(), - upperBound: this.getUpperBound(), - max: max2, - min: min2, - reverse: reverse2, - class: `${prefixCls}-mark`, - onClickLabel: disabled ? noop11 : this.onClickMarkLabel - }; - const touchEvents = { - [supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"]: disabled ? noop11 : this.onTouchStart - }; - return createVNode("div", _objectSpread2(_objectSpread2({ - "id": id, - "ref": this.saveSlider, - "tabindex": "-1", - "class": sliderClassName - }, touchEvents), {}, { - "onMousedown": disabled ? noop11 : this.onMouseDown, - "onMouseup": disabled ? noop11 : this.onMouseUp, - "onKeydown": disabled ? noop11 : this.onKeyDown, - "onFocus": disabled ? noop11 : this.onFocus, - "onBlur": disabled ? noop11 : this.onBlur, - "style": style - }), [createVNode("div", { - "class": `${prefixCls}-rail`, - "style": _extends(_extends({}, maximumTrackStyle), railStyle) - }, null), tracks, createVNode(Steps_default2, { - "prefixCls": prefixCls, - "vertical": vertical, - "reverse": reverse2, - "marks": marks, - "dots": dots, - "step": step, - "included": included, - "lowerBound": this.getLowerBound(), - "upperBound": this.getUpperBound(), - "max": max2, - "min": min2, - "dotStyle": dotStyle, - "activeDotStyle": activeDotStyle - }, null), handles, createVNode(Marks_default, markProps, { - mark: this.$slots.mark - }), getSlot(this)]); - } - }); -} - -// node_modules/ant-design-vue/es/vc-slider/src/Slider.js -var Slider = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Slider", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: { - defaultValue: Number, - value: Number, - disabled: { - type: Boolean, - default: void 0 - }, - autofocus: { - type: Boolean, - default: void 0 - }, - tabindex: vue_types_default.oneOfType([vue_types_default.number, vue_types_default.string]), - reverse: { - type: Boolean, - default: void 0 - }, - min: Number, - max: Number, - ariaLabelForHandle: String, - ariaLabelledByForHandle: String, - ariaValueTextFormatterForHandle: String, - startPoint: Number - }, - emits: ["beforeChange", "afterChange", "change"], - data() { - const defaultValue = this.defaultValue !== void 0 ? this.defaultValue : this.min; - const value = this.value !== void 0 ? this.value : defaultValue; - return { - sValue: this.trimAlignValue(value), - dragging: false - }; - }, - watch: { - value: { - handler(val) { - this.setChangeValue(val); - }, - deep: true - }, - min() { - const { - sValue - } = this; - this.setChangeValue(sValue); - }, - max() { - const { - sValue - } = this; - this.setChangeValue(sValue); - } - }, - methods: { - setChangeValue(value) { - const newValue = value !== void 0 ? value : this.sValue; - const nextValue = this.trimAlignValue(newValue, this.$props); - if (nextValue === this.sValue) return; - this.setState({ - sValue: nextValue - }); - if (isValueOutOfRange(newValue, this.$props)) { - this.$emit("change", nextValue); - } - }, - onChange(state) { - const isNotControlled = !hasProp(this, "value"); - const nextState = state.sValue > this.max ? _extends(_extends({}, state), { - sValue: this.max - }) : state; - if (isNotControlled) { - this.setState(nextState); - } - const changedValue = nextState.sValue; - this.$emit("change", changedValue); - }, - onStart(position2) { - this.setState({ - dragging: true - }); - const { - sValue - } = this; - this.$emit("beforeChange", sValue); - const value = this.calcValueByPos(position2); - this.startValue = value; - this.startPosition = position2; - if (value === sValue) return; - this.prevMovedHandleIndex = 0; - this.onChange({ - sValue: value - }); - }, - onEnd(force) { - const { - dragging - } = this; - this.removeDocumentEvents(); - if (dragging || force) { - this.$emit("afterChange", this.sValue); - } - this.setState({ - dragging: false - }); - }, - onMove(e3, position2) { - pauseEvent(e3); - const { - sValue - } = this; - const value = this.calcValueByPos(position2); - if (value === sValue) return; - this.onChange({ - sValue: value - }); - }, - onKeyboard(e3) { - const { - reverse: reverse2, - vertical - } = this.$props; - const valueMutator = getKeyboardValueMutator(e3, vertical, reverse2); - if (valueMutator) { - pauseEvent(e3); - const { - sValue - } = this; - const mutatedValue = valueMutator(sValue, this.$props); - const value = this.trimAlignValue(mutatedValue); - if (value === sValue) return; - this.onChange({ - sValue: value - }); - this.$emit("afterChange", value); - this.onEnd(); - } - }, - getLowerBound() { - const minPoint = this.$props.startPoint || this.$props.min; - return this.$data.sValue > minPoint ? minPoint : this.$data.sValue; - }, - getUpperBound() { - if (this.$data.sValue < this.$props.startPoint) { - return this.$props.startPoint; - } - return this.$data.sValue; - }, - trimAlignValue(v2) { - let nextProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - if (v2 === null) { - return null; - } - const mergedProps = _extends(_extends({}, this.$props), nextProps); - const val = ensureValueInRange(v2, mergedProps); - return ensureValuePrecision(val, mergedProps); - }, - getTrack(_ref) { - let { - prefixCls, - reverse: reverse2, - vertical, - included, - minimumTrackStyle, - mergedTrackStyle, - length: length2, - offset: offset4 - } = _ref; - return createVNode(Track_default, { - "class": `${prefixCls}-track`, - "vertical": vertical, - "included": included, - "offset": offset4, - "reverse": reverse2, - "length": length2, - "style": _extends(_extends({}, minimumTrackStyle), mergedTrackStyle) - }, null); - }, - renderSlider() { - const { - prefixCls, - vertical, - included, - disabled, - minimumTrackStyle, - trackStyle, - handleStyle, - tabindex, - ariaLabelForHandle, - ariaLabelledByForHandle, - ariaValueTextFormatterForHandle, - min: min2, - max: max2, - startPoint, - reverse: reverse2, - handle, - defaultHandle - } = this; - const handleGenerator = handle || defaultHandle; - const { - sValue, - dragging - } = this; - const offset4 = this.calcOffset(sValue); - const handles = handleGenerator({ - class: `${prefixCls}-handle`, - prefixCls, - vertical, - offset: offset4, - value: sValue, - dragging, - disabled, - min: min2, - max: max2, - reverse: reverse2, - index: 0, - tabindex, - ariaLabel: ariaLabelForHandle, - ariaLabelledBy: ariaLabelledByForHandle, - ariaValueTextFormatter: ariaValueTextFormatterForHandle, - style: handleStyle[0] || handleStyle, - ref: (h3) => this.saveHandle(0, h3), - onFocus: this.onFocus, - onBlur: this.onBlur - }); - const trackOffset = startPoint !== void 0 ? this.calcOffset(startPoint) : 0; - const mergedTrackStyle = trackStyle[0] || trackStyle; - return { - tracks: this.getTrack({ - prefixCls, - reverse: reverse2, - vertical, - included, - offset: trackOffset, - minimumTrackStyle, - mergedTrackStyle, - length: offset4 - trackOffset - }), - handles - }; - } - } -}); -var Slider_default = createSlider(Slider); - -// node_modules/ant-design-vue/es/vc-slider/src/Range.js -var trimAlignValue = (_ref) => { - let { - value, - handle, - bounds, - props: props4 - } = _ref; - const { - allowCross, - pushable - } = props4; - const thershold = Number(pushable); - const valInRange = ensureValueInRange(value, props4); - let valNotConflict = valInRange; - if (!allowCross && handle != null && bounds !== void 0) { - if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) { - valNotConflict = bounds[handle - 1] + thershold; - } - if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) { - valNotConflict = bounds[handle + 1] - thershold; - } - } - return ensureValuePrecision(valNotConflict, props4); -}; -var rangeProps = { - defaultValue: vue_types_default.arrayOf(vue_types_default.number), - value: vue_types_default.arrayOf(vue_types_default.number), - count: Number, - pushable: withUndefined(vue_types_default.oneOfType([vue_types_default.looseBool, vue_types_default.number])), - allowCross: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - reverse: { - type: Boolean, - default: void 0 - }, - tabindex: vue_types_default.arrayOf(vue_types_default.number), - prefixCls: String, - min: Number, - max: Number, - autofocus: { - type: Boolean, - default: void 0 - }, - ariaLabelGroupForHandles: Array, - ariaLabelledByGroupForHandles: Array, - ariaValueTextFormatterGroupForHandles: Array, - draggableTrack: { - type: Boolean, - default: void 0 - } -}; -var Range = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Range", - mixins: [BaseMixin_default], - inheritAttrs: false, - props: initDefaultProps_default(rangeProps, { - count: 1, - allowCross: true, - pushable: false, - tabindex: [], - draggableTrack: false, - ariaLabelGroupForHandles: [], - ariaLabelledByGroupForHandles: [], - ariaValueTextFormatterGroupForHandles: [] - }), - emits: ["beforeChange", "afterChange", "change"], - displayName: "Range", - data() { - const { - count, - min: min2, - max: max2 - } = this; - const initialValue = Array(...Array(count + 1)).map(() => min2); - const defaultValue = hasProp(this, "defaultValue") ? this.defaultValue : initialValue; - let { - value - } = this; - if (value === void 0) { - value = defaultValue; - } - const bounds = value.map((v2, i3) => trimAlignValue({ - value: v2, - handle: i3, - props: this.$props - })); - const recent = bounds[0] === max2 ? 0 : bounds.length - 1; - return { - sHandle: null, - recent, - bounds - }; - }, - watch: { - value: { - handler(val) { - const { - bounds - } = this; - this.setChangeValue(val || bounds); - }, - deep: true - }, - min() { - const { - value - } = this; - this.setChangeValue(value || this.bounds); - }, - max() { - const { - value - } = this; - this.setChangeValue(value || this.bounds); - } - }, - methods: { - setChangeValue(value) { - const { - bounds - } = this; - let nextBounds = value.map((v2, i3) => trimAlignValue({ - value: v2, - handle: i3, - bounds, - props: this.$props - })); - if (bounds.length === nextBounds.length) { - if (nextBounds.every((v2, i3) => v2 === bounds[i3])) { - return null; - } - } else { - nextBounds = value.map((v2, i3) => trimAlignValue({ - value: v2, - handle: i3, - props: this.$props - })); - } - this.setState({ - bounds: nextBounds - }); - if (value.some((v2) => isValueOutOfRange(v2, this.$props))) { - const newValues = value.map((v2) => { - return ensureValueInRange(v2, this.$props); - }); - this.$emit("change", newValues); - } - }, - onChange(state) { - const isNotControlled = !hasProp(this, "value"); - if (isNotControlled) { - this.setState(state); - } else { - const controlledState = {}; - ["sHandle", "recent"].forEach((item) => { - if (state[item] !== void 0) { - controlledState[item] = state[item]; - } - }); - if (Object.keys(controlledState).length) { - this.setState(controlledState); - } - } - const data = _extends(_extends({}, this.$data), state); - const changedValue = data.bounds; - this.$emit("change", changedValue); - }, - positionGetValue(position2) { - const bounds = this.getValue(); - const value = this.calcValueByPos(position2); - const closestBound = this.getClosestBound(value); - const index3 = this.getBoundNeedMoving(value, closestBound); - const prevValue = bounds[index3]; - if (value === prevValue) return null; - const nextBounds = [...bounds]; - nextBounds[index3] = value; - return nextBounds; - }, - onStart(position2) { - const { - bounds - } = this; - this.$emit("beforeChange", bounds); - const value = this.calcValueByPos(position2); - this.startValue = value; - this.startPosition = position2; - const closestBound = this.getClosestBound(value); - this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound); - this.setState({ - sHandle: this.prevMovedHandleIndex, - recent: this.prevMovedHandleIndex - }); - const prevValue = bounds[this.prevMovedHandleIndex]; - if (value === prevValue) return; - const nextBounds = [...bounds]; - nextBounds[this.prevMovedHandleIndex] = value; - this.onChange({ - bounds: nextBounds - }); - }, - onEnd(force) { - const { - sHandle - } = this; - this.removeDocumentEvents(); - if (!sHandle) { - this.dragTrack = false; - } - if (sHandle !== null || force) { - this.$emit("afterChange", this.bounds); - } - this.setState({ - sHandle: null - }); - }, - onMove(e3, position2, dragTrack, startBounds) { - pauseEvent(e3); - const { - $data: state, - $props: props4 - } = this; - const maxValue = props4.max || 100; - const minValue = props4.min || 0; - if (dragTrack) { - let pos = props4.vertical ? -position2 : position2; - pos = props4.reverse ? -pos : pos; - const max2 = maxValue - Math.max(...startBounds); - const min2 = minValue - Math.min(...startBounds); - const ratio = Math.min(Math.max(pos / (this.getSliderLength() / 100), min2), max2); - const nextBounds = startBounds.map((v2) => Math.floor(Math.max(Math.min(v2 + ratio, maxValue), minValue))); - if (state.bounds.map((c2, i3) => c2 === nextBounds[i3]).some((c2) => !c2)) { - this.onChange({ - bounds: nextBounds - }); - } - return; - } - const { - bounds, - sHandle - } = this; - const value = this.calcValueByPos(position2); - const oldValue = bounds[sHandle]; - if (value === oldValue) return; - this.moveTo(value); - }, - onKeyboard(e3) { - const { - reverse: reverse2, - vertical - } = this.$props; - const valueMutator = getKeyboardValueMutator(e3, vertical, reverse2); - if (valueMutator) { - pauseEvent(e3); - const { - bounds, - sHandle - } = this; - const oldValue = bounds[sHandle === null ? this.recent : sHandle]; - const mutatedValue = valueMutator(oldValue, this.$props); - const value = trimAlignValue({ - value: mutatedValue, - handle: sHandle, - bounds, - props: this.$props - }); - if (value === oldValue) return; - const isFromKeyboardEvent = true; - this.moveTo(value, isFromKeyboardEvent); - } - }, - getClosestBound(value) { - const { - bounds - } = this; - let closestBound = 0; - for (let i3 = 1; i3 < bounds.length - 1; i3 += 1) { - if (value >= bounds[i3]) { - closestBound = i3; - } - } - if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) { - closestBound += 1; - } - return closestBound; - }, - getBoundNeedMoving(value, closestBound) { - const { - bounds, - recent - } = this; - let boundNeedMoving = closestBound; - const isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound]; - if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) { - boundNeedMoving = recent; - } - if (isAtTheSamePoint && value !== bounds[closestBound + 1]) { - boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1; - } - return boundNeedMoving; - }, - getLowerBound() { - return this.bounds[0]; - }, - getUpperBound() { - const { - bounds - } = this; - return bounds[bounds.length - 1]; - }, - /** - * Returns an array of possible slider points, taking into account both - * `marks` and `step`. The result is cached. - */ - getPoints() { - const { - marks, - step, - min: min2, - max: max2 - } = this; - const cache = this.internalPointsCache; - if (!cache || cache.marks !== marks || cache.step !== step) { - const pointsObject = _extends({}, marks); - if (step !== null) { - for (let point = min2; point <= max2; point += step) { - pointsObject[point] = point; - } - } - const points = Object.keys(pointsObject).map(parseFloat); - points.sort((a2, b2) => a2 - b2); - this.internalPointsCache = { - marks, - step, - points - }; - } - return this.internalPointsCache.points; - }, - moveTo(value, isFromKeyboardEvent) { - const nextBounds = [...this.bounds]; - const { - sHandle, - recent - } = this; - const handle = sHandle === null ? recent : sHandle; - nextBounds[handle] = value; - let nextHandle = handle; - if (this.$props.pushable !== false) { - this.pushSurroundingHandles(nextBounds, nextHandle); - } else if (this.$props.allowCross) { - nextBounds.sort((a2, b2) => a2 - b2); - nextHandle = nextBounds.indexOf(value); - } - this.onChange({ - recent: nextHandle, - sHandle: nextHandle, - bounds: nextBounds - }); - if (isFromKeyboardEvent) { - this.$emit("afterChange", nextBounds); - this.setState({}, () => { - this.handlesRefs[nextHandle].focus(); - }); - this.onEnd(); - } - }, - pushSurroundingHandles(bounds, handle) { - const value = bounds[handle]; - const { - pushable - } = this; - const threshold = Number(pushable); - let direction = 0; - if (bounds[handle + 1] - value < threshold) { - direction = 1; - } - if (value - bounds[handle - 1] < threshold) { - direction = -1; - } - if (direction === 0) { - return; - } - const nextHandle = handle + direction; - const diffToNext = direction * (bounds[nextHandle] - value); - if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) { - bounds[handle] = bounds[nextHandle] - direction * threshold; - } - }, - pushHandle(bounds, handle, direction, amount) { - const originalValue = bounds[handle]; - let currentValue = bounds[handle]; - while (direction * (currentValue - originalValue) < amount) { - if (!this.pushHandleOnePoint(bounds, handle, direction)) { - bounds[handle] = originalValue; - return false; - } - currentValue = bounds[handle]; - } - return true; - }, - pushHandleOnePoint(bounds, handle, direction) { - const points = this.getPoints(); - const pointIndex = points.indexOf(bounds[handle]); - const nextPointIndex = pointIndex + direction; - if (nextPointIndex >= points.length || nextPointIndex < 0) { - return false; - } - const nextHandle = handle + direction; - const nextValue = points[nextPointIndex]; - const { - pushable - } = this; - const threshold = Number(pushable); - const diffToNext = direction * (bounds[nextHandle] - nextValue); - if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) { - return false; - } - bounds[handle] = nextValue; - return true; - }, - trimAlignValue(value) { - const { - sHandle, - bounds - } = this; - return trimAlignValue({ - value, - handle: sHandle, - bounds, - props: this.$props - }); - }, - ensureValueNotConflict(handle, val, _ref2) { - let { - allowCross, - pushable: thershold - } = _ref2; - const state = this.$data || {}; - const { - bounds - } = state; - handle = handle === void 0 ? state.sHandle : handle; - thershold = Number(thershold); - if (!allowCross && handle != null && bounds !== void 0) { - if (handle > 0 && val <= bounds[handle - 1] + thershold) { - return bounds[handle - 1] + thershold; - } - if (handle < bounds.length - 1 && val >= bounds[handle + 1] - thershold) { - return bounds[handle + 1] - thershold; - } - } - return val; - }, - getTrack(_ref3) { - let { - bounds, - prefixCls, - reverse: reverse2, - vertical, - included, - offsets, - trackStyle - } = _ref3; - return bounds.slice(0, -1).map((_2, index3) => { - const i3 = index3 + 1; - const trackClassName = classNames_default({ - [`${prefixCls}-track`]: true, - [`${prefixCls}-track-${i3}`]: true - }); - return createVNode(Track_default, { - "class": trackClassName, - "vertical": vertical, - "reverse": reverse2, - "included": included, - "offset": offsets[i3 - 1], - "length": offsets[i3] - offsets[i3 - 1], - "style": trackStyle[index3], - "key": i3 - }, null); - }); - }, - renderSlider() { - const { - sHandle, - bounds, - prefixCls, - vertical, - included, - disabled, - min: min2, - max: max2, - reverse: reverse2, - handle, - defaultHandle, - trackStyle, - handleStyle, - tabindex, - ariaLabelGroupForHandles, - ariaLabelledByGroupForHandles, - ariaValueTextFormatterGroupForHandles - } = this; - const handleGenerator = handle || defaultHandle; - const offsets = bounds.map((v2) => this.calcOffset(v2)); - const handleClassName = `${prefixCls}-handle`; - const handles = bounds.map((v2, i3) => { - let mergedTabIndex = tabindex[i3] || 0; - if (disabled || tabindex[i3] === null) { - mergedTabIndex = null; - } - const dragging = sHandle === i3; - return handleGenerator({ - class: classNames_default({ - [handleClassName]: true, - [`${handleClassName}-${i3 + 1}`]: true, - [`${handleClassName}-dragging`]: dragging - }), - prefixCls, - vertical, - dragging, - offset: offsets[i3], - value: v2, - index: i3, - tabindex: mergedTabIndex, - min: min2, - max: max2, - reverse: reverse2, - disabled, - style: handleStyle[i3], - ref: (h3) => this.saveHandle(i3, h3), - onFocus: this.onFocus, - onBlur: this.onBlur, - ariaLabel: ariaLabelGroupForHandles[i3], - ariaLabelledBy: ariaLabelledByGroupForHandles[i3], - ariaValueTextFormatter: ariaValueTextFormatterGroupForHandles[i3] - }); - }); - return { - tracks: this.getTrack({ - bounds, - prefixCls, - reverse: reverse2, - vertical, - included, - offsets, - trackStyle - }), - handles - }; - } - } -}); -var Range_default = createSlider(Range); - -// node_modules/ant-design-vue/es/slider/SliderTooltip.js -var SliderTooltip_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "SliderTooltip", - inheritAttrs: false, - props: tooltipProps(), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const innerRef = ref(null); - const rafRef = ref(null); - function cancelKeepAlign() { - wrapperRaf.cancel(rafRef.value); - rafRef.value = null; - } - function keepAlign() { - rafRef.value = wrapperRaf(() => { - var _a2; - (_a2 = innerRef.value) === null || _a2 === void 0 ? void 0 : _a2.forcePopupAlign(); - rafRef.value = null; - }); - } - const align = () => { - cancelKeepAlign(); - if (props4.open) { - keepAlign(); - } - }; - watch([() => props4.open, () => props4.title], () => { - align(); - }, { - flush: "post", - immediate: true - }); - onActivated(() => { - align(); - }); - onBeforeUnmount(() => { - cancelKeepAlign(); - }); - return () => { - return createVNode(tooltip_default, _objectSpread2(_objectSpread2({ - "ref": innerRef - }, props4), attrs), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/slider/style/index.js -var genBaseStyle15 = (token2) => { - const { - componentCls, - controlSize, - dotSize, - marginFull, - marginPart, - colorFillContentHover - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - height: controlSize, - margin: `${marginPart}px ${marginFull}px`, - padding: 0, - cursor: "pointer", - touchAction: "none", - [`&-vertical`]: { - margin: `${marginFull}px ${marginPart}px` - }, - [`${componentCls}-rail`]: { - position: "absolute", - backgroundColor: token2.colorFillTertiary, - borderRadius: token2.borderRadiusXS, - transition: `background-color ${token2.motionDurationMid}` - }, - [`${componentCls}-track`]: { - position: "absolute", - backgroundColor: token2.colorPrimaryBorder, - borderRadius: token2.borderRadiusXS, - transition: `background-color ${token2.motionDurationMid}` - }, - "&:hover": { - [`${componentCls}-rail`]: { - backgroundColor: token2.colorFillSecondary - }, - [`${componentCls}-track`]: { - backgroundColor: token2.colorPrimaryBorderHover - }, - [`${componentCls}-dot`]: { - borderColor: colorFillContentHover - }, - [`${componentCls}-handle::after`]: { - boxShadow: `0 0 0 ${token2.handleLineWidth}px ${token2.colorPrimaryBorderHover}` - }, - [`${componentCls}-dot-active`]: { - borderColor: token2.colorPrimary - } - }, - [`${componentCls}-handle`]: { - position: "absolute", - width: token2.handleSize, - height: token2.handleSize, - outline: "none", - [`${componentCls}-dragging`]: { - zIndex: 1 - }, - // 扩大选区 - "&::before": { - content: '""', - position: "absolute", - insetInlineStart: -token2.handleLineWidth, - insetBlockStart: -token2.handleLineWidth, - width: token2.handleSize + token2.handleLineWidth * 2, - height: token2.handleSize + token2.handleLineWidth * 2, - backgroundColor: "transparent" - }, - "&::after": { - content: '""', - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - width: token2.handleSize, - height: token2.handleSize, - backgroundColor: token2.colorBgElevated, - boxShadow: `0 0 0 ${token2.handleLineWidth}px ${token2.colorPrimaryBorder}`, - borderRadius: "50%", - cursor: "pointer", - transition: ` - inset-inline-start ${token2.motionDurationMid}, - inset-block-start ${token2.motionDurationMid}, - width ${token2.motionDurationMid}, - height ${token2.motionDurationMid}, - box-shadow ${token2.motionDurationMid} - ` - }, - "&:hover, &:active, &:focus": { - "&::before": { - insetInlineStart: -((token2.handleSizeHover - token2.handleSize) / 2 + token2.handleLineWidthHover), - insetBlockStart: -((token2.handleSizeHover - token2.handleSize) / 2 + token2.handleLineWidthHover), - width: token2.handleSizeHover + token2.handleLineWidthHover * 2, - height: token2.handleSizeHover + token2.handleLineWidthHover * 2 - }, - "&::after": { - boxShadow: `0 0 0 ${token2.handleLineWidthHover}px ${token2.colorPrimary}`, - width: token2.handleSizeHover, - height: token2.handleSizeHover, - insetInlineStart: (token2.handleSize - token2.handleSizeHover) / 2, - insetBlockStart: (token2.handleSize - token2.handleSizeHover) / 2 - } - } - }, - [`${componentCls}-mark`]: { - position: "absolute", - fontSize: token2.fontSize - }, - [`${componentCls}-mark-text`]: { - position: "absolute", - display: "inline-block", - color: token2.colorTextDescription, - textAlign: "center", - wordBreak: "keep-all", - cursor: "pointer", - userSelect: "none", - "&-active": { - color: token2.colorText - } - }, - [`${componentCls}-step`]: { - position: "absolute", - background: "transparent", - pointerEvents: "none" - }, - [`${componentCls}-dot`]: { - position: "absolute", - width: dotSize, - height: dotSize, - backgroundColor: token2.colorBgElevated, - border: `${token2.handleLineWidth}px solid ${token2.colorBorderSecondary}`, - borderRadius: "50%", - cursor: "pointer", - transition: `border-color ${token2.motionDurationSlow}`, - "&-active": { - borderColor: token2.colorPrimaryBorder - } - }, - [`&${componentCls}-disabled`]: { - cursor: "not-allowed", - [`${componentCls}-rail`]: { - backgroundColor: `${token2.colorFillSecondary} !important` - }, - [`${componentCls}-track`]: { - backgroundColor: `${token2.colorTextDisabled} !important` - }, - [` - ${componentCls}-dot - `]: { - backgroundColor: token2.colorBgElevated, - borderColor: token2.colorTextDisabled, - boxShadow: "none", - cursor: "not-allowed" - }, - [`${componentCls}-handle::after`]: { - backgroundColor: token2.colorBgElevated, - cursor: "not-allowed", - width: token2.handleSize, - height: token2.handleSize, - boxShadow: `0 0 0 ${token2.handleLineWidth}px ${new TinyColor(token2.colorTextDisabled).onBackground(token2.colorBgContainer).toHexString()}`, - insetInlineStart: 0, - insetBlockStart: 0 - }, - [` - ${componentCls}-mark-text, - ${componentCls}-dot - `]: { - cursor: `not-allowed !important` - } - } - }) - }; -}; -var genDirectionStyle = (token2, horizontal) => { - const { - componentCls, - railSize, - handleSize, - dotSize - } = token2; - const railPadding = horizontal ? "paddingBlock" : "paddingInline"; - const full = horizontal ? "width" : "height"; - const part = horizontal ? "height" : "width"; - const handlePos = horizontal ? "insetBlockStart" : "insetInlineStart"; - const markInset = horizontal ? "top" : "insetInlineStart"; - return { - [railPadding]: railSize, - [part]: railSize * 3, - [`${componentCls}-rail`]: { - [full]: "100%", - [part]: railSize - }, - [`${componentCls}-track`]: { - [part]: railSize - }, - [`${componentCls}-handle`]: { - [handlePos]: (railSize * 3 - handleSize) / 2 - }, - [`${componentCls}-mark`]: { - // Reset all - insetInlineStart: 0, - top: 0, - [markInset]: handleSize, - [full]: "100%" - }, - [`${componentCls}-step`]: { - // Reset all - insetInlineStart: 0, - top: 0, - [markInset]: railSize, - [full]: "100%", - [part]: railSize - }, - [`${componentCls}-dot`]: { - position: "absolute", - [handlePos]: (railSize - dotSize) / 2 - } - }; -}; -var genHorizontalStyle2 = (token2) => { - const { - componentCls, - marginPartWithMark - } = token2; - return { - [`${componentCls}-horizontal`]: _extends(_extends({}, genDirectionStyle(token2, true)), { - [`&${componentCls}-with-marks`]: { - marginBottom: marginPartWithMark - } - }) - }; -}; -var genVerticalStyle2 = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-vertical`]: _extends(_extends({}, genDirectionStyle(token2, false)), { - height: "100%" - }) - }; -}; -var style_default51 = genComponentStyleHook("Slider", (token2) => { - const sliderToken = merge(token2, { - marginPart: (token2.controlHeight - token2.controlSize) / 2, - marginFull: token2.controlSize / 2, - marginPartWithMark: token2.controlHeightLG - token2.controlSize - }); - return [genBaseStyle15(sliderToken), genHorizontalStyle2(sliderToken), genVerticalStyle2(sliderToken)]; -}, (token2) => { - const increaseHandleWidth = 1; - const controlSize = token2.controlHeightLG / 4; - const controlSizeHover = token2.controlHeightSM / 2; - const handleLineWidth = token2.lineWidth + increaseHandleWidth; - const handleLineWidthHover = token2.lineWidth + increaseHandleWidth * 3; - return { - controlSize, - railSize: 4, - handleSize: controlSize, - handleSizeHover: controlSizeHover, - dotSize: 8, - handleLineWidth, - handleLineWidthHover - }; -}); - -// node_modules/ant-design-vue/es/slider/index.js -var __rest61 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var defaultTipFormatter = (value) => typeof value === "number" ? value.toString() : ""; -var sliderProps = () => ({ - id: String, - prefixCls: String, - tooltipPrefixCls: String, - range: someType([Boolean, Object]), - reverse: booleanType(), - min: Number, - max: Number, - step: someType([Object, Number]), - marks: objectType(), - dots: booleanType(), - value: someType([Array, Number]), - defaultValue: someType([Array, Number]), - included: booleanType(), - disabled: booleanType(), - vertical: booleanType(), - tipFormatter: someType([Function, Object], () => defaultTipFormatter), - tooltipOpen: booleanType(), - /** @deprecated `tooltipVisible` is deprecated. Please use `tooltipOpen` instead. */ - tooltipVisible: booleanType(), - tooltipPlacement: stringType(), - getTooltipPopupContainer: functionType(), - autofocus: booleanType(), - handleStyle: someType([Array, Object]), - trackStyle: someType([Array, Object]), - onChange: functionType(), - onAfterChange: functionType(), - onFocus: functionType(), - onBlur: functionType(), - "onUpdate:value": functionType() -}); -var Slider2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASlider", - inheritAttrs: false, - props: sliderProps(), - // emits: ['update:value', 'change', 'afterChange', 'blur'], - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots, - emit, - expose - } = _ref; - if (true) { - [["tooltipVisible", "tooltipOpen"]].forEach((_ref2) => { - let [deprecatedName, newName] = _ref2; - devWarning_default(props4.tooltipVisible === void 0, "Slider", `\`${deprecatedName}\` is deprecated, please use \`${newName}\` instead.`); - }); - } - const { - prefixCls, - rootPrefixCls, - direction, - getPopupContainer, - configProvider - } = useConfigInject_default("slider", props4); - const [wrapSSR, hashId] = style_default51(prefixCls); - const formItemContext = useInjectFormItemContext(); - const sliderRef = ref(); - const visibles = ref({}); - const toggleTooltipOpen = (index3, visible) => { - visibles.value[index3] = visible; - }; - const tooltipPlacement = computed(() => { - if (props4.tooltipPlacement) { - return props4.tooltipPlacement; - } - if (!props4.vertical) { - return "top"; - } - return direction.value === "rtl" ? "left" : "right"; - }); - const focus = () => { - var _a2; - (_a2 = sliderRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = sliderRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - const handleChange = (val) => { - emit("update:value", val); - emit("change", val); - formItemContext.onFieldChange(); - }; - const handleBlur = (e3) => { - emit("blur", e3); - }; - expose({ - focus, - blur - }); - const handleWithTooltip = (_a2) => { - var { - tooltipPrefixCls - } = _a2, _b = _a2.info, { - value, - dragging, - index: index3 - } = _b, restProps = __rest61(_b, ["value", "dragging", "index"]); - const { - tipFormatter, - tooltipOpen = props4.tooltipVisible, - getTooltipPopupContainer - } = props4; - const isTipFormatter = tipFormatter ? visibles.value[index3] || dragging : false; - const open2 = tooltipOpen || tooltipOpen === void 0 && isTipFormatter; - return createVNode(SliderTooltip_default, { - "prefixCls": tooltipPrefixCls, - "title": tipFormatter ? tipFormatter(value) : "", - "open": open2, - "placement": tooltipPlacement.value, - "transitionName": `${rootPrefixCls.value}-zoom-down`, - "key": index3, - "overlayClassName": `${prefixCls.value}-tooltip`, - "getPopupContainer": getTooltipPopupContainer || (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value) - }, { - default: () => [createVNode(Handle_default, _objectSpread2(_objectSpread2({}, restProps), {}, { - "value": value, - "onMouseenter": () => toggleTooltipOpen(index3, true), - "onMouseleave": () => toggleTooltipOpen(index3, false) - }), null)] - }); - }; - return () => { - const { - tooltipPrefixCls: customizeTooltipPrefixCls, - range: range4, - id = formItemContext.id.value - } = props4, restProps = __rest61(props4, ["tooltipPrefixCls", "range", "id"]); - const tooltipPrefixCls = configProvider.getPrefixCls("tooltip", customizeTooltipPrefixCls); - const cls = classNames_default(attrs.class, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, hashId.value); - if (direction.value === "rtl" && !restProps.vertical) { - restProps.reverse = !restProps.reverse; - } - let draggableTrack; - if (typeof range4 === "object") { - draggableTrack = range4.draggableTrack; - } - if (range4) { - return wrapSSR(createVNode(Range_default, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), restProps), {}, { - "step": restProps.step, - "draggableTrack": draggableTrack, - "class": cls, - "ref": sliderRef, - "handle": (info) => handleWithTooltip({ - tooltipPrefixCls, - prefixCls: prefixCls.value, - info - }), - "prefixCls": prefixCls.value, - "onChange": handleChange, - "onBlur": handleBlur - }), { - mark: slots.mark - })); - } - return wrapSSR(createVNode(Slider_default, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), restProps), {}, { - "id": id, - "step": restProps.step, - "class": cls, - "ref": sliderRef, - "handle": (info) => handleWithTooltip({ - tooltipPrefixCls, - prefixCls: prefixCls.value, - info - }), - "prefixCls": prefixCls.value, - "onChange": handleChange, - "onBlur": handleBlur - }), { - mark: slots.mark - })); - }; - } -}); -var slider_default2 = withInstall(Slider2); - -// node_modules/ant-design-vue/es/vc-steps/Step.js -function isString3(str) { - return typeof str === "string"; -} -function noop12() { -} -var VcStepProps = () => ({ - prefixCls: String, - itemWidth: String, - active: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - status: stringType(), - iconPrefix: String, - icon: vue_types_default.any, - adjustMarginRight: String, - stepNumber: Number, - stepIndex: Number, - description: vue_types_default.any, - title: vue_types_default.any, - subTitle: vue_types_default.any, - progressDot: withUndefined(vue_types_default.oneOfType([vue_types_default.looseBool, vue_types_default.func])), - tailContent: vue_types_default.any, - icons: vue_types_default.shape({ - finish: vue_types_default.any, - error: vue_types_default.any - }).loose, - onClick: functionType(), - onStepClick: functionType(), - stepIcon: functionType(), - itemRender: functionType(), - __legacy: booleanType() -}); -var Step_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Step", - inheritAttrs: false, - props: VcStepProps(), - setup(props4, _ref) { - let { - slots, - emit, - attrs - } = _ref; - const onItemClick = (e3) => { - emit("click", e3); - emit("stepClick", props4.stepIndex); - }; - const renderIconNode = (_ref2) => { - let { - icon, - title, - description - } = _ref2; - const { - prefixCls, - stepNumber, - status, - iconPrefix, - icons: icons2, - progressDot = slots.progressDot, - stepIcon = slots.stepIcon - } = props4; - let iconNode; - const iconClassName = classNames_default(`${prefixCls}-icon`, `${iconPrefix}icon`, { - [`${iconPrefix}icon-${icon}`]: icon && isString3(icon), - [`${iconPrefix}icon-check`]: !icon && status === "finish" && (icons2 && !icons2.finish || !icons2), - [`${iconPrefix}icon-cross`]: !icon && status === "error" && (icons2 && !icons2.error || !icons2) - }); - const iconDot = createVNode("span", { - "class": `${prefixCls}-icon-dot` - }, null); - if (progressDot) { - if (typeof progressDot === "function") { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [progressDot({ - iconDot, - index: stepNumber - 1, - status, - title, - description, - prefixCls - })]); - } else { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [iconDot]); - } - } else if (icon && !isString3(icon)) { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [icon]); - } else if (icons2 && icons2.finish && status === "finish") { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [icons2.finish]); - } else if (icons2 && icons2.error && status === "error") { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [icons2.error]); - } else if (icon || status === "finish" || status === "error") { - iconNode = createVNode("span", { - "class": iconClassName - }, null); - } else { - iconNode = createVNode("span", { - "class": `${prefixCls}-icon` - }, [stepNumber]); - } - if (stepIcon) { - iconNode = stepIcon({ - index: stepNumber - 1, - status, - title, - description, - node: iconNode - }); - } - return iconNode; - }; - return () => { - var _a2, _b, _c, _d; - const { - prefixCls, - itemWidth, - active, - status = "wait", - tailContent, - adjustMarginRight, - disabled, - title = (_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - description = (_b = slots.description) === null || _b === void 0 ? void 0 : _b.call(slots), - subTitle = (_c = slots.subTitle) === null || _c === void 0 ? void 0 : _c.call(slots), - icon = (_d = slots.icon) === null || _d === void 0 ? void 0 : _d.call(slots), - onClick, - onStepClick - } = props4; - const mergedStatus = status || "wait"; - const classString = classNames_default(`${prefixCls}-item`, `${prefixCls}-item-${mergedStatus}`, { - [`${prefixCls}-item-custom`]: icon, - [`${prefixCls}-item-active`]: active, - [`${prefixCls}-item-disabled`]: disabled === true - }); - const stepItemStyle = {}; - if (itemWidth) { - stepItemStyle.width = itemWidth; - } - if (adjustMarginRight) { - stepItemStyle.marginRight = adjustMarginRight; - } - const accessibilityProps = { - onClick: onClick || noop12 - }; - if (onStepClick && !disabled) { - accessibilityProps.role = "button"; - accessibilityProps.tabindex = 0; - accessibilityProps.onClick = onItemClick; - } - const stepNode = createVNode("div", _objectSpread2(_objectSpread2({}, omit_default(attrs, ["__legacy"])), {}, { - "class": [classString, attrs.class], - "style": [attrs.style, stepItemStyle] - }), [createVNode("div", _objectSpread2(_objectSpread2({}, accessibilityProps), {}, { - "class": `${prefixCls}-item-container` - }), [createVNode("div", { - "class": `${prefixCls}-item-tail` - }, [tailContent]), createVNode("div", { - "class": `${prefixCls}-item-icon` - }, [renderIconNode({ - icon, - title, - description - })]), createVNode("div", { - "class": `${prefixCls}-item-content` - }, [createVNode("div", { - "class": `${prefixCls}-item-title` - }, [title, subTitle && createVNode("div", { - "title": typeof subTitle === "string" ? subTitle : void 0, - "class": `${prefixCls}-item-subtitle` - }, [subTitle])]), description && createVNode("div", { - "class": `${prefixCls}-item-description` - }, [description])])])]); - if (props4.itemRender) { - return props4.itemRender(stepNode); - } - return stepNode; - }; - } -}); - -// node_modules/ant-design-vue/es/vc-steps/Steps.js -var __rest62 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Steps_default3 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Steps", - props: { - type: vue_types_default.string.def("default"), - prefixCls: vue_types_default.string.def("vc-steps"), - iconPrefix: vue_types_default.string.def("vc"), - direction: vue_types_default.string.def("horizontal"), - labelPlacement: vue_types_default.string.def("horizontal"), - status: stringType("process"), - size: vue_types_default.string.def(""), - progressDot: vue_types_default.oneOfType([vue_types_default.looseBool, vue_types_default.func]).def(void 0), - initial: vue_types_default.number.def(0), - current: vue_types_default.number.def(0), - items: vue_types_default.array.def(() => []), - icons: vue_types_default.shape({ - finish: vue_types_default.any, - error: vue_types_default.any - }).loose, - stepIcon: functionType(), - isInline: vue_types_default.looseBool, - itemRender: functionType() - }, - emits: ["change"], - setup(props4, _ref) { - let { - slots, - emit - } = _ref; - const onStepClick = (next2) => { - const { - current - } = props4; - if (current !== next2) { - emit("change", next2); - } - }; - const renderStep = (item, index3, legacyRender) => { - const { - prefixCls, - iconPrefix, - status, - current, - initial: initial2, - icons: icons2, - stepIcon = slots.stepIcon, - isInline, - itemRender, - progressDot = slots.progressDot - } = props4; - const mergedProgressDot = isInline || progressDot; - const mergedItem = _extends(_extends({}, item), { - class: "" - }); - const stepNumber = initial2 + index3; - const commonProps2 = { - active: stepNumber === current, - stepNumber: stepNumber + 1, - stepIndex: stepNumber, - key: stepNumber, - prefixCls, - iconPrefix, - progressDot: mergedProgressDot, - stepIcon, - icons: icons2, - onStepClick - }; - if (status === "error" && index3 === current - 1) { - mergedItem.class = `${prefixCls}-next-error`; - } - if (!mergedItem.status) { - if (stepNumber === current) { - mergedItem.status = status; - } else if (stepNumber < current) { - mergedItem.status = "finish"; - } else { - mergedItem.status = "wait"; - } - } - if (isInline) { - mergedItem.icon = void 0; - mergedItem.subTitle = void 0; - } - if (legacyRender) { - return legacyRender(_extends(_extends({}, mergedItem), commonProps2)); - } - if (itemRender) { - mergedItem.itemRender = (stepItem) => itemRender(mergedItem, stepItem); - } - return createVNode(Step_default, _objectSpread2(_objectSpread2(_objectSpread2({}, mergedItem), commonProps2), {}, { - "__legacy": false - }), null); - }; - const renderStepWithNode = (node2, index3) => { - return renderStep(_extends({}, node2.props), index3, (stepProps) => { - const stepNode = cloneElement(node2, stepProps); - return stepNode; - }); - }; - return () => { - var _a2; - const { - prefixCls, - direction, - type: type4, - labelPlacement, - iconPrefix, - status, - size: size2, - current, - progressDot = slots.progressDot, - initial: initial2, - icons: icons2, - items, - isInline, - itemRender - } = props4, restProps = __rest62(props4, ["prefixCls", "direction", "type", "labelPlacement", "iconPrefix", "status", "size", "current", "progressDot", "initial", "icons", "items", "isInline", "itemRender"]); - const isNav = type4 === "navigation"; - const mergedProgressDot = isInline || progressDot; - const mergedDirection = isInline ? "horizontal" : direction; - const mergedSize = isInline ? void 0 : size2; - const adjustedLabelPlacement = mergedProgressDot ? "vertical" : labelPlacement; - const classString = classNames_default(prefixCls, `${prefixCls}-${direction}`, { - [`${prefixCls}-${mergedSize}`]: mergedSize, - [`${prefixCls}-label-${adjustedLabelPlacement}`]: mergedDirection === "horizontal", - [`${prefixCls}-dot`]: !!mergedProgressDot, - [`${prefixCls}-navigation`]: isNav, - [`${prefixCls}-inline`]: isInline - }); - return createVNode("div", _objectSpread2({ - "class": classString - }, restProps), [items.filter((item) => item).map((item, index3) => renderStep(item, index3)), filterEmpty((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)).map(renderStepWithNode)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-steps/index.js -var vc_steps_default = Steps_default3; - -// node_modules/ant-design-vue/es/steps/style/custom-icon.js -var genStepsCustomIconStyle = (token2) => { - const { - componentCls, - stepsIconCustomTop, - stepsIconCustomSize, - stepsIconCustomFontSize - } = token2; - return { - [`${componentCls}-item-custom`]: { - [`> ${componentCls}-item-container > ${componentCls}-item-icon`]: { - height: "auto", - background: "none", - border: 0, - [`> ${componentCls}-icon`]: { - top: stepsIconCustomTop, - width: stepsIconCustomSize, - height: stepsIconCustomSize, - fontSize: stepsIconCustomFontSize, - lineHeight: `${stepsIconCustomSize}px` - } - } - }, - // Only adjust horizontal customize icon width - [`&:not(${componentCls}-vertical)`]: { - [`${componentCls}-item-custom`]: { - [`${componentCls}-item-icon`]: { - width: "auto", - background: "none" - } - } - } - }; -}; -var custom_icon_default = genStepsCustomIconStyle; - -// node_modules/ant-design-vue/es/steps/style/label-placement.js -var genStepsLabelPlacementStyle = (token2) => { - const { - componentCls, - stepsIconSize, - lineHeight, - stepsSmallIconSize - } = token2; - return { - [`&${componentCls}-label-vertical`]: { - [`${componentCls}-item`]: { - overflow: "visible", - "&-tail": { - marginInlineStart: stepsIconSize / 2 + token2.controlHeightLG, - padding: `${token2.paddingXXS}px ${token2.paddingLG}px` - }, - "&-content": { - display: "block", - width: (stepsIconSize / 2 + token2.controlHeightLG) * 2, - marginTop: token2.marginSM, - textAlign: "center" - }, - "&-icon": { - display: "inline-block", - marginInlineStart: token2.controlHeightLG - }, - "&-title": { - paddingInlineEnd: 0, - paddingInlineStart: 0, - "&::after": { - display: "none" - } - }, - "&-subtitle": { - display: "block", - marginBottom: token2.marginXXS, - marginInlineStart: 0, - lineHeight - } - }, - [`&${componentCls}-small:not(${componentCls}-dot)`]: { - [`${componentCls}-item`]: { - "&-icon": { - marginInlineStart: token2.controlHeightLG + (stepsIconSize - stepsSmallIconSize) / 2 - } - } - } - } - }; -}; -var label_placement_default = genStepsLabelPlacementStyle; - -// node_modules/ant-design-vue/es/steps/style/nav.js -var genStepsNavStyle = (token2) => { - const { - componentCls, - stepsNavContentMaxWidth, - stepsNavArrowColor, - stepsNavActiveColor, - motionDurationSlow - } = token2; - return { - [`&${componentCls}-navigation`]: { - paddingTop: token2.paddingSM, - [`&${componentCls}-small`]: { - [`${componentCls}-item`]: { - "&-container": { - marginInlineStart: -token2.marginSM - } - } - }, - [`${componentCls}-item`]: { - overflow: "visible", - textAlign: "center", - "&-container": { - display: "inline-block", - height: "100%", - marginInlineStart: -token2.margin, - paddingBottom: token2.paddingSM, - textAlign: "start", - transition: `opacity ${motionDurationSlow}`, - [`${componentCls}-item-content`]: { - maxWidth: stepsNavContentMaxWidth - }, - [`${componentCls}-item-title`]: _extends(_extends({ - maxWidth: "100%", - paddingInlineEnd: 0 - }, textEllipsis), { - "&::after": { - display: "none" - } - }) - }, - [`&:not(${componentCls}-item-active)`]: { - [`${componentCls}-item-container[role='button']`]: { - cursor: "pointer", - "&:hover": { - opacity: 0.85 - } - } - }, - "&:last-child": { - flex: 1, - "&::after": { - display: "none" - } - }, - "&::after": { - position: "absolute", - top: `calc(50% - ${token2.paddingSM / 2}px)`, - insetInlineStart: "100%", - display: "inline-block", - width: token2.fontSizeIcon, - height: token2.fontSizeIcon, - borderTop: `${token2.lineWidth}px ${token2.lineType} ${stepsNavArrowColor}`, - borderBottom: "none", - borderInlineStart: "none", - borderInlineEnd: `${token2.lineWidth}px ${token2.lineType} ${stepsNavArrowColor}`, - transform: "translateY(-50%) translateX(-50%) rotate(45deg)", - content: '""' - }, - "&::before": { - position: "absolute", - bottom: 0, - insetInlineStart: "50%", - display: "inline-block", - width: 0, - height: token2.lineWidthBold, - backgroundColor: stepsNavActiveColor, - transition: `width ${motionDurationSlow}, inset-inline-start ${motionDurationSlow}`, - transitionTimingFunction: "ease-out", - content: '""' - } - }, - [`${componentCls}-item${componentCls}-item-active::before`]: { - insetInlineStart: 0, - width: "100%" - } - }, - [`&${componentCls}-navigation${componentCls}-vertical`]: { - [`> ${componentCls}-item`]: { - marginInlineEnd: 0, - "&::before": { - display: "none" - }, - [`&${componentCls}-item-active::before`]: { - top: 0, - insetInlineEnd: 0, - insetInlineStart: "unset", - display: "block", - width: token2.lineWidth * 3, - height: `calc(100% - ${token2.marginLG}px)` - }, - "&::after": { - position: "relative", - insetInlineStart: "50%", - display: "block", - width: token2.controlHeight * 0.25, - height: token2.controlHeight * 0.25, - marginBottom: token2.marginXS, - textAlign: "center", - transform: "translateY(-50%) translateX(-50%) rotate(135deg)" - }, - [`> ${componentCls}-item-container > ${componentCls}-item-tail`]: { - visibility: "hidden" - } - } - }, - [`&${componentCls}-navigation${componentCls}-horizontal`]: { - [`> ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - visibility: "hidden" - } - } - }; -}; -var nav_default = genStepsNavStyle; - -// node_modules/ant-design-vue/es/steps/style/progress.js -var genStepsProgressStyle = (token2) => { - const { - antCls, - componentCls - } = token2; - return { - [`&${componentCls}-with-progress`]: { - [`${componentCls}-item`]: { - paddingTop: token2.paddingXXS, - [`&-process ${componentCls}-item-container ${componentCls}-item-icon ${componentCls}-icon`]: { - color: token2.processIconColor - } - }, - [`&${componentCls}-vertical > ${componentCls}-item `]: { - paddingInlineStart: token2.paddingXXS, - [`> ${componentCls}-item-container > ${componentCls}-item-tail`]: { - top: token2.marginXXS, - insetInlineStart: token2.stepsIconSize / 2 - token2.lineWidth + token2.paddingXXS - } - }, - [`&, &${componentCls}-small`]: { - [`&${componentCls}-horizontal ${componentCls}-item:first-child`]: { - paddingBottom: token2.paddingXXS, - paddingInlineStart: token2.paddingXXS - } - }, - [`&${componentCls}-small${componentCls}-vertical > ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - insetInlineStart: token2.stepsSmallIconSize / 2 - token2.lineWidth + token2.paddingXXS - }, - [`&${componentCls}-label-vertical`]: { - [`${componentCls}-item ${componentCls}-item-tail`]: { - top: token2.margin - 2 * token2.lineWidth - } - }, - [`${componentCls}-item-icon`]: { - position: "relative", - [`${antCls}-progress`]: { - position: "absolute", - insetBlockStart: (token2.stepsIconSize - token2.stepsProgressSize - token2.lineWidth * 2) / 2, - insetInlineStart: (token2.stepsIconSize - token2.stepsProgressSize - token2.lineWidth * 2) / 2 - } - } - } - }; -}; -var progress_default3 = genStepsProgressStyle; - -// node_modules/ant-design-vue/es/steps/style/progress-dot.js -var genStepsProgressDotStyle = (token2) => { - const { - componentCls, - descriptionWidth, - lineHeight, - stepsCurrentDotSize, - stepsDotSize, - motionDurationSlow - } = token2; - return { - [`&${componentCls}-dot, &${componentCls}-dot${componentCls}-small`]: { - [`${componentCls}-item`]: { - "&-title": { - lineHeight - }, - "&-tail": { - top: Math.floor((token2.stepsDotSize - token2.lineWidth * 3) / 2), - width: "100%", - marginTop: 0, - marginBottom: 0, - marginInline: `${descriptionWidth / 2}px 0`, - padding: 0, - "&::after": { - width: `calc(100% - ${token2.marginSM * 2}px)`, - height: token2.lineWidth * 3, - marginInlineStart: token2.marginSM - } - }, - "&-icon": { - width: stepsDotSize, - height: stepsDotSize, - marginInlineStart: (token2.descriptionWidth - stepsDotSize) / 2, - paddingInlineEnd: 0, - lineHeight: `${stepsDotSize}px`, - background: "transparent", - border: 0, - [`${componentCls}-icon-dot`]: { - position: "relative", - float: "left", - width: "100%", - height: "100%", - borderRadius: 100, - transition: `all ${motionDurationSlow}`, - /* expand hover area */ - "&::after": { - position: "absolute", - top: -token2.marginSM, - insetInlineStart: (stepsDotSize - token2.controlHeightLG * 1.5) / 2, - width: token2.controlHeightLG * 1.5, - height: token2.controlHeight, - background: "transparent", - content: '""' - } - } - }, - "&-content": { - width: descriptionWidth - }, - [`&-process ${componentCls}-item-icon`]: { - position: "relative", - top: (stepsDotSize - stepsCurrentDotSize) / 2, - width: stepsCurrentDotSize, - height: stepsCurrentDotSize, - lineHeight: `${stepsCurrentDotSize}px`, - background: "none", - marginInlineStart: (token2.descriptionWidth - stepsCurrentDotSize) / 2 - }, - [`&-process ${componentCls}-icon`]: { - [`&:first-child ${componentCls}-icon-dot`]: { - insetInlineStart: 0 - } - } - } - }, - [`&${componentCls}-vertical${componentCls}-dot`]: { - [`${componentCls}-item-icon`]: { - marginTop: (token2.controlHeight - stepsDotSize) / 2, - marginInlineStart: 0, - background: "none" - }, - [`${componentCls}-item-process ${componentCls}-item-icon`]: { - marginTop: (token2.controlHeight - stepsCurrentDotSize) / 2, - top: 0, - insetInlineStart: (stepsDotSize - stepsCurrentDotSize) / 2, - marginInlineStart: 0 - }, - // https://github.com/ant-design/ant-design/issues/18354 - [`${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - top: (token2.controlHeight - stepsDotSize) / 2, - insetInlineStart: 0, - margin: 0, - padding: `${stepsDotSize + token2.paddingXS}px 0 ${token2.paddingXS}px`, - "&::after": { - marginInlineStart: (stepsDotSize - token2.lineWidth) / 2 - } - }, - [`&${componentCls}-small`]: { - [`${componentCls}-item-icon`]: { - marginTop: (token2.controlHeightSM - stepsDotSize) / 2 - }, - [`${componentCls}-item-process ${componentCls}-item-icon`]: { - marginTop: (token2.controlHeightSM - stepsCurrentDotSize) / 2 - }, - [`${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - top: (token2.controlHeightSM - stepsDotSize) / 2 - } - }, - [`${componentCls}-item:first-child ${componentCls}-icon-dot`]: { - insetInlineStart: 0 - }, - [`${componentCls}-item-content`]: { - width: "inherit" - } - } - }; -}; -var progress_dot_default = genStepsProgressDotStyle; - -// node_modules/ant-design-vue/es/steps/style/rtl.js -var genStepsRTLStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`&${componentCls}-rtl`]: { - direction: "rtl", - [`${componentCls}-item`]: { - "&-subtitle": { - float: "left" - } - }, - // nav - [`&${componentCls}-navigation`]: { - [`${componentCls}-item::after`]: { - transform: "rotate(-45deg)" - } - }, - // vertical - [`&${componentCls}-vertical`]: { - [`> ${componentCls}-item`]: { - "&::after": { - transform: "rotate(225deg)" - }, - [`${componentCls}-item-icon`]: { - float: "right" - } - } - }, - // progress-dot - [`&${componentCls}-dot`]: { - [`${componentCls}-item-icon ${componentCls}-icon-dot, &${componentCls}-small ${componentCls}-item-icon ${componentCls}-icon-dot`]: { - float: "right" - } - } - } - }; -}; -var rtl_default2 = genStepsRTLStyle; - -// node_modules/ant-design-vue/es/steps/style/small.js -var genStepsSmallStyle = (token2) => { - const { - componentCls, - stepsSmallIconSize, - // stepsSmallIconMargin, - fontSizeSM, - fontSize, - colorTextDescription - } = token2; - return { - [`&${componentCls}-small`]: { - [`&${componentCls}-horizontal:not(${componentCls}-label-vertical) ${componentCls}-item`]: { - paddingInlineStart: token2.paddingSM, - "&:first-child": { - paddingInlineStart: 0 - } - }, - [`${componentCls}-item-icon`]: { - width: stepsSmallIconSize, - height: stepsSmallIconSize, - // margin: stepsSmallIconMargin, - marginTop: 0, - marginBottom: 0, - marginInline: `0 ${token2.marginXS}px`, - fontSize: fontSizeSM, - lineHeight: `${stepsSmallIconSize}px`, - textAlign: "center", - borderRadius: stepsSmallIconSize - }, - [`${componentCls}-item-title`]: { - paddingInlineEnd: token2.paddingSM, - fontSize, - lineHeight: `${stepsSmallIconSize}px`, - "&::after": { - top: stepsSmallIconSize / 2 - } - }, - [`${componentCls}-item-description`]: { - color: colorTextDescription, - fontSize - }, - [`${componentCls}-item-tail`]: { - top: stepsSmallIconSize / 2 - token2.paddingXXS - }, - [`${componentCls}-item-custom ${componentCls}-item-icon`]: { - width: "inherit", - height: "inherit", - lineHeight: "inherit", - background: "none", - border: 0, - borderRadius: 0, - [`> ${componentCls}-icon`]: { - fontSize: stepsSmallIconSize, - lineHeight: `${stepsSmallIconSize}px`, - transform: "none" - } - } - } - }; -}; -var small_default = genStepsSmallStyle; - -// node_modules/ant-design-vue/es/steps/style/vertical.js -var genStepsVerticalStyle = (token2) => { - const { - componentCls, - stepsSmallIconSize, - stepsIconSize - } = token2; - return { - [`&${componentCls}-vertical`]: { - display: "flex", - flexDirection: "column", - [`> ${componentCls}-item`]: { - display: "block", - flex: "1 0 auto", - paddingInlineStart: 0, - overflow: "visible", - [`${componentCls}-item-icon`]: { - float: "left", - marginInlineEnd: token2.margin - }, - [`${componentCls}-item-content`]: { - display: "block", - minHeight: token2.controlHeight * 1.5, - overflow: "hidden" - }, - [`${componentCls}-item-title`]: { - lineHeight: `${stepsIconSize}px` - }, - [`${componentCls}-item-description`]: { - paddingBottom: token2.paddingSM - } - }, - [`> ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - position: "absolute", - top: 0, - insetInlineStart: token2.stepsIconSize / 2 - token2.lineWidth, - width: token2.lineWidth, - height: "100%", - padding: `${stepsIconSize + token2.marginXXS * 1.5}px 0 ${token2.marginXXS * 1.5}px`, - "&::after": { - width: token2.lineWidth, - height: "100%" - } - }, - [`> ${componentCls}-item:not(:last-child) > ${componentCls}-item-container > ${componentCls}-item-tail`]: { - display: "block" - }, - [` > ${componentCls}-item > ${componentCls}-item-container > ${componentCls}-item-content > ${componentCls}-item-title`]: { - "&::after": { - display: "none" - } - }, - [`&${componentCls}-small ${componentCls}-item-container`]: { - [`${componentCls}-item-tail`]: { - position: "absolute", - top: 0, - insetInlineStart: token2.stepsSmallIconSize / 2 - token2.lineWidth, - padding: `${stepsSmallIconSize + token2.marginXXS * 1.5}px 0 ${token2.marginXXS * 1.5}px` - }, - [`${componentCls}-item-title`]: { - lineHeight: `${stepsSmallIconSize}px` - } - } - } - }; -}; -var vertical_default2 = genStepsVerticalStyle; - -// node_modules/ant-design-vue/es/steps/style/inline.js -var genStepsInlineStyle = (token2) => { - const { - componentCls, - inlineDotSize, - inlineTitleColor, - inlineTailColor - } = token2; - const containerPaddingTop = token2.paddingXS + token2.lineWidth; - const titleStyle = { - [`${componentCls}-item-container ${componentCls}-item-content ${componentCls}-item-title`]: { - color: inlineTitleColor - } - }; - return { - [`&${componentCls}-inline`]: { - width: "auto", - display: "inline-flex", - [`${componentCls}-item`]: { - flex: "none", - "&-container": { - padding: `${containerPaddingTop}px ${token2.paddingXXS}px 0`, - margin: `0 ${token2.marginXXS / 2}px`, - borderRadius: token2.borderRadiusSM, - cursor: "pointer", - transition: `background-color ${token2.motionDurationMid}`, - "&:hover": { - background: token2.controlItemBgHover - }, - [`&[role='button']:hover`]: { - opacity: 1 - } - }, - "&-icon": { - width: inlineDotSize, - height: inlineDotSize, - marginInlineStart: `calc(50% - ${inlineDotSize / 2}px)`, - [`> ${componentCls}-icon`]: { - top: 0 - }, - [`${componentCls}-icon-dot`]: { - borderRadius: token2.fontSizeSM / 4 - } - }, - "&-content": { - width: "auto", - marginTop: token2.marginXS - token2.lineWidth - }, - "&-title": { - color: inlineTitleColor, - fontSize: token2.fontSizeSM, - lineHeight: token2.lineHeightSM, - fontWeight: "normal", - marginBottom: token2.marginXXS / 2 - }, - "&-description": { - display: "none" - }, - "&-tail": { - marginInlineStart: 0, - top: containerPaddingTop + inlineDotSize / 2, - transform: `translateY(-50%)`, - "&:after": { - width: "100%", - height: token2.lineWidth, - borderRadius: 0, - marginInlineStart: 0, - background: inlineTailColor - } - }, - [`&:first-child ${componentCls}-item-tail`]: { - width: "50%", - marginInlineStart: "50%" - }, - [`&:last-child ${componentCls}-item-tail`]: { - display: "block", - width: "50%" - }, - "&-wait": _extends({ - [`${componentCls}-item-icon ${componentCls}-icon ${componentCls}-icon-dot`]: { - backgroundColor: token2.colorBorderBg, - border: `${token2.lineWidth}px ${token2.lineType} ${inlineTailColor}` - } - }, titleStyle), - "&-finish": _extends({ - [`${componentCls}-item-tail::after`]: { - backgroundColor: inlineTailColor - }, - [`${componentCls}-item-icon ${componentCls}-icon ${componentCls}-icon-dot`]: { - backgroundColor: inlineTailColor, - border: `${token2.lineWidth}px ${token2.lineType} ${inlineTailColor}` - } - }, titleStyle), - "&-error": titleStyle, - "&-active, &-process": _extends({ - [`${componentCls}-item-icon`]: { - width: inlineDotSize, - height: inlineDotSize, - marginInlineStart: `calc(50% - ${inlineDotSize / 2}px)`, - top: 0 - } - }, titleStyle), - [`&:not(${componentCls}-item-active) > ${componentCls}-item-container[role='button']:hover`]: { - [`${componentCls}-item-title`]: { - color: inlineTitleColor - } - } - } - } - }; -}; -var inline_default = genStepsInlineStyle; - -// node_modules/ant-design-vue/es/steps/style/index.js -var StepItemStatusEnum; -(function(StepItemStatusEnum2) { - StepItemStatusEnum2["wait"] = "wait"; - StepItemStatusEnum2["process"] = "process"; - StepItemStatusEnum2["finish"] = "finish"; - StepItemStatusEnum2["error"] = "error"; -})(StepItemStatusEnum || (StepItemStatusEnum = {})); -var genStepsItemStatusStyle = (status, token2) => { - const prefix2 = `${token2.componentCls}-item`; - const iconColorKey = `${status}IconColor`; - const titleColorKey = `${status}TitleColor`; - const descriptionColorKey = `${status}DescriptionColor`; - const tailColorKey = `${status}TailColor`; - const iconBgColorKey = `${status}IconBgColor`; - const iconBorderColorKey = `${status}IconBorderColor`; - const dotColorKey = `${status}DotColor`; - return { - [`${prefix2}-${status} ${prefix2}-icon`]: { - backgroundColor: token2[iconBgColorKey], - borderColor: token2[iconBorderColorKey], - [`> ${token2.componentCls}-icon`]: { - color: token2[iconColorKey], - [`${token2.componentCls}-icon-dot`]: { - background: token2[dotColorKey] - } - } - }, - [`${prefix2}-${status}${prefix2}-custom ${prefix2}-icon`]: { - [`> ${token2.componentCls}-icon`]: { - color: token2[dotColorKey] - } - }, - [`${prefix2}-${status} > ${prefix2}-container > ${prefix2}-content > ${prefix2}-title`]: { - color: token2[titleColorKey], - "&::after": { - backgroundColor: token2[tailColorKey] - } - }, - [`${prefix2}-${status} > ${prefix2}-container > ${prefix2}-content > ${prefix2}-description`]: { - color: token2[descriptionColorKey] - }, - [`${prefix2}-${status} > ${prefix2}-container > ${prefix2}-tail::after`]: { - backgroundColor: token2[tailColorKey] - } - }; -}; -var genStepsItemStyle = (token2) => { - const { - componentCls, - motionDurationSlow - } = token2; - const stepsItemCls = `${componentCls}-item`; - return _extends(_extends(_extends(_extends(_extends(_extends({ - [stepsItemCls]: { - position: "relative", - display: "inline-block", - flex: 1, - overflow: "hidden", - verticalAlign: "top", - "&:last-child": { - flex: "none", - [`> ${stepsItemCls}-container > ${stepsItemCls}-tail, > ${stepsItemCls}-container > ${stepsItemCls}-content > ${stepsItemCls}-title::after`]: { - display: "none" - } - } - }, - [`${stepsItemCls}-container`]: { - outline: "none" - }, - [`${stepsItemCls}-icon, ${stepsItemCls}-content`]: { - display: "inline-block", - verticalAlign: "top" - }, - [`${stepsItemCls}-icon`]: { - width: token2.stepsIconSize, - height: token2.stepsIconSize, - marginTop: 0, - marginBottom: 0, - marginInlineStart: 0, - marginInlineEnd: token2.marginXS, - fontSize: token2.stepsIconFontSize, - fontFamily: token2.fontFamily, - lineHeight: `${token2.stepsIconSize}px`, - textAlign: "center", - borderRadius: token2.stepsIconSize, - border: `${token2.lineWidth}px ${token2.lineType} transparent`, - transition: `background-color ${motionDurationSlow}, border-color ${motionDurationSlow}`, - [`${componentCls}-icon`]: { - position: "relative", - top: token2.stepsIconTop, - color: token2.colorPrimary, - lineHeight: 1 - } - }, - [`${stepsItemCls}-tail`]: { - position: "absolute", - top: token2.stepsIconSize / 2 - token2.paddingXXS, - insetInlineStart: 0, - width: "100%", - "&::after": { - display: "inline-block", - width: "100%", - height: token2.lineWidth, - background: token2.colorSplit, - borderRadius: token2.lineWidth, - transition: `background ${motionDurationSlow}`, - content: '""' - } - }, - [`${stepsItemCls}-title`]: { - position: "relative", - display: "inline-block", - paddingInlineEnd: token2.padding, - color: token2.colorText, - fontSize: token2.fontSizeLG, - lineHeight: `${token2.stepsTitleLineHeight}px`, - "&::after": { - position: "absolute", - top: token2.stepsTitleLineHeight / 2, - insetInlineStart: "100%", - display: "block", - width: 9999, - height: token2.lineWidth, - background: token2.processTailColor, - content: '""' - } - }, - [`${stepsItemCls}-subtitle`]: { - display: "inline", - marginInlineStart: token2.marginXS, - color: token2.colorTextDescription, - fontWeight: "normal", - fontSize: token2.fontSize - }, - [`${stepsItemCls}-description`]: { - color: token2.colorTextDescription, - fontSize: token2.fontSize - } - }, genStepsItemStatusStyle(StepItemStatusEnum.wait, token2)), genStepsItemStatusStyle(StepItemStatusEnum.process, token2)), { - [`${stepsItemCls}-process > ${stepsItemCls}-container > ${stepsItemCls}-title`]: { - fontWeight: token2.fontWeightStrong - } - }), genStepsItemStatusStyle(StepItemStatusEnum.finish, token2)), genStepsItemStatusStyle(StepItemStatusEnum.error, token2)), { - [`${stepsItemCls}${componentCls}-next-error > ${componentCls}-item-title::after`]: { - background: token2.colorError - }, - [`${stepsItemCls}-disabled`]: { - cursor: "not-allowed" - } - }); -}; -var genStepsClickableStyle = (token2) => { - const { - componentCls, - motionDurationSlow - } = token2; - return { - [`& ${componentCls}-item`]: { - [`&:not(${componentCls}-item-active)`]: { - [`& > ${componentCls}-item-container[role='button']`]: { - cursor: "pointer", - [`${componentCls}-item`]: { - [`&-title, &-subtitle, &-description, &-icon ${componentCls}-icon`]: { - transition: `color ${motionDurationSlow}` - } - }, - "&:hover": { - [`${componentCls}-item`]: { - [`&-title, &-subtitle, &-description`]: { - color: token2.colorPrimary - } - } - } - }, - [`&:not(${componentCls}-item-process)`]: { - [`& > ${componentCls}-item-container[role='button']:hover`]: { - [`${componentCls}-item`]: { - "&-icon": { - borderColor: token2.colorPrimary, - [`${componentCls}-icon`]: { - color: token2.colorPrimary - } - } - } - } - } - } - }, - [`&${componentCls}-horizontal:not(${componentCls}-label-vertical)`]: { - [`${componentCls}-item`]: { - paddingInlineStart: token2.padding, - whiteSpace: "nowrap", - "&:first-child": { - paddingInlineStart: 0 - }, - [`&:last-child ${componentCls}-item-title`]: { - paddingInlineEnd: 0 - }, - "&-tail": { - display: "none" - }, - "&-description": { - maxWidth: token2.descriptionWidth, - whiteSpace: "normal" - } - } - } - }; -}; -var genStepsStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), { - display: "flex", - width: "100%", - fontSize: 0, - textAlign: "initial" - }), genStepsItemStyle(token2)), genStepsClickableStyle(token2)), custom_icon_default(token2)), small_default(token2)), vertical_default2(token2)), label_placement_default(token2)), progress_dot_default(token2)), nav_default(token2)), rtl_default2(token2)), progress_default3(token2)), inline_default(token2)) - }; -}; -var style_default52 = genComponentStyleHook("Steps", (token2) => { - const { - wireframe, - colorTextDisabled, - fontSizeHeading3, - fontSize, - controlHeight, - controlHeightLG, - colorTextLightSolid, - colorText, - colorPrimary, - colorTextLabel, - colorTextDescription, - colorTextQuaternary, - colorFillContent, - controlItemBgActive, - colorError, - colorBgContainer, - colorBorderSecondary - } = token2; - const stepsIconSize = token2.controlHeight; - const processTailColor = token2.colorSplit; - const stepsToken = merge(token2, { - // Steps variable default.less - processTailColor, - stepsNavArrowColor: colorTextDisabled, - stepsIconSize, - stepsIconCustomSize: stepsIconSize, - stepsIconCustomTop: 0, - stepsIconCustomFontSize: controlHeightLG / 2, - stepsIconTop: -0.5, - stepsIconFontSize: fontSize, - stepsTitleLineHeight: controlHeight, - stepsSmallIconSize: fontSizeHeading3, - stepsDotSize: controlHeight / 4, - stepsCurrentDotSize: controlHeightLG / 4, - stepsNavContentMaxWidth: "auto", - // Steps component less variable - processIconColor: colorTextLightSolid, - processTitleColor: colorText, - processDescriptionColor: colorText, - processIconBgColor: colorPrimary, - processIconBorderColor: colorPrimary, - processDotColor: colorPrimary, - waitIconColor: wireframe ? colorTextDisabled : colorTextLabel, - waitTitleColor: colorTextDescription, - waitDescriptionColor: colorTextDescription, - waitTailColor: processTailColor, - waitIconBgColor: wireframe ? colorBgContainer : colorFillContent, - waitIconBorderColor: wireframe ? colorTextDisabled : "transparent", - waitDotColor: colorTextDisabled, - finishIconColor: colorPrimary, - finishTitleColor: colorText, - finishDescriptionColor: colorTextDescription, - finishTailColor: colorPrimary, - finishIconBgColor: wireframe ? colorBgContainer : controlItemBgActive, - finishIconBorderColor: wireframe ? colorPrimary : controlItemBgActive, - finishDotColor: colorPrimary, - errorIconColor: colorTextLightSolid, - errorTitleColor: colorError, - errorDescriptionColor: colorError, - errorTailColor: processTailColor, - errorIconBgColor: colorError, - errorIconBorderColor: colorError, - errorDotColor: colorError, - stepsNavActiveColor: colorPrimary, - stepsProgressSize: controlHeightLG, - // Steps inline variable - inlineDotSize: 6, - inlineTitleColor: colorTextQuaternary, - inlineTailColor: colorBorderSecondary - }); - return [genStepsStyle(stepsToken)]; -}, { - descriptionWidth: 140 -}); - -// node_modules/ant-design-vue/es/steps/index.js -var stepsProps2 = () => ({ - prefixCls: String, - iconPrefix: String, - current: Number, - initial: Number, - percent: Number, - responsive: booleanType(), - items: arrayType(), - labelPlacement: stringType(), - status: stringType(), - size: stringType(), - direction: stringType(), - progressDot: someType([Boolean, Function]), - type: stringType(), - onChange: functionType(), - "onUpdate:current": functionType() -}); -var Steps2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASteps", - inheritAttrs: false, - props: initDefaultProps_default(stepsProps2(), { - current: 0, - responsive: true, - labelPlacement: "horizontal" - }), - slots: Object, - // emits: ['update:current', 'change'], - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const { - prefixCls, - direction: rtlDirection, - configProvider - } = useConfigInject_default("steps", props4); - const [wrapSSR, hashId] = style_default52(prefixCls); - const [, token2] = useToken(); - const screens = useBreakpoint_default(); - const direction = computed(() => props4.responsive && screens.value.xs ? "vertical" : props4.direction); - const iconPrefix = computed(() => configProvider.getPrefixCls("", props4.iconPrefix)); - const handleChange = (current) => { - emit("update:current", current); - emit("change", current); - }; - const isInline = computed(() => props4.type === "inline"); - const mergedPercent = computed(() => isInline.value ? void 0 : props4.percent); - const stepIconRender = (_ref2) => { - let { - node: node2, - status - } = _ref2; - if (status === "process" && props4.percent !== void 0) { - const progressWidth = props4.size === "small" ? token2.value.controlHeight : token2.value.controlHeightLG; - const iconWithProgress = createVNode("div", { - "class": `${prefixCls.value}-progress-icon` - }, [createVNode(progress_default2, { - "type": "circle", - "percent": mergedPercent.value, - "size": progressWidth, - "strokeWidth": 4, - "format": () => null - }, null), node2]); - return iconWithProgress; - } - return node2; - }; - const icons2 = computed(() => ({ - finish: createVNode(CheckOutlined_default, { - "class": `${prefixCls.value}-finish-icon` - }, null), - error: createVNode(CloseOutlined_default, { - "class": `${prefixCls.value}-error-icon` - }, null) - })); - return () => { - const stepsClassName = classNames_default({ - [`${prefixCls.value}-rtl`]: rtlDirection.value === "rtl", - [`${prefixCls.value}-with-progress`]: mergedPercent.value !== void 0 - }, attrs.class, hashId.value); - const itemRender = (item, stepItem) => item.description ? createVNode(tooltip_default, { - "title": item.description - }, { - default: () => [stepItem] - }) : stepItem; - return wrapSSR(createVNode(vc_steps_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "icons": icons2.value - }, attrs), omit_default(props4, ["percent", "responsive"])), {}, { - "items": props4.items, - "direction": direction.value, - "prefixCls": prefixCls.value, - "iconPrefix": iconPrefix.value, - "class": stepsClassName, - "onChange": handleChange, - "isInline": isInline.value, - "itemRender": isInline.value ? itemRender : void 0 - }), _extends({ - stepIcon: stepIconRender - }, slots))); - }; - } -}); -var Step = defineComponent(_extends(_extends({ - compatConfig: { - MODE: 3 - } -}, Step_default), { - name: "AStep", - props: VcStepProps() -})); -var steps_default = _extends(Steps2, { - Step, - install: (app) => { - app.component(Steps2.name, Steps2); - app.component(Step.name, Step); - return app; - } -}); - -// node_modules/ant-design-vue/es/switch/style/index.js -var genSwitchSmallStyle = (token2) => { - const { - componentCls - } = token2; - const switchInnerCls = `${componentCls}-inner`; - return { - [componentCls]: { - [`&${componentCls}-small`]: { - minWidth: token2.switchMinWidthSM, - height: token2.switchHeightSM, - lineHeight: `${token2.switchHeightSM}px`, - [`${componentCls}-inner`]: { - paddingInlineStart: token2.switchInnerMarginMaxSM, - paddingInlineEnd: token2.switchInnerMarginMinSM, - [`${switchInnerCls}-checked`]: { - marginInlineStart: `calc(-100% + ${token2.switchPinSizeSM + token2.switchPadding * 2}px - ${token2.switchInnerMarginMaxSM * 2}px)`, - marginInlineEnd: `calc(100% - ${token2.switchPinSizeSM + token2.switchPadding * 2}px + ${token2.switchInnerMarginMaxSM * 2}px)` - }, - [`${switchInnerCls}-unchecked`]: { - marginTop: -token2.switchHeightSM, - marginInlineStart: 0, - marginInlineEnd: 0 - } - }, - [`${componentCls}-handle`]: { - width: token2.switchPinSizeSM, - height: token2.switchPinSizeSM - }, - [`${componentCls}-loading-icon`]: { - top: (token2.switchPinSizeSM - token2.switchLoadingIconSize) / 2, - fontSize: token2.switchLoadingIconSize - }, - [`&${componentCls}-checked`]: { - [`${componentCls}-inner`]: { - paddingInlineStart: token2.switchInnerMarginMinSM, - paddingInlineEnd: token2.switchInnerMarginMaxSM, - [`${switchInnerCls}-checked`]: { - marginInlineStart: 0, - marginInlineEnd: 0 - }, - [`${switchInnerCls}-unchecked`]: { - marginInlineStart: `calc(100% - ${token2.switchPinSizeSM + token2.switchPadding * 2}px + ${token2.switchInnerMarginMaxSM * 2}px)`, - marginInlineEnd: `calc(-100% + ${token2.switchPinSizeSM + token2.switchPadding * 2}px - ${token2.switchInnerMarginMaxSM * 2}px)` - } - }, - [`${componentCls}-handle`]: { - insetInlineStart: `calc(100% - ${token2.switchPinSizeSM + token2.switchPadding}px)` - } - }, - [`&:not(${componentCls}-disabled):active`]: { - [`&:not(${componentCls}-checked) ${switchInnerCls}`]: { - [`${switchInnerCls}-unchecked`]: { - marginInlineStart: token2.marginXXS / 2, - marginInlineEnd: -token2.marginXXS / 2 - } - }, - [`&${componentCls}-checked ${switchInnerCls}`]: { - [`${switchInnerCls}-checked`]: { - marginInlineStart: -token2.marginXXS / 2, - marginInlineEnd: token2.marginXXS / 2 - } - } - } - } - } - }; -}; -var genSwitchLoadingStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - [`${componentCls}-loading-icon${token2.iconCls}`]: { - position: "relative", - top: (token2.switchPinSize - token2.fontSize) / 2, - color: token2.switchLoadingIconColor, - verticalAlign: "top" - }, - [`&${componentCls}-checked ${componentCls}-loading-icon`]: { - color: token2.switchColor - } - } - }; -}; -var genSwitchHandleStyle = (token2) => { - const { - componentCls - } = token2; - const switchHandleCls = `${componentCls}-handle`; - return { - [componentCls]: { - [switchHandleCls]: { - position: "absolute", - top: token2.switchPadding, - insetInlineStart: token2.switchPadding, - width: token2.switchPinSize, - height: token2.switchPinSize, - transition: `all ${token2.switchDuration} ease-in-out`, - "&::before": { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: 0, - insetInlineStart: 0, - backgroundColor: token2.colorWhite, - borderRadius: token2.switchPinSize / 2, - boxShadow: token2.switchHandleShadow, - transition: `all ${token2.switchDuration} ease-in-out`, - content: '""' - } - }, - [`&${componentCls}-checked ${switchHandleCls}`]: { - insetInlineStart: `calc(100% - ${token2.switchPinSize + token2.switchPadding}px)` - }, - [`&:not(${componentCls}-disabled):active`]: { - [`${switchHandleCls}::before`]: { - insetInlineEnd: token2.switchHandleActiveInset, - insetInlineStart: 0 - }, - [`&${componentCls}-checked ${switchHandleCls}::before`]: { - insetInlineEnd: 0, - insetInlineStart: token2.switchHandleActiveInset - } - } - } - }; -}; -var genSwitchInnerStyle = (token2) => { - const { - componentCls - } = token2; - const switchInnerCls = `${componentCls}-inner`; - return { - [componentCls]: { - [switchInnerCls]: { - display: "block", - overflow: "hidden", - borderRadius: 100, - height: "100%", - paddingInlineStart: token2.switchInnerMarginMax, - paddingInlineEnd: token2.switchInnerMarginMin, - transition: `padding-inline-start ${token2.switchDuration} ease-in-out, padding-inline-end ${token2.switchDuration} ease-in-out`, - [`${switchInnerCls}-checked, ${switchInnerCls}-unchecked`]: { - display: "block", - color: token2.colorTextLightSolid, - fontSize: token2.fontSizeSM, - transition: `margin-inline-start ${token2.switchDuration} ease-in-out, margin-inline-end ${token2.switchDuration} ease-in-out`, - pointerEvents: "none" - }, - [`${switchInnerCls}-checked`]: { - marginInlineStart: `calc(-100% + ${token2.switchPinSize + token2.switchPadding * 2}px - ${token2.switchInnerMarginMax * 2}px)`, - marginInlineEnd: `calc(100% - ${token2.switchPinSize + token2.switchPadding * 2}px + ${token2.switchInnerMarginMax * 2}px)` - }, - [`${switchInnerCls}-unchecked`]: { - marginTop: -token2.switchHeight, - marginInlineStart: 0, - marginInlineEnd: 0 - } - }, - [`&${componentCls}-checked ${switchInnerCls}`]: { - paddingInlineStart: token2.switchInnerMarginMin, - paddingInlineEnd: token2.switchInnerMarginMax, - [`${switchInnerCls}-checked`]: { - marginInlineStart: 0, - marginInlineEnd: 0 - }, - [`${switchInnerCls}-unchecked`]: { - marginInlineStart: `calc(100% - ${token2.switchPinSize + token2.switchPadding * 2}px + ${token2.switchInnerMarginMax * 2}px)`, - marginInlineEnd: `calc(-100% + ${token2.switchPinSize + token2.switchPadding * 2}px - ${token2.switchInnerMarginMax * 2}px)` - } - }, - [`&:not(${componentCls}-disabled):active`]: { - [`&:not(${componentCls}-checked) ${switchInnerCls}`]: { - [`${switchInnerCls}-unchecked`]: { - marginInlineStart: token2.switchPadding * 2, - marginInlineEnd: -token2.switchPadding * 2 - } - }, - [`&${componentCls}-checked ${switchInnerCls}`]: { - [`${switchInnerCls}-checked`]: { - marginInlineStart: -token2.switchPadding * 2, - marginInlineEnd: token2.switchPadding * 2 - } - } - } - } - }; -}; -var genSwitchStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "inline-block", - boxSizing: "border-box", - minWidth: token2.switchMinWidth, - height: token2.switchHeight, - lineHeight: `${token2.switchHeight}px`, - verticalAlign: "middle", - background: token2.colorTextQuaternary, - border: "0", - borderRadius: 100, - cursor: "pointer", - transition: `all ${token2.motionDurationMid}`, - userSelect: "none", - [`&:hover:not(${componentCls}-disabled)`]: { - background: token2.colorTextTertiary - } - }), genFocusStyle(token2)), { - [`&${componentCls}-checked`]: { - background: token2.switchColor, - [`&:hover:not(${componentCls}-disabled)`]: { - background: token2.colorPrimaryHover - } - }, - [`&${componentCls}-loading, &${componentCls}-disabled`]: { - cursor: "not-allowed", - opacity: token2.switchDisabledOpacity, - "*": { - boxShadow: "none", - cursor: "not-allowed" - } - }, - // rtl style - [`&${componentCls}-rtl`]: { - direction: "rtl" - } - }) - }; -}; -var style_default53 = genComponentStyleHook("Switch", (token2) => { - const switchHeight = token2.fontSize * token2.lineHeight; - const switchHeightSM = token2.controlHeight / 2; - const switchPadding = 2; - const switchPinSize = switchHeight - switchPadding * 2; - const switchPinSizeSM = switchHeightSM - switchPadding * 2; - const switchToken = merge(token2, { - switchMinWidth: switchPinSize * 2 + switchPadding * 4, - switchHeight, - switchDuration: token2.motionDurationMid, - switchColor: token2.colorPrimary, - switchDisabledOpacity: token2.opacityLoading, - switchInnerMarginMin: switchPinSize / 2, - switchInnerMarginMax: switchPinSize + switchPadding + switchPadding * 2, - switchPadding, - switchPinSize, - switchBg: token2.colorBgContainer, - switchMinWidthSM: switchPinSizeSM * 2 + switchPadding * 2, - switchHeightSM, - switchInnerMarginMinSM: switchPinSizeSM / 2, - switchInnerMarginMaxSM: switchPinSizeSM + switchPadding + switchPadding * 2, - switchPinSizeSM, - switchHandleShadow: `0 2px 4px 0 ${new TinyColor("#00230b").setAlpha(0.2).toRgbString()}`, - switchLoadingIconSize: token2.fontSizeIcon * 0.75, - switchLoadingIconColor: `rgba(0, 0, 0, ${token2.opacityLoading})`, - switchHandleActiveInset: "-30%" - }); - return [ - genSwitchStyle(switchToken), - // inner style - genSwitchInnerStyle(switchToken), - // handle style - genSwitchHandleStyle(switchToken), - // loading style - genSwitchLoadingStyle(switchToken), - // small style - genSwitchSmallStyle(switchToken) - ]; -}); - -// node_modules/ant-design-vue/es/switch/index.js -var SwitchSizes = tuple("small", "default"); -var switchProps = () => ({ - id: String, - prefixCls: String, - size: vue_types_default.oneOf(SwitchSizes), - disabled: { - type: Boolean, - default: void 0 - }, - checkedChildren: vue_types_default.any, - unCheckedChildren: vue_types_default.any, - tabindex: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number]), - autofocus: { - type: Boolean, - default: void 0 - }, - loading: { - type: Boolean, - default: void 0 - }, - checked: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number, vue_types_default.looseBool]), - checkedValue: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number, vue_types_default.looseBool]).def(true), - unCheckedValue: vue_types_default.oneOfType([vue_types_default.string, vue_types_default.number, vue_types_default.looseBool]).def(false), - onChange: { - type: Function - }, - onClick: { - type: Function - }, - onKeydown: { - type: Function - }, - onMouseup: { - type: Function - }, - "onUpdate:checked": { - type: Function - }, - onBlur: Function, - onFocus: Function -}); -var Switch = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ASwitch", - __ANT_SWITCH: true, - inheritAttrs: false, - props: switchProps(), - slots: Object, - // emits: ['update:checked', 'mouseup', 'change', 'click', 'keydown', 'blur'], - setup(props4, _ref) { - let { - attrs, - slots, - expose, - emit - } = _ref; - const formItemContext = useInjectFormItemContext(); - const disabledContext = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = props4.disabled) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - onBeforeMount(() => { - warning_default2(!("defaultChecked" in attrs), "Switch", `'defaultChecked' is deprecated, please use 'v-model:checked'`); - warning_default2(!("value" in attrs), "Switch", "`value` is not validate prop, do you mean `checked`?"); - }); - const checked = ref(props4.checked !== void 0 ? props4.checked : attrs.defaultChecked); - const checkedStatus = computed(() => checked.value === props4.checkedValue); - watch(() => props4.checked, () => { - checked.value = props4.checked; - }); - const { - prefixCls, - direction, - size: size2 - } = useConfigInject_default("switch", props4); - const [wrapSSR, hashId] = style_default53(prefixCls); - const refSwitchNode = ref(); - const focus = () => { - var _a2; - (_a2 = refSwitchNode.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }; - const blur = () => { - var _a2; - (_a2 = refSwitchNode.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }; - expose({ - focus, - blur - }); - onMounted(() => { - nextTick(() => { - if (props4.autofocus && !mergedDisabled.value) { - refSwitchNode.value.focus(); - } - }); - }); - const setChecked = (check, e3) => { - if (mergedDisabled.value) { - return; - } - emit("update:checked", check); - emit("change", check, e3); - formItemContext.onFieldChange(); - }; - const handleBlur = (e3) => { - emit("blur", e3); - }; - const handleClick = (e3) => { - focus(); - const newChecked = checkedStatus.value ? props4.unCheckedValue : props4.checkedValue; - setChecked(newChecked, e3); - emit("click", newChecked, e3); - }; - const handleKeyDown = (e3) => { - if (e3.keyCode === KeyCode_default.LEFT) { - setChecked(props4.unCheckedValue, e3); - } else if (e3.keyCode === KeyCode_default.RIGHT) { - setChecked(props4.checkedValue, e3); - } - emit("keydown", e3); - }; - const handleMouseUp = (e3) => { - var _a2; - (_a2 = refSwitchNode.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - emit("mouseup", e3); - }; - const classNames2 = computed(() => ({ - [`${prefixCls.value}-small`]: size2.value === "small", - [`${prefixCls.value}-loading`]: props4.loading, - [`${prefixCls.value}-checked`]: checkedStatus.value, - [`${prefixCls.value}-disabled`]: mergedDisabled.value, - [prefixCls.value]: true, - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [hashId.value]: true - })); - return () => { - var _a2; - return wrapSSR(createVNode(wave_default, null, { - default: () => [createVNode("button", _objectSpread2(_objectSpread2(_objectSpread2({}, omit_default(props4, ["prefixCls", "checkedChildren", "unCheckedChildren", "checked", "autofocus", "checkedValue", "unCheckedValue", "id", "onChange", "onUpdate:checked"])), attrs), {}, { - "id": (_a2 = props4.id) !== null && _a2 !== void 0 ? _a2 : formItemContext.id.value, - "onKeydown": handleKeyDown, - "onClick": handleClick, - "onBlur": handleBlur, - "onMouseup": handleMouseUp, - "type": "button", - "role": "switch", - "aria-checked": checked.value, - "disabled": mergedDisabled.value || props4.loading, - "class": [attrs.class, classNames2.value], - "ref": refSwitchNode - }), [createVNode("div", { - "class": `${prefixCls.value}-handle` - }, [props4.loading ? createVNode(LoadingOutlined_default, { - "class": `${prefixCls.value}-loading-icon` - }, null) : null]), createVNode("span", { - "class": `${prefixCls.value}-inner` - }, [createVNode("span", { - "class": `${prefixCls.value}-inner-checked` - }, [getPropsSlot(slots, props4, "checkedChildren")]), createVNode("span", { - "class": `${prefixCls.value}-inner-unchecked` - }, [getPropsSlot(slots, props4, "unCheckedChildren")])])])] - })); - }; - } -}); -var switch_default = withInstall(Switch); - -// node_modules/ant-design-vue/es/vc-table/context/TableContext.js -var TableContextKey = Symbol("TableContextProps"); -var useProvideTable = (props4) => { - provide(TableContextKey, props4); -}; -var useInjectTable = () => { - return inject(TableContextKey, {}); -}; - -// node_modules/ant-design-vue/es/vc-table/utils/valueUtil.js -var INTERNAL_KEY_PREFIX = "RC_TABLE_KEY"; -function toArray8(arr) { - if (arr === void 0 || arr === null) { - return []; - } - return Array.isArray(arr) ? arr : [arr]; -} -function getPathValue(record, path2) { - if (!path2 && typeof path2 !== "number") { - return record; - } - const pathList = toArray8(path2); - let current = record; - for (let i3 = 0; i3 < pathList.length; i3 += 1) { - if (!current) { - return null; - } - const prop = pathList[i3]; - current = current[prop]; - } - return current; -} -function getColumnsKey(columns) { - const columnKeys = []; - const keys2 = {}; - columns.forEach((column2) => { - const { - key: key2, - dataIndex - } = column2 || {}; - let mergedKey = key2 || toArray8(dataIndex).join("-") || INTERNAL_KEY_PREFIX; - while (keys2[mergedKey]) { - mergedKey = `${mergedKey}_next`; - } - keys2[mergedKey] = true; - columnKeys.push(mergedKey); - }); - return columnKeys; -} -function mergeObject() { - const merged = {}; - function fillProps(obj, clone3) { - if (clone3) { - Object.keys(clone3).forEach((key2) => { - const value = clone3[key2]; - if (value && typeof value === "object") { - obj[key2] = obj[key2] || {}; - fillProps(obj[key2], value); - } else { - obj[key2] = value; - } - }); - } - } - for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) { - objects[_key] = arguments[_key]; - } - objects.forEach((clone3) => { - fillProps(merged, clone3); - }); - return merged; -} -function validateValue(val) { - return val !== null && val !== void 0; -} - -// node_modules/ant-design-vue/es/table/context.js -var SlotsContextKey = Symbol("SlotsContextProps"); -var useProvideSlots = (props4) => { - provide(SlotsContextKey, props4); -}; -var useInjectSlots = () => { - return inject(SlotsContextKey, computed(() => ({}))); -}; -var ContextKey2 = Symbol("ContextProps"); -var useProvideTableContext = (props4) => { - provide(ContextKey2, props4); -}; -var useInjectTableContext = () => { - return inject(ContextKey2, { - onResizeColumn: () => { - } - }); -}; - -// node_modules/ant-design-vue/es/vc-table/utils/legacyUtil.js -var INTERNAL_COL_DEFINE = "RC_TABLE_INTERNAL_COL_DEFINE"; - -// node_modules/ant-design-vue/es/vc-table/context/HoverContext.js -var HoverContextKey = Symbol("HoverContextProps"); -var useProvideHover = (props4) => { - provide(HoverContextKey, props4); -}; -var useInjectHover = () => { - return inject(HoverContextKey, { - startRow: shallowRef(-1), - endRow: shallowRef(-1), - onHover() { - } - }); -}; - -// node_modules/ant-design-vue/es/vc-table/context/StickyContext.js -var supportSticky = shallowRef(false); -var useProvideSticky = () => { - onMounted(() => { - supportSticky.value = supportSticky.value || styleChecker_default("position", "sticky"); - }); -}; -var useInjectSticky = () => { - return supportSticky; -}; - -// node_modules/ant-design-vue/es/vc-table/Cell/index.js -var __rest63 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function inHoverRange(cellStartRow, cellRowSpan, startRow, endRow) { - const cellEndRow = cellStartRow + cellRowSpan - 1; - return cellStartRow <= endRow && cellEndRow >= startRow; -} -function isRenderCell(data) { - return data && typeof data === "object" && !Array.isArray(data) && !isVNode(data); -} -var Cell_default2 = defineComponent({ - name: "Cell", - props: ["prefixCls", "record", "index", "renderIndex", "dataIndex", "customRender", "component", "colSpan", "rowSpan", "fixLeft", "fixRight", "firstFixLeft", "lastFixLeft", "firstFixRight", "lastFixRight", "appendNode", "additionalProps", "ellipsis", "align", "rowType", "isSticky", "column", "cellType", "transformCellText"], - setup(props4, _ref) { - let { - slots - } = _ref; - const contextSlots = useInjectSlots(); - const { - onHover, - startRow, - endRow - } = useInjectHover(); - const colSpan = computed(() => { - var _a2, _b, _c, _d; - return (_c = (_a2 = props4.colSpan) !== null && _a2 !== void 0 ? _a2 : (_b = props4.additionalProps) === null || _b === void 0 ? void 0 : _b.colSpan) !== null && _c !== void 0 ? _c : (_d = props4.additionalProps) === null || _d === void 0 ? void 0 : _d.colspan; - }); - const rowSpan = computed(() => { - var _a2, _b, _c, _d; - return (_c = (_a2 = props4.rowSpan) !== null && _a2 !== void 0 ? _a2 : (_b = props4.additionalProps) === null || _b === void 0 ? void 0 : _b.rowSpan) !== null && _c !== void 0 ? _c : (_d = props4.additionalProps) === null || _d === void 0 ? void 0 : _d.rowspan; - }); - const hovering = eagerComputed(() => { - const { - index: index3 - } = props4; - return inHoverRange(index3, rowSpan.value || 1, startRow.value, endRow.value); - }); - const supportSticky2 = useInjectSticky(); - const onMouseenter = (event, mergedRowSpan) => { - var _a2; - const { - record, - index: index3, - additionalProps - } = props4; - if (record) { - onHover(index3, index3 + mergedRowSpan - 1); - } - (_a2 = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps.onMouseenter) === null || _a2 === void 0 ? void 0 : _a2.call(additionalProps, event); - }; - const onMouseleave = (event) => { - var _a2; - const { - record, - additionalProps - } = props4; - if (record) { - onHover(-1, -1); - } - (_a2 = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps.onMouseleave) === null || _a2 === void 0 ? void 0 : _a2.call(additionalProps, event); - }; - const getTitle = (vnodes) => { - const vnode = filterEmpty(vnodes)[0]; - if (isVNode(vnode)) { - if (vnode.type === Text) { - return vnode.children; - } else { - return Array.isArray(vnode.children) ? getTitle(vnode.children) : void 0; - } - } else { - return vnode; - } - }; - return () => { - var _a2, _b, _c, _d, _e, _f; - const { - prefixCls, - record, - index: index3, - renderIndex, - dataIndex, - customRender, - component: Component = "td", - fixLeft, - fixRight, - firstFixLeft, - lastFixLeft, - firstFixRight, - lastFixRight, - appendNode = (_a2 = slots.appendNode) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - additionalProps = {}, - ellipsis, - align, - rowType, - isSticky, - column: column2 = {}, - cellType - } = props4; - const cellPrefixCls = `${prefixCls}-cell`; - let cellProps; - let childNode; - const children = (_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots); - if (validateValue(children) || cellType === "header") { - childNode = children; - } else { - const value = getPathValue(record, dataIndex); - childNode = value; - if (customRender) { - const renderData = customRender({ - text: value, - value, - record, - index: index3, - renderIndex, - column: column2.__originColumn__ - }); - if (isRenderCell(renderData)) { - if (true) { - warning(false, "`columns.customRender` return cell props is deprecated with perf issue, please use `customCell` instead."); - } - childNode = renderData.children; - cellProps = renderData.props; - } else { - childNode = renderData; - } - } - if (!(INTERNAL_COL_DEFINE in column2) && cellType === "body" && contextSlots.value.bodyCell && !((_c = column2.slots) === null || _c === void 0 ? void 0 : _c.customRender)) { - const child = customRenderSlot(contextSlots.value, "bodyCell", { - text: value, - value, - record, - index: index3, - column: column2.__originColumn__ - }, () => { - const fallback = childNode === void 0 ? value : childNode; - return [typeof fallback === "object" && isValidElement(fallback) || typeof fallback !== "object" ? fallback : null]; - }); - childNode = flattenChildren(child); - } - if (props4.transformCellText) { - childNode = props4.transformCellText({ - text: childNode, - record, - index: index3, - column: column2.__originColumn__ - }); - } - } - if (typeof childNode === "object" && !Array.isArray(childNode) && !isVNode(childNode)) { - childNode = null; - } - if (ellipsis && (lastFixLeft || firstFixRight)) { - const _childNode = /* @__PURE__ */ function() { - return childNode; - }(); - childNode = createVNode("span", { - "class": `${cellPrefixCls}-content` - }, [childNode]); - } - if (Array.isArray(childNode) && childNode.length === 1) { - childNode = childNode[0]; - } - const _g = cellProps || {}, { - colSpan: cellColSpan, - rowSpan: cellRowSpan, - style: cellStyle, - class: cellClassName - } = _g, restCellProps = __rest63(_g, ["colSpan", "rowSpan", "style", "class"]); - const mergedColSpan = (_d = cellColSpan !== void 0 ? cellColSpan : colSpan.value) !== null && _d !== void 0 ? _d : 1; - const mergedRowSpan = (_e = cellRowSpan !== void 0 ? cellRowSpan : rowSpan.value) !== null && _e !== void 0 ? _e : 1; - if (mergedColSpan === 0 || mergedRowSpan === 0) { - return null; - } - const fixedStyle = {}; - const isFixLeft = typeof fixLeft === "number" && supportSticky2.value; - const isFixRight = typeof fixRight === "number" && supportSticky2.value; - if (isFixLeft) { - fixedStyle.position = "sticky"; - fixedStyle.left = `${fixLeft}px`; - } - if (isFixRight) { - fixedStyle.position = "sticky"; - fixedStyle.right = `${fixRight}px`; - } - const alignStyle = {}; - if (align) { - alignStyle.textAlign = align; - } - let title; - const ellipsisConfig = ellipsis === true ? { - showTitle: true - } : ellipsis; - if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === "header")) { - if (typeof childNode === "string" || typeof childNode === "number") { - title = childNode.toString(); - } else if (isVNode(childNode)) { - title = getTitle([childNode]); - } - } - const componentProps = _extends(_extends(_extends({ - title - }, restCellProps), additionalProps), { - colSpan: mergedColSpan !== 1 ? mergedColSpan : null, - rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null, - class: classNames_default(cellPrefixCls, { - [`${cellPrefixCls}-fix-left`]: isFixLeft && supportSticky2.value, - [`${cellPrefixCls}-fix-left-first`]: firstFixLeft && supportSticky2.value, - [`${cellPrefixCls}-fix-left-last`]: lastFixLeft && supportSticky2.value, - [`${cellPrefixCls}-fix-right`]: isFixRight && supportSticky2.value, - [`${cellPrefixCls}-fix-right-first`]: firstFixRight && supportSticky2.value, - [`${cellPrefixCls}-fix-right-last`]: lastFixRight && supportSticky2.value, - [`${cellPrefixCls}-ellipsis`]: ellipsis, - [`${cellPrefixCls}-with-append`]: appendNode, - [`${cellPrefixCls}-fix-sticky`]: (isFixLeft || isFixRight) && isSticky && supportSticky2.value, - [`${cellPrefixCls}-row-hover`]: !cellProps && hovering.value - }, additionalProps.class, cellClassName), - onMouseenter: (e3) => { - onMouseenter(e3, mergedRowSpan); - }, - onMouseleave, - style: [additionalProps.style, alignStyle, fixedStyle, cellStyle] - }); - return createVNode(Component, componentProps, { - default: () => [appendNode, childNode, (_f = slots.dragHandle) === null || _f === void 0 ? void 0 : _f.call(slots)] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/utils/fixUtil.js -function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction) { - const startColumn = columns[colStart] || {}; - const endColumn = columns[colEnd] || {}; - let fixLeft; - let fixRight; - if (startColumn.fixed === "left") { - fixLeft = stickyOffsets.left[colStart]; - } else if (endColumn.fixed === "right") { - fixRight = stickyOffsets.right[colEnd]; - } - let lastFixLeft = false; - let firstFixRight = false; - let lastFixRight = false; - let firstFixLeft = false; - const nextColumn = columns[colEnd + 1]; - const prevColumn = columns[colStart - 1]; - if (direction === "rtl") { - if (fixLeft !== void 0) { - const prevFixLeft = prevColumn && prevColumn.fixed === "left"; - firstFixLeft = !prevFixLeft; - } else if (fixRight !== void 0) { - const nextFixRight = nextColumn && nextColumn.fixed === "right"; - lastFixRight = !nextFixRight; - } - } else if (fixLeft !== void 0) { - const nextFixLeft = nextColumn && nextColumn.fixed === "left"; - lastFixLeft = !nextFixLeft; - } else if (fixRight !== void 0) { - const prevFixRight = prevColumn && prevColumn.fixed === "right"; - firstFixRight = !prevFixRight; - } - return { - fixLeft, - fixRight, - lastFixLeft, - firstFixRight, - lastFixRight, - firstFixLeft, - isSticky: stickyOffsets.isSticky - }; -} - -// node_modules/ant-design-vue/es/vc-table/Header/DragHandle.js -var events = { - mouse: { - start: "mousedown", - move: "mousemove", - stop: "mouseup" - }, - touch: { - start: "touchstart", - move: "touchmove", - stop: "touchend" - } -}; -var defaultMinWidth = 50; -var DragHandle_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "DragHandle", - props: { - prefixCls: String, - width: { - type: Number, - required: true - }, - minWidth: { - type: Number, - default: defaultMinWidth - }, - maxWidth: { - type: Number, - default: Infinity - }, - column: { - type: Object, - default: void 0 - } - }, - setup(props4) { - let startX = 0; - let moveEvent = { - remove: () => { - } - }; - let stopEvent = { - remove: () => { - } - }; - const removeEvents = () => { - moveEvent.remove(); - stopEvent.remove(); - }; - onUnmounted(() => { - removeEvents(); - }); - watchEffect(() => { - devWarning_default(!isNaN(props4.width), "Table", "width must be a number when use resizable"); - }); - const { - onResizeColumn - } = useInjectTableContext(); - const minWidth = computed(() => { - return typeof props4.minWidth === "number" && !isNaN(props4.minWidth) ? props4.minWidth : defaultMinWidth; - }); - const maxWidth = computed(() => { - return typeof props4.maxWidth === "number" && !isNaN(props4.maxWidth) ? props4.maxWidth : Infinity; - }); - const instance = getCurrentInstance(); - let baseWidth = 0; - const dragging = shallowRef(false); - let rafId; - const updateWidth = (e3) => { - let pageX = 0; - if (e3.touches) { - if (e3.touches.length) { - pageX = e3.touches[0].pageX; - } else { - pageX = e3.changedTouches[0].pageX; - } - } else { - pageX = e3.pageX; - } - const tmpDeltaX = startX - pageX; - let w2 = Math.max(baseWidth - tmpDeltaX, minWidth.value); - w2 = Math.min(w2, maxWidth.value); - wrapperRaf.cancel(rafId); - rafId = wrapperRaf(() => { - onResizeColumn(w2, props4.column.__originColumn__); - }); - }; - const handleMove = (e3) => { - updateWidth(e3); - }; - const handleStop = (e3) => { - dragging.value = false; - updateWidth(e3); - removeEvents(); - }; - const handleStart = (e3, eventsFor) => { - dragging.value = true; - removeEvents(); - baseWidth = instance.vnode.el.parentNode.getBoundingClientRect().width; - if (e3 instanceof MouseEvent && e3.which !== 1) { - return; - } - if (e3.stopPropagation) e3.stopPropagation(); - startX = e3.touches ? e3.touches[0].pageX : e3.pageX; - moveEvent = addEventListenerWrap(document.documentElement, eventsFor.move, handleMove); - stopEvent = addEventListenerWrap(document.documentElement, eventsFor.stop, handleStop); - }; - const handleDown = (e3) => { - e3.stopPropagation(); - e3.preventDefault(); - handleStart(e3, events.mouse); - }; - const handleTouchDown = (e3) => { - e3.stopPropagation(); - e3.preventDefault(); - handleStart(e3, events.touch); - }; - const handleClick = (e3) => { - e3.stopPropagation(); - e3.preventDefault(); - }; - return () => { - const { - prefixCls - } = props4; - const touchEvents = { - [supportsPassive_default ? "onTouchstartPassive" : "onTouchstart"]: (e3) => handleTouchDown(e3) - }; - return createVNode("div", _objectSpread2(_objectSpread2({ - "class": `${prefixCls}-resize-handle ${dragging.value ? "dragging" : ""}`, - "onMousedown": handleDown - }, touchEvents), {}, { - "onClick": handleClick - }), [createVNode("div", { - "class": `${prefixCls}-resize-handle-line` - }, null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/Header/HeaderRow.js -var HeaderRow_default = defineComponent({ - name: "HeaderRow", - props: ["cells", "stickyOffsets", "flattenColumns", "rowComponent", "cellComponent", "index", "customHeaderRow"], - setup(props4) { - const tableContext = useInjectTable(); - return () => { - const { - prefixCls, - direction - } = tableContext; - const { - cells, - stickyOffsets, - flattenColumns, - rowComponent: RowComponent, - cellComponent: CellComponent, - customHeaderRow, - index: index3 - } = props4; - let rowProps2; - if (customHeaderRow) { - rowProps2 = customHeaderRow(cells.map((cell) => cell.column), index3); - } - const columnsKey = getColumnsKey(cells.map((cell) => cell.column)); - return createVNode(RowComponent, rowProps2, { - default: () => [cells.map((cell, cellIndex) => { - const { - column: column2 - } = cell; - const fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction); - let additionalProps; - if (column2 && column2.customHeaderCell) { - additionalProps = cell.column.customHeaderCell(column2); - } - const col = column2; - return createVNode(Cell_default2, _objectSpread2(_objectSpread2(_objectSpread2({}, cell), {}, { - "cellType": "header", - "ellipsis": column2.ellipsis, - "align": column2.align, - "component": CellComponent, - "prefixCls": prefixCls, - "key": columnsKey[cellIndex] - }, fixedInfo), {}, { - "additionalProps": additionalProps, - "rowType": "header", - "column": column2 - }), { - default: () => column2.title, - dragHandle: () => col.resizable ? createVNode(DragHandle_default, { - "prefixCls": prefixCls, - "width": col.width, - "minWidth": col.minWidth, - "maxWidth": col.maxWidth, - "column": col - }, null) : null - }); - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/Header/Header.js -function parseHeaderRows(rootColumns) { - const rows = []; - function fillRowCells(columns, colIndex) { - let rowIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - rows[rowIndex] = rows[rowIndex] || []; - let currentColIndex = colIndex; - const colSpans = columns.filter(Boolean).map((column2) => { - const cell = { - key: column2.key, - class: classNames_default(column2.className, column2.class), - // children: column.title, - column: column2, - colStart: currentColIndex - }; - let colSpan = 1; - const subColumns = column2.children; - if (subColumns && subColumns.length > 0) { - colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce((total, count) => total + count, 0); - cell.hasSubColumns = true; - } - if ("colSpan" in column2) { - ({ - colSpan - } = column2); - } - if ("rowSpan" in column2) { - cell.rowSpan = column2.rowSpan; - } - cell.colSpan = colSpan; - cell.colEnd = cell.colStart + colSpan - 1; - rows[rowIndex].push(cell); - currentColIndex += colSpan; - return colSpan; - }); - return colSpans; - } - fillRowCells(rootColumns, 0); - const rowCount = rows.length; - for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) { - rows[rowIndex].forEach((cell) => { - if (!("rowSpan" in cell) && !cell.hasSubColumns) { - cell.rowSpan = rowCount - rowIndex; - } - }); - } - return rows; -} -var Header_default3 = defineComponent({ - name: "TableHeader", - inheritAttrs: false, - props: ["columns", "flattenColumns", "stickyOffsets", "customHeaderRow"], - setup(props4) { - const tableContext = useInjectTable(); - const rows = computed(() => parseHeaderRows(props4.columns)); - return () => { - const { - prefixCls, - getComponent: getComponent2 - } = tableContext; - const { - stickyOffsets, - flattenColumns, - customHeaderRow - } = props4; - const WrapperComponent = getComponent2(["header", "wrapper"], "thead"); - const trComponent = getComponent2(["header", "row"], "tr"); - const thComponent = getComponent2(["header", "cell"], "th"); - return createVNode(WrapperComponent, { - "class": `${prefixCls}-thead` - }, { - default: () => [rows.value.map((row, rowIndex) => { - const rowNode = createVNode(HeaderRow_default, { - "key": rowIndex, - "flattenColumns": flattenColumns, - "cells": row, - "stickyOffsets": stickyOffsets, - "rowComponent": trComponent, - "cellComponent": thComponent, - "customHeaderRow": customHeaderRow, - "index": rowIndex - }, null); - return rowNode; - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/context/ExpandedRowContext.js -var ExpandedRowContextKey = Symbol("ExpandedRowProps"); -var useProvideExpandedRow = (props4) => { - provide(ExpandedRowContextKey, props4); -}; -var useInjectExpandedRow = () => { - return inject(ExpandedRowContextKey, {}); -}; - -// node_modules/ant-design-vue/es/vc-table/Body/ExpandedRow.js -var ExpandedRow_default = defineComponent({ - name: "ExpandedRow", - inheritAttrs: false, - props: ["prefixCls", "component", "cellComponent", "expanded", "colSpan", "isEmpty"], - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const tableContext = useInjectTable(); - const expandedRowContext = useInjectExpandedRow(); - const { - fixHeader, - fixColumn, - componentWidth, - horizonScroll - } = expandedRowContext; - return () => { - const { - prefixCls, - component: Component, - cellComponent, - expanded, - colSpan, - isEmpty: isEmpty3 - } = props4; - return createVNode(Component, { - "class": attrs.class, - "style": { - display: expanded ? null : "none" - } - }, { - default: () => [createVNode(Cell_default2, { - "component": cellComponent, - "prefixCls": prefixCls, - "colSpan": colSpan - }, { - default: () => { - var _a2; - let contentNode = (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - if (isEmpty3 ? horizonScroll.value : fixColumn.value) { - const _contentNode = /* @__PURE__ */ function() { - return contentNode; - }(); - contentNode = createVNode("div", { - "style": { - width: `${componentWidth.value - (fixHeader.value ? tableContext.scrollbarSize : 0)}px`, - position: "sticky", - left: 0, - overflow: "hidden" - }, - "class": `${prefixCls}-expanded-row-fixed` - }, [contentNode]); - } - return contentNode; - } - })] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/Body/MeasureCell.js -var MeasureCell_default = defineComponent({ - name: "MeasureCell", - props: ["columnKey"], - setup(props4, _ref) { - let { - emit - } = _ref; - const tdRef = ref(); - onMounted(() => { - if (tdRef.value) { - emit("columnResize", props4.columnKey, tdRef.value.offsetWidth); - } - }); - return () => { - return createVNode(vc_resize_observer_default, { - "onResize": (_ref2) => { - let { - offsetWidth - } = _ref2; - emit("columnResize", props4.columnKey, offsetWidth); - } - }, { - default: () => [createVNode("td", { - "ref": tdRef, - "style": { - padding: 0, - border: 0, - height: 0 - } - }, [createVNode("div", { - "style": { - height: 0, - overflow: "hidden" - } - }, [createTextVNode(" ")])])] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/context/BodyContext.js -var BodyContextKey = Symbol("BodyContextProps"); -var useProvideBody = (props4) => { - provide(BodyContextKey, props4); -}; -var useInjectBody = () => { - return inject(BodyContextKey, {}); -}; - -// node_modules/ant-design-vue/es/vc-table/Body/BodyRow.js -var BodyRow_default = defineComponent({ - name: "BodyRow", - inheritAttrs: false, - props: ["record", "index", "renderIndex", "recordKey", "expandedKeys", "rowComponent", "cellComponent", "customRow", "rowExpandable", "indent", "rowKey", "getRowKey", "childrenColumnName"], - setup(props4, _ref) { - let { - attrs - } = _ref; - const tableContext = useInjectTable(); - const bodyContext = useInjectBody(); - const expandRended = shallowRef(false); - const expanded = computed(() => props4.expandedKeys && props4.expandedKeys.has(props4.recordKey)); - watchEffect(() => { - if (expanded.value) { - expandRended.value = true; - } - }); - const rowSupportExpand = computed(() => bodyContext.expandableType === "row" && (!props4.rowExpandable || props4.rowExpandable(props4.record))); - const nestExpandable = computed(() => bodyContext.expandableType === "nest"); - const hasNestChildren = computed(() => props4.childrenColumnName && props4.record && props4.record[props4.childrenColumnName]); - const mergedExpandable = computed(() => rowSupportExpand.value || nestExpandable.value); - const onInternalTriggerExpand = (record, event) => { - bodyContext.onTriggerExpand(record, event); - }; - const additionalProps = computed(() => { - var _a2; - return ((_a2 = props4.customRow) === null || _a2 === void 0 ? void 0 : _a2.call(props4, props4.record, props4.index)) || {}; - }); - const onClick = function(event) { - var _a2, _b; - if (bodyContext.expandRowByClick && mergedExpandable.value) { - onInternalTriggerExpand(props4.record, event); - } - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - (_b = (_a2 = additionalProps.value) === null || _a2 === void 0 ? void 0 : _a2.onClick) === null || _b === void 0 ? void 0 : _b.call(_a2, event, ...args); - }; - const computeRowClassName = computed(() => { - const { - record, - index: index3, - indent - } = props4; - const { - rowClassName - } = bodyContext; - if (typeof rowClassName === "string") { - return rowClassName; - } else if (typeof rowClassName === "function") { - return rowClassName(record, index3, indent); - } - return ""; - }); - const columnsKey = computed(() => getColumnsKey(bodyContext.flattenColumns)); - return () => { - const { - class: className, - style - } = attrs; - const { - record, - index: index3, - rowKey, - indent = 0, - rowComponent: RowComponent, - cellComponent - } = props4; - const { - prefixCls, - fixedInfoList, - transformCellText - } = tableContext; - const { - flattenColumns, - expandedRowClassName, - indentSize, - expandIcon, - expandedRowRender, - expandIconColumnIndex - } = bodyContext; - const baseRowNode = createVNode(RowComponent, _objectSpread2(_objectSpread2({}, additionalProps.value), {}, { - "data-row-key": rowKey, - "class": classNames_default(className, `${prefixCls}-row`, `${prefixCls}-row-level-${indent}`, computeRowClassName.value, additionalProps.value.class), - "style": [style, additionalProps.value.style], - "onClick": onClick - }), { - default: () => [flattenColumns.map((column2, colIndex) => { - const { - customRender, - dataIndex, - className: columnClassName - } = column2; - const key2 = columnsKey[colIndex]; - const fixedInfo = fixedInfoList[colIndex]; - let additionalCellProps; - if (column2.customCell) { - additionalCellProps = column2.customCell(record, index3, column2); - } - const appendNode = colIndex === (expandIconColumnIndex || 0) && nestExpandable.value ? createVNode(Fragment, null, [createVNode("span", { - "style": { - paddingLeft: `${indentSize * indent}px` - }, - "class": `${prefixCls}-row-indent indent-level-${indent}` - }, null), expandIcon({ - prefixCls, - expanded: expanded.value, - expandable: hasNestChildren.value, - record, - onExpand: onInternalTriggerExpand - })]) : null; - return createVNode(Cell_default2, _objectSpread2(_objectSpread2({ - "cellType": "body", - "class": columnClassName, - "ellipsis": column2.ellipsis, - "align": column2.align, - "component": cellComponent, - "prefixCls": prefixCls, - "key": key2, - "record": record, - "index": index3, - "renderIndex": props4.renderIndex, - "dataIndex": dataIndex, - "customRender": customRender - }, fixedInfo), {}, { - "additionalProps": additionalCellProps, - "column": column2, - "transformCellText": transformCellText, - "appendNode": appendNode - }), null); - })] - }); - let expandRowNode; - if (rowSupportExpand.value && (expandRended.value || expanded.value)) { - const expandContent = expandedRowRender({ - record, - index: index3, - indent: indent + 1, - expanded: expanded.value - }); - const computedExpandedRowClassName = expandedRowClassName && expandedRowClassName(record, index3, indent); - expandRowNode = createVNode(ExpandedRow_default, { - "expanded": expanded.value, - "class": classNames_default(`${prefixCls}-expanded-row`, `${prefixCls}-expanded-row-level-${indent + 1}`, computedExpandedRowClassName), - "prefixCls": prefixCls, - "component": RowComponent, - "cellComponent": cellComponent, - "colSpan": flattenColumns.length, - "isEmpty": false - }, { - default: () => [expandContent] - }); - } - return createVNode(Fragment, null, [baseRowNode, expandRowNode]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/hooks/useFlattenRecords.js -function flatRecord(record, indent, childrenColumnName, expandedKeys, getRowKey, index3) { - const arr = []; - arr.push({ - record, - indent, - index: index3 - }); - const key2 = getRowKey(record); - const expanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(key2); - if (record && Array.isArray(record[childrenColumnName]) && expanded) { - for (let i3 = 0; i3 < record[childrenColumnName].length; i3 += 1) { - const tempArr = flatRecord(record[childrenColumnName][i3], indent + 1, childrenColumnName, expandedKeys, getRowKey, i3); - arr.push(...tempArr); - } - } - return arr; -} -function useFlattenRecords(dataRef, childrenColumnNameRef, expandedKeysRef, getRowKey) { - const arr = computed(() => { - const childrenColumnName = childrenColumnNameRef.value; - const expandedKeys = expandedKeysRef.value; - const data = dataRef.value; - if (expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.size) { - const temp = []; - for (let i3 = 0; i3 < (data === null || data === void 0 ? void 0 : data.length); i3 += 1) { - const record = data[i3]; - temp.push(...flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey.value, i3)); - } - return temp; - } - return data === null || data === void 0 ? void 0 : data.map((item, index3) => { - return { - record: item, - indent: 0, - index: index3 - }; - }); - }); - return arr; -} - -// node_modules/ant-design-vue/es/vc-table/context/ResizeContext.js -var ResizeContextKey = Symbol("ResizeContextProps"); -var useProvideResize = (props4) => { - provide(ResizeContextKey, props4); -}; -var useInjectResize = () => { - return inject(ResizeContextKey, { - onColumnResize: () => { - } - }); -}; - -// node_modules/ant-design-vue/es/vc-table/Body/index.js -var Body_default = defineComponent({ - name: "TableBody", - props: ["data", "getRowKey", "measureColumnWidth", "expandedKeys", "customRow", "rowExpandable", "childrenColumnName"], - setup(props4, _ref) { - let { - slots - } = _ref; - const resizeContext = useInjectResize(); - const tableContext = useInjectTable(); - const bodyContext = useInjectBody(); - const flattenData2 = useFlattenRecords(toRef(props4, "data"), toRef(props4, "childrenColumnName"), toRef(props4, "expandedKeys"), toRef(props4, "getRowKey")); - const startRow = shallowRef(-1); - const endRow = shallowRef(-1); - let timeoutId; - useProvideHover({ - startRow, - endRow, - onHover: (start, end) => { - clearTimeout(timeoutId); - timeoutId = setTimeout(() => { - startRow.value = start; - endRow.value = end; - }, 100); - } - }); - return () => { - var _a2; - const { - data, - getRowKey, - measureColumnWidth, - expandedKeys, - customRow, - rowExpandable, - childrenColumnName - } = props4; - const { - onColumnResize - } = resizeContext; - const { - prefixCls, - getComponent: getComponent2 - } = tableContext; - const { - flattenColumns - } = bodyContext; - const WrapperComponent = getComponent2(["body", "wrapper"], "tbody"); - const trComponent = getComponent2(["body", "row"], "tr"); - const tdComponent = getComponent2(["body", "cell"], "td"); - let rows; - if (data.length) { - rows = flattenData2.value.map((item, idx) => { - const { - record, - indent, - index: renderIndex - } = item; - const key2 = getRowKey(record, idx); - return createVNode(BodyRow_default, { - "key": key2, - "rowKey": key2, - "record": record, - "recordKey": key2, - "index": idx, - "renderIndex": renderIndex, - "rowComponent": trComponent, - "cellComponent": tdComponent, - "expandedKeys": expandedKeys, - "customRow": customRow, - "getRowKey": getRowKey, - "rowExpandable": rowExpandable, - "childrenColumnName": childrenColumnName, - "indent": indent - }, null); - }); - } else { - rows = createVNode(ExpandedRow_default, { - "expanded": true, - "class": `${prefixCls}-placeholder`, - "prefixCls": prefixCls, - "component": trComponent, - "cellComponent": tdComponent, - "colSpan": flattenColumns.length, - "isEmpty": true - }, { - default: () => [(_a2 = slots.emptyNode) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }); - } - const columnsKey = getColumnsKey(flattenColumns); - return createVNode(WrapperComponent, { - "class": `${prefixCls}-tbody` - }, { - default: () => [measureColumnWidth && createVNode("tr", { - "aria-hidden": "true", - "class": `${prefixCls}-measure-row`, - "style": { - height: 0, - fontSize: 0 - } - }, [columnsKey.map((columnKey) => createVNode(MeasureCell_default, { - "key": columnKey, - "columnKey": columnKey, - "onColumnResize": onColumnResize - }, null))]), rows] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/constant.js -var EXPAND_COLUMN = {}; - -// node_modules/ant-design-vue/es/vc-table/hooks/useColumns.js -var __rest64 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function flatColumns(columns) { - return columns.reduce((list, column2) => { - const { - fixed - } = column2; - const parsedFixed = fixed === true ? "left" : fixed; - const subColumns = column2.children; - if (subColumns && subColumns.length > 0) { - return [...list, ...flatColumns(subColumns).map((subColum) => _extends({ - fixed: parsedFixed - }, subColum))]; - } - return [...list, _extends(_extends({}, column2), { - fixed: parsedFixed - })]; - }, []); -} -function warningFixed(flattenColumns) { - let allFixLeft = true; - for (let i3 = 0; i3 < flattenColumns.length; i3 += 1) { - const col = flattenColumns[i3]; - if (allFixLeft && col.fixed !== "left") { - allFixLeft = false; - } else if (!allFixLeft && col.fixed === "left") { - warning(false, `Index ${i3 - 1} of \`columns\` missing \`fixed='left'\` prop.`); - break; - } - } - let allFixRight = true; - for (let i3 = flattenColumns.length - 1; i3 >= 0; i3 -= 1) { - const col = flattenColumns[i3]; - if (allFixRight && col.fixed !== "right") { - allFixRight = false; - } else if (!allFixRight && col.fixed === "right") { - warning(false, `Index ${i3 + 1} of \`columns\` missing \`fixed='right'\` prop.`); - break; - } - } -} -function revertForRtl(columns) { - return columns.map((column2) => { - const { - fixed - } = column2, restProps = __rest64(column2, ["fixed"]); - let parsedFixed = fixed; - if (fixed === "left") { - parsedFixed = "right"; - } else if (fixed === "right") { - parsedFixed = "left"; - } - return _extends({ - fixed: parsedFixed - }, restProps); - }); -} -function useColumns(_ref, transformColumns) { - let { - prefixCls, - columns: baseColumns, - // children, - expandable, - expandedKeys, - getRowKey, - onTriggerExpand, - expandIcon, - rowExpandable, - expandIconColumnIndex, - direction, - expandRowByClick, - expandColumnWidth, - expandFixed - } = _ref; - const contextSlots = useInjectSlots(); - const withExpandColumns = computed(() => { - if (expandable.value) { - let cloneColumns = baseColumns.value.slice(); - if (expandIconColumnIndex.value >= 0) { - warning(false, "`expandIconColumnIndex` is deprecated. Please use `Table.EXPAND_COLUMN` in `columns` instead."); - } - if (!cloneColumns.includes(EXPAND_COLUMN)) { - const expandColIndex = expandIconColumnIndex.value || 0; - if (expandColIndex >= 0) { - cloneColumns.splice(expandColIndex, 0, EXPAND_COLUMN); - } - } - if (cloneColumns.filter((c2) => c2 === EXPAND_COLUMN).length > 1) { - warning(false, "There exist more than one `EXPAND_COLUMN` in `columns`."); - } - const expandColumnIndex = cloneColumns.indexOf(EXPAND_COLUMN); - cloneColumns = cloneColumns.filter((column2, index3) => column2 !== EXPAND_COLUMN || index3 === expandColumnIndex); - const prevColumn = baseColumns.value[expandColumnIndex]; - let fixedColumn; - if ((expandFixed.value === "left" || expandFixed.value) && !expandIconColumnIndex.value) { - fixedColumn = "left"; - } else if ((expandFixed.value === "right" || expandFixed.value) && expandIconColumnIndex.value === baseColumns.value.length) { - fixedColumn = "right"; - } else { - fixedColumn = prevColumn ? prevColumn.fixed : null; - } - const expandedKeysValue = expandedKeys.value; - const rowExpandableValue = rowExpandable.value; - const expandIconValue = expandIcon.value; - const prefixClsValue = prefixCls.value; - const expandRowByClickValue = expandRowByClick.value; - const expandColumn = { - [INTERNAL_COL_DEFINE]: { - class: `${prefixCls.value}-expand-icon-col`, - columnType: "EXPAND_COLUMN" - }, - title: customRenderSlot(contextSlots.value, "expandColumnTitle", {}, () => [""]), - fixed: fixedColumn, - class: `${prefixCls.value}-row-expand-icon-cell`, - width: expandColumnWidth.value, - customRender: (_ref2) => { - let { - record, - index: index3 - } = _ref2; - const rowKey = getRowKey.value(record, index3); - const expanded = expandedKeysValue.has(rowKey); - const recordExpandable = rowExpandableValue ? rowExpandableValue(record) : true; - const icon = expandIconValue({ - prefixCls: prefixClsValue, - expanded, - expandable: recordExpandable, - record, - onExpand: onTriggerExpand - }); - if (expandRowByClickValue) { - return createVNode("span", { - "onClick": (e3) => e3.stopPropagation() - }, [icon]); - } - return icon; - } - }; - return cloneColumns.map((col) => col === EXPAND_COLUMN ? expandColumn : col); - } - if (baseColumns.value.includes(EXPAND_COLUMN)) { - warning(false, "`expandable` is not config but there exist `EXPAND_COLUMN` in `columns`."); - } - return baseColumns.value.filter((col) => col !== EXPAND_COLUMN); - }); - const mergedColumns = computed(() => { - let finalColumns = withExpandColumns.value; - if (transformColumns.value) { - finalColumns = transformColumns.value(finalColumns); - } - if (!finalColumns.length) { - finalColumns = [{ - customRender: () => null - }]; - } - return finalColumns; - }); - const flattenColumns = computed(() => { - if (direction.value === "rtl") { - return revertForRtl(flatColumns(mergedColumns.value)); - } - return flatColumns(mergedColumns.value); - }); - if (true) { - watchEffect(() => { - setTimeout(() => { - warningFixed(flattenColumns.value); - }); - }); - } - return [mergedColumns, flattenColumns]; -} -var useColumns_default = useColumns; - -// node_modules/ant-design-vue/es/vc-table/hooks/useFrame.js -function useLayoutState(defaultState) { - const stateRef = shallowRef(defaultState); - let rafId; - const updateBatchRef = shallowRef([]); - function setFrameState(updater) { - updateBatchRef.value.push(updater); - wrapperRaf.cancel(rafId); - rafId = wrapperRaf(() => { - const prevBatch = updateBatchRef.value; - updateBatchRef.value = []; - prevBatch.forEach((batchUpdater) => { - stateRef.value = batchUpdater(stateRef.value); - }); - }); - } - onBeforeUnmount(() => { - wrapperRaf.cancel(rafId); - }); - return [stateRef, setFrameState]; -} -function useTimeoutLock(defaultState) { - const frameRef = ref(defaultState || null); - const timeoutRef = ref(); - function cleanUp() { - clearTimeout(timeoutRef.value); - } - function setState(newState) { - frameRef.value = newState; - cleanUp(); - timeoutRef.value = setTimeout(() => { - frameRef.value = null; - timeoutRef.value = void 0; - }, 100); - } - function getState() { - return frameRef.value; - } - onBeforeUnmount(() => { - cleanUp(); - }); - return [setState, getState]; -} - -// node_modules/ant-design-vue/es/vc-table/hooks/useStickyOffsets.js -function useStickyOffsets(colWidthsRef, columnCountRef, directionRef) { - const stickyOffsets = computed(() => { - const leftOffsets = []; - const rightOffsets = []; - let left = 0; - let right = 0; - const colWidths = colWidthsRef.value; - const columnCount = columnCountRef.value; - const direction = directionRef.value; - for (let start = 0; start < columnCount; start += 1) { - if (direction === "rtl") { - rightOffsets[start] = right; - right += colWidths[start] || 0; - const end = columnCount - start - 1; - leftOffsets[end] = left; - left += colWidths[end] || 0; - } else { - leftOffsets[start] = left; - left += colWidths[start] || 0; - const end = columnCount - start - 1; - rightOffsets[end] = right; - right += colWidths[end] || 0; - } - } - return { - left: leftOffsets, - right: rightOffsets - }; - }); - return stickyOffsets; -} -var useStickyOffsets_default = useStickyOffsets; - -// node_modules/ant-design-vue/es/vc-table/ColGroup.js -var __rest65 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function ColGroup(_ref) { - let { - colWidths, - columns, - columCount - } = _ref; - const cols = []; - const len = columCount || columns.length; - let mustInsert = false; - for (let i3 = len - 1; i3 >= 0; i3 -= 1) { - const width = colWidths[i3]; - const column2 = columns && columns[i3]; - const additionalProps = column2 && column2[INTERNAL_COL_DEFINE]; - if (width || additionalProps || mustInsert) { - const _a2 = additionalProps || {}, { - columnType - } = _a2, restAdditionalProps = __rest65(_a2, ["columnType"]); - cols.unshift(createVNode("col", _objectSpread2({ - "key": i3, - "style": { - width: typeof width === "number" ? `${width}px` : width - } - }, restAdditionalProps), null)); - mustInsert = true; - } - } - return createVNode("colgroup", null, [cols]); -} -var ColGroup_default = ColGroup; - -// node_modules/ant-design-vue/es/vc-table/Panel/index.js -function Panel(_2, _ref) { - let { - slots - } = _ref; - var _a2; - return createVNode("div", null, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); -} -Panel.displayName = "Panel"; -var Panel_default = Panel; - -// node_modules/ant-design-vue/es/vc-table/Footer/Summary.js -var indexGuid4 = 0; -var Summary = defineComponent({ - name: "TableSummary", - props: ["fixed"], - setup(props4, _ref) { - let { - slots - } = _ref; - const tableContext = useInjectTable(); - const uniKey = `table-summary-uni-key-${++indexGuid4}`; - const fixed = computed(() => props4.fixed === "" || props4.fixed); - watchEffect(() => { - tableContext.summaryCollect(uniKey, fixed.value); - }); - onBeforeUnmount(() => { - tableContext.summaryCollect(uniKey, false); - }); - return () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - }; - } -}); -var Summary_default = Summary; - -// node_modules/ant-design-vue/es/vc-table/Footer/Row.js -var Row_default3 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATableSummaryRow", - setup(_props, _ref) { - let { - slots - } = _ref; - return () => { - var _a2; - return createVNode("tr", null, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/context/SummaryContext.js -var SummaryContextKey = Symbol("SummaryContextProps"); -var useProvideSummary = (props4) => { - provide(SummaryContextKey, props4); -}; -var useInjectSummary = () => { - return inject(SummaryContextKey, {}); -}; - -// node_modules/ant-design-vue/es/vc-table/Footer/Cell.js -var Cell_default3 = defineComponent({ - name: "ATableSummaryCell", - props: ["index", "colSpan", "rowSpan", "align"], - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const tableContext = useInjectTable(); - const summaryContext = useInjectSummary(); - return () => { - const { - index: index3, - colSpan = 1, - rowSpan, - align - } = props4; - const { - prefixCls, - direction - } = tableContext; - const { - scrollColumnIndex, - stickyOffsets, - flattenColumns - } = summaryContext; - const lastIndex = index3 + colSpan - 1; - const mergedColSpan = lastIndex + 1 === scrollColumnIndex ? colSpan + 1 : colSpan; - const fixedInfo = getCellFixedInfo(index3, index3 + mergedColSpan - 1, flattenColumns, stickyOffsets, direction); - return createVNode(Cell_default2, _objectSpread2({ - "class": attrs.class, - "index": index3, - "component": "td", - "prefixCls": prefixCls, - "record": null, - "dataIndex": null, - "align": align, - "colSpan": mergedColSpan, - "rowSpan": rowSpan, - "customRender": () => { - var _a2; - return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots); - } - }, fixedInfo), null); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/Footer/index.js -var Footer_default = defineComponent({ - name: "TableFooter", - inheritAttrs: false, - props: ["stickyOffsets", "flattenColumns"], - setup(props4, _ref) { - let { - slots - } = _ref; - const tableContext = useInjectTable(); - useProvideSummary(reactive({ - stickyOffsets: toRef(props4, "stickyOffsets"), - flattenColumns: toRef(props4, "flattenColumns"), - scrollColumnIndex: computed(() => { - const lastColumnIndex = props4.flattenColumns.length - 1; - const scrollColumn = props4.flattenColumns[lastColumnIndex]; - return (scrollColumn === null || scrollColumn === void 0 ? void 0 : scrollColumn.scrollbar) ? lastColumnIndex : null; - }) - })); - return () => { - var _a2; - const { - prefixCls - } = tableContext; - return createVNode("tfoot", { - "class": `${prefixCls}-summary` - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); -var FooterComponents = Summary_default; - -// node_modules/ant-design-vue/es/vc-table/utils/expandUtil.js -function renderExpandIcon(_ref) { - let { - prefixCls, - record, - onExpand, - expanded, - expandable - } = _ref; - const expandClassName = `${prefixCls}-row-expand-icon`; - if (!expandable) { - return createVNode("span", { - "class": [expandClassName, `${prefixCls}-row-spaced`] - }, null); - } - const onClick = (event) => { - onExpand(record, event); - event.stopPropagation(); - }; - return createVNode("span", { - "class": { - [expandClassName]: true, - [`${prefixCls}-row-expanded`]: expanded, - [`${prefixCls}-row-collapsed`]: !expanded - }, - "onClick": onClick - }, null); -} -function findAllChildrenKeys(data, getRowKey, childrenColumnName) { - const keys2 = []; - function dig(list) { - (list || []).forEach((item, index3) => { - keys2.push(getRowKey(item, index3)); - dig(item[childrenColumnName]); - }); - } - dig(data); - return keys2; -} - -// node_modules/ant-design-vue/es/vc-table/stickyScrollBar.js -var stickyScrollBar_default = defineComponent({ - name: "StickyScrollBar", - inheritAttrs: false, - props: ["offsetScroll", "container", "scrollBodyRef", "scrollBodySizeInfo"], - emits: ["scroll"], - setup(props4, _ref) { - let { - emit, - expose - } = _ref; - const tableContext = useInjectTable(); - const bodyScrollWidth = shallowRef(0); - const bodyWidth = shallowRef(0); - const scrollBarWidth = shallowRef(0); - watchEffect(() => { - bodyScrollWidth.value = props4.scrollBodySizeInfo.scrollWidth || 0; - bodyWidth.value = props4.scrollBodySizeInfo.clientWidth || 0; - scrollBarWidth.value = bodyScrollWidth.value && bodyWidth.value * (bodyWidth.value / bodyScrollWidth.value); - }, { - flush: "post" - }); - const scrollBarRef = shallowRef(); - const [scrollState, setScrollState] = useLayoutState({ - scrollLeft: 0, - isHiddenScrollBar: true - }); - const refState = ref({ - delta: 0, - x: 0 - }); - const isActive = shallowRef(false); - const onMouseUp = () => { - isActive.value = false; - }; - const onMouseDown = (event) => { - refState.value = { - delta: event.pageX - scrollState.value.scrollLeft, - x: 0 - }; - isActive.value = true; - event.preventDefault(); - }; - const onMouseMove = (event) => { - const { - buttons - } = event || (window === null || window === void 0 ? void 0 : window.event); - if (!isActive.value || buttons === 0) { - if (isActive.value) { - isActive.value = false; - } - return; - } - let left = refState.value.x + event.pageX - refState.value.x - refState.value.delta; - if (left <= 0) { - left = 0; - } - if (left + scrollBarWidth.value >= bodyWidth.value) { - left = bodyWidth.value - scrollBarWidth.value; - } - emit("scroll", { - scrollLeft: left / bodyWidth.value * (bodyScrollWidth.value + 2) - }); - refState.value.x = event.pageX; - }; - const onContainerScroll = () => { - if (!props4.scrollBodyRef.value) { - return; - } - const tableOffsetTop = getOffset4(props4.scrollBodyRef.value).top; - const tableBottomOffset = tableOffsetTop + props4.scrollBodyRef.value.offsetHeight; - const currentClientOffset = props4.container === window ? document.documentElement.scrollTop + window.innerHeight : getOffset4(props4.container).top + props4.container.clientHeight; - if (tableBottomOffset - getScrollBarSize() <= currentClientOffset || tableOffsetTop >= currentClientOffset - props4.offsetScroll) { - setScrollState((state) => _extends(_extends({}, state), { - isHiddenScrollBar: true - })); - } else { - setScrollState((state) => _extends(_extends({}, state), { - isHiddenScrollBar: false - })); - } - }; - const setScrollLeft = (left) => { - setScrollState((state) => { - return _extends(_extends({}, state), { - scrollLeft: left / bodyScrollWidth.value * bodyWidth.value || 0 - }); - }); - }; - expose({ - setScrollLeft - }); - let onMouseUpListener = null; - let onMouseMoveListener = null; - let onResizeListener = null; - let onScrollListener = null; - onMounted(() => { - onMouseUpListener = addEventListenerWrap(document.body, "mouseup", onMouseUp, false); - onMouseMoveListener = addEventListenerWrap(document.body, "mousemove", onMouseMove, false); - onResizeListener = addEventListenerWrap(window, "resize", onContainerScroll, false); - }); - onActivated(() => { - nextTick(() => { - onContainerScroll(); - }); - }); - onMounted(() => { - setTimeout(() => { - watch([scrollBarWidth, isActive], () => { - onContainerScroll(); - }, { - immediate: true, - flush: "post" - }); - }); - }); - watch(() => props4.container, () => { - onScrollListener === null || onScrollListener === void 0 ? void 0 : onScrollListener.remove(); - onScrollListener = addEventListenerWrap(props4.container, "scroll", onContainerScroll, false); - }, { - immediate: true, - flush: "post" - }); - onBeforeUnmount(() => { - onMouseUpListener === null || onMouseUpListener === void 0 ? void 0 : onMouseUpListener.remove(); - onMouseMoveListener === null || onMouseMoveListener === void 0 ? void 0 : onMouseMoveListener.remove(); - onScrollListener === null || onScrollListener === void 0 ? void 0 : onScrollListener.remove(); - onResizeListener === null || onResizeListener === void 0 ? void 0 : onResizeListener.remove(); - }); - watch(() => _extends({}, scrollState.value), (newState, preState) => { - if (newState.isHiddenScrollBar !== (preState === null || preState === void 0 ? void 0 : preState.isHiddenScrollBar) && !newState.isHiddenScrollBar) { - setScrollState((state) => { - const bodyNode = props4.scrollBodyRef.value; - if (!bodyNode) { - return state; - } - return _extends(_extends({}, state), { - scrollLeft: bodyNode.scrollLeft / bodyNode.scrollWidth * bodyNode.clientWidth - }); - }); - } - }, { - immediate: true - }); - const scrollbarSize = getScrollBarSize(); - return () => { - if (bodyScrollWidth.value <= bodyWidth.value || !scrollBarWidth.value || scrollState.value.isHiddenScrollBar) { - return null; - } - const { - prefixCls - } = tableContext; - return createVNode("div", { - "style": { - height: `${scrollbarSize}px`, - width: `${bodyWidth.value}px`, - bottom: `${props4.offsetScroll}px` - }, - "class": `${prefixCls}-sticky-scroll` - }, [createVNode("div", { - "onMousedown": onMouseDown, - "ref": scrollBarRef, - "class": classNames_default(`${prefixCls}-sticky-scroll-bar`, { - [`${prefixCls}-sticky-scroll-bar-active`]: isActive.value - }), - "style": { - width: `${scrollBarWidth.value}px`, - transform: `translate3d(${scrollState.value.scrollLeft}px, 0, 0)` - } - }, null)]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/hooks/useSticky.js -var defaultContainer = canUseDom_default() ? window : null; -function useSticky(stickyRef, prefixClsRef) { - return computed(() => { - const { - offsetHeader = 0, - offsetSummary = 0, - offsetScroll = 0, - getContainer: getContainer3 = () => defaultContainer - } = typeof stickyRef.value === "object" ? stickyRef.value : {}; - const container = getContainer3() || defaultContainer; - const isSticky = !!stickyRef.value; - return { - isSticky, - stickyClassName: isSticky ? `${prefixClsRef.value}-sticky-holder` : "", - offsetHeader, - offsetSummary, - offsetScroll, - container - }; - }); -} - -// node_modules/ant-design-vue/es/vc-table/FixedHolder/index.js -function useColumnWidth(colWidthsRef, columCountRef) { - return computed(() => { - const cloneColumns = []; - const colWidths = colWidthsRef.value; - const columCount = columCountRef.value; - for (let i3 = 0; i3 < columCount; i3 += 1) { - const val = colWidths[i3]; - if (val !== void 0) { - cloneColumns[i3] = val; - } else { - return null; - } - } - return cloneColumns; - }); -} -var FixedHolder_default = defineComponent({ - name: "FixedHolder", - inheritAttrs: false, - props: ["columns", "flattenColumns", "stickyOffsets", "customHeaderRow", "noData", "maxContentScroll", "colWidths", "columCount", "direction", "fixHeader", "stickyTopOffset", "stickyBottomOffset", "stickyClassName"], - emits: ["scroll"], - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const tableContext = useInjectTable(); - const combinationScrollBarSize = computed(() => tableContext.isSticky && !props4.fixHeader ? 0 : tableContext.scrollbarSize); - const scrollRef = ref(); - const onWheel = (e3) => { - const { - currentTarget, - deltaX - } = e3; - if (deltaX) { - emit("scroll", { - currentTarget, - scrollLeft: currentTarget.scrollLeft + deltaX - }); - e3.preventDefault(); - } - }; - const wheelEvent = ref(); - onMounted(() => { - nextTick(() => { - wheelEvent.value = addEventListenerWrap(scrollRef.value, "wheel", onWheel); - }); - }); - onBeforeUnmount(() => { - var _a2; - (_a2 = wheelEvent.value) === null || _a2 === void 0 ? void 0 : _a2.remove(); - }); - const allFlattenColumnsWithWidth = computed(() => props4.flattenColumns.every((column2) => column2.width && column2.width !== 0 && column2.width !== "0px")); - const columnsWithScrollbar = ref([]); - const flattenColumnsWithScrollbar = ref([]); - watchEffect(() => { - const lastColumn = props4.flattenColumns[props4.flattenColumns.length - 1]; - const ScrollBarColumn = { - fixed: lastColumn ? lastColumn.fixed : null, - scrollbar: true, - customHeaderCell: () => ({ - class: `${tableContext.prefixCls}-cell-scrollbar` - }) - }; - columnsWithScrollbar.value = combinationScrollBarSize.value ? [...props4.columns, ScrollBarColumn] : props4.columns; - flattenColumnsWithScrollbar.value = combinationScrollBarSize.value ? [...props4.flattenColumns, ScrollBarColumn] : props4.flattenColumns; - }); - const headerStickyOffsets = computed(() => { - const { - stickyOffsets, - direction - } = props4; - const { - right, - left - } = stickyOffsets; - return _extends(_extends({}, stickyOffsets), { - left: direction === "rtl" ? [...left.map((width) => width + combinationScrollBarSize.value), 0] : left, - right: direction === "rtl" ? right : [...right.map((width) => width + combinationScrollBarSize.value), 0], - isSticky: tableContext.isSticky - }); - }); - const mergedColumnWidth = useColumnWidth(toRef(props4, "colWidths"), toRef(props4, "columCount")); - return () => { - var _a2; - const { - noData, - columCount, - stickyTopOffset, - stickyBottomOffset, - stickyClassName, - maxContentScroll - } = props4; - const { - isSticky - } = tableContext; - return createVNode("div", { - "style": _extends({ - overflow: "hidden" - }, isSticky ? { - top: `${stickyTopOffset}px`, - bottom: `${stickyBottomOffset}px` - } : {}), - "ref": scrollRef, - "class": classNames_default(attrs.class, { - [stickyClassName]: !!stickyClassName - }) - }, [createVNode("table", { - "style": { - tableLayout: "fixed", - visibility: noData || mergedColumnWidth.value ? null : "hidden" - } - }, [(!noData || !maxContentScroll || allFlattenColumnsWithWidth.value) && createVNode(ColGroup_default, { - "colWidths": mergedColumnWidth.value ? [...mergedColumnWidth.value, combinationScrollBarSize.value] : [], - "columCount": columCount + 1, - "columns": flattenColumnsWithScrollbar.value - }, null), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots, _extends(_extends({}, props4), { - stickyOffsets: headerStickyOffsets.value, - columns: columnsWithScrollbar.value, - flattenColumns: flattenColumnsWithScrollbar.value - }))])]); - }; - } -}); - -// node_modules/ant-design-vue/es/_util/reactivePick.js -function reactivePick(obj) { - for (var _len = arguments.length, keys2 = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - keys2[_key - 1] = arguments[_key]; - } - return reactive(fromPairs_default(keys2.map((k2) => [k2, toRef(obj, k2)]))); -} - -// node_modules/ant-design-vue/es/vc-table/Table.js -var EMPTY_DATA2 = []; -var EMPTY_SCROLL_TARGET = {}; -var INTERNAL_HOOKS = "rc-table-internal-hook"; -var Table_default = defineComponent({ - name: "VcTable", - inheritAttrs: false, - props: ["prefixCls", "data", "columns", "rowKey", "tableLayout", "scroll", "rowClassName", "title", "footer", "id", "showHeader", "components", "customRow", "customHeaderRow", "direction", "expandFixed", "expandColumnWidth", "expandedRowKeys", "defaultExpandedRowKeys", "expandedRowRender", "expandRowByClick", "expandIcon", "onExpand", "onExpandedRowsChange", "onUpdate:expandedRowKeys", "defaultExpandAllRows", "indentSize", "expandIconColumnIndex", "expandedRowClassName", "childrenColumnName", "rowExpandable", "sticky", "transformColumns", "internalHooks", "internalRefs", "canExpandable", "onUpdateInternalRefs", "transformCellText"], - emits: ["expand", "expandedRowsChange", "updateInternalRefs", "update:expandedRowKeys"], - setup(props4, _ref) { - let { - attrs, - slots, - emit - } = _ref; - const mergedData = computed(() => props4.data || EMPTY_DATA2); - const hasData = computed(() => !!mergedData.value.length); - const mergedComponents = computed(() => mergeObject(props4.components, {})); - const getComponent2 = (path2, defaultComponent) => getPathValue(mergedComponents.value, path2) || defaultComponent; - const getRowKey = computed(() => { - const rowKey = props4.rowKey; - if (typeof rowKey === "function") { - return rowKey; - } - return (record) => { - const key2 = record && record[rowKey]; - if (true) { - warning(key2 !== void 0, "Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key."); - } - return key2; - }; - }); - const mergedExpandIcon = computed(() => props4.expandIcon || renderExpandIcon); - const mergedChildrenColumnName = computed(() => props4.childrenColumnName || "children"); - const expandableType = computed(() => { - if (props4.expandedRowRender) { - return "row"; - } - if (props4.canExpandable || mergedData.value.some((record) => record && typeof record === "object" && record[mergedChildrenColumnName.value])) { - return "nest"; - } - return false; - }); - const innerExpandedKeys = shallowRef([]); - const stop = watchEffect(() => { - if (props4.defaultExpandedRowKeys) { - innerExpandedKeys.value = props4.defaultExpandedRowKeys; - } - if (props4.defaultExpandAllRows) { - innerExpandedKeys.value = findAllChildrenKeys(mergedData.value, getRowKey.value, mergedChildrenColumnName.value); - } - }); - stop(); - const mergedExpandedKeys = computed(() => new Set(props4.expandedRowKeys || innerExpandedKeys.value || [])); - const onTriggerExpand = (record) => { - const key2 = getRowKey.value(record, mergedData.value.indexOf(record)); - let newExpandedKeys; - const hasKey = mergedExpandedKeys.value.has(key2); - if (hasKey) { - mergedExpandedKeys.value.delete(key2); - newExpandedKeys = [...mergedExpandedKeys.value]; - } else { - newExpandedKeys = [...mergedExpandedKeys.value, key2]; - } - innerExpandedKeys.value = newExpandedKeys; - emit("expand", !hasKey, record); - emit("update:expandedRowKeys", newExpandedKeys); - emit("expandedRowsChange", newExpandedKeys); - }; - if (props4.expandedRowRender && mergedData.value.some((record) => { - return Array.isArray(record === null || record === void 0 ? void 0 : record[mergedChildrenColumnName.value]); - })) { - warning(false, "`expandedRowRender` should not use with nested Table"); - } - const componentWidth = ref(0); - const [columns, flattenColumns] = useColumns_default(_extends(_extends({}, toRefs(props4)), { - // children, - expandable: computed(() => !!props4.expandedRowRender), - expandedKeys: mergedExpandedKeys, - getRowKey, - onTriggerExpand, - expandIcon: mergedExpandIcon - }), computed(() => props4.internalHooks === INTERNAL_HOOKS ? props4.transformColumns : null)); - const columnContext = computed(() => ({ - columns: columns.value, - flattenColumns: flattenColumns.value - })); - const fullTableRef = ref(); - const scrollHeaderRef = ref(); - const scrollBodyRef = ref(); - const scrollBodySizeInfo = ref({ - scrollWidth: 0, - clientWidth: 0 - }); - const scrollSummaryRef = ref(); - const [pingedLeft, setPingedLeft] = useState(false); - const [pingedRight, setPingedRight] = useState(false); - const [colsWidths, updateColsWidths] = useLayoutState(/* @__PURE__ */ new Map()); - const colsKeys = computed(() => getColumnsKey(flattenColumns.value)); - const colWidths = computed(() => colsKeys.value.map((columnKey) => colsWidths.value.get(columnKey))); - const columnCount = computed(() => flattenColumns.value.length); - const stickyOffsets = useStickyOffsets_default(colWidths, columnCount, toRef(props4, "direction")); - const fixHeader = computed(() => props4.scroll && validateValue(props4.scroll.y)); - const horizonScroll = computed(() => props4.scroll && validateValue(props4.scroll.x) || Boolean(props4.expandFixed)); - const fixColumn = computed(() => horizonScroll.value && flattenColumns.value.some((_ref2) => { - let { - fixed - } = _ref2; - return fixed; - })); - const stickyRef = ref(); - const stickyState = useSticky(toRef(props4, "sticky"), toRef(props4, "prefixCls")); - const summaryFixedInfos = reactive({}); - const fixFooter = computed(() => { - const info = Object.values(summaryFixedInfos)[0]; - return (fixHeader.value || stickyState.value.isSticky) && info; - }); - const summaryCollect = (uniKey, fixed) => { - if (fixed) { - summaryFixedInfos[uniKey] = fixed; - } else { - delete summaryFixedInfos[uniKey]; - } - }; - const scrollXStyle = ref({}); - const scrollYStyle = ref({}); - const scrollTableStyle = ref({}); - watchEffect(() => { - if (fixHeader.value) { - scrollYStyle.value = { - overflowY: "scroll", - maxHeight: toPx(props4.scroll.y) - }; - } - if (horizonScroll.value) { - scrollXStyle.value = { - overflowX: "auto" - }; - if (!fixHeader.value) { - scrollYStyle.value = { - overflowY: "hidden" - }; - } - scrollTableStyle.value = { - width: props4.scroll.x === true ? "auto" : toPx(props4.scroll.x), - minWidth: "100%" - }; - } - }); - const onColumnResize = (columnKey, width) => { - if (isVisible_default(fullTableRef.value)) { - updateColsWidths((widths) => { - if (widths.get(columnKey) !== width) { - const newWidths = new Map(widths); - newWidths.set(columnKey, width); - return newWidths; - } - return widths; - }); - } - }; - const [setScrollTarget, getScrollTarget] = useTimeoutLock(null); - function forceScroll(scrollLeft, target) { - if (!target) { - return; - } - if (typeof target === "function") { - target(scrollLeft); - return; - } - const domTarget = target.$el || target; - if (domTarget.scrollLeft !== scrollLeft) { - domTarget.scrollLeft = scrollLeft; - } - } - const onScroll = (_ref3) => { - let { - currentTarget, - scrollLeft - } = _ref3; - var _a2; - const isRTL = props4.direction === "rtl"; - const mergedScrollLeft = typeof scrollLeft === "number" ? scrollLeft : currentTarget.scrollLeft; - const compareTarget = currentTarget || EMPTY_SCROLL_TARGET; - if (!getScrollTarget() || getScrollTarget() === compareTarget) { - setScrollTarget(compareTarget); - forceScroll(mergedScrollLeft, scrollHeaderRef.value); - forceScroll(mergedScrollLeft, scrollBodyRef.value); - forceScroll(mergedScrollLeft, scrollSummaryRef.value); - forceScroll(mergedScrollLeft, (_a2 = stickyRef.value) === null || _a2 === void 0 ? void 0 : _a2.setScrollLeft); - } - if (currentTarget) { - const { - scrollWidth, - clientWidth - } = currentTarget; - if (isRTL) { - setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth); - setPingedRight(-mergedScrollLeft > 0); - } else { - setPingedLeft(mergedScrollLeft > 0); - setPingedRight(mergedScrollLeft < scrollWidth - clientWidth); - } - } - }; - const triggerOnScroll = () => { - if (horizonScroll.value && scrollBodyRef.value) { - onScroll({ - currentTarget: scrollBodyRef.value - }); - } else { - setPingedLeft(false); - setPingedRight(false); - } - }; - let timtout; - const updateWidth = (width) => { - if (width !== componentWidth.value) { - triggerOnScroll(); - componentWidth.value = fullTableRef.value ? fullTableRef.value.offsetWidth : width; - } - }; - const onFullTableResize = (_ref4) => { - let { - width - } = _ref4; - clearTimeout(timtout); - if (componentWidth.value === 0) { - updateWidth(width); - return; - } - timtout = setTimeout(() => { - updateWidth(width); - }, 100); - }; - watch([horizonScroll, () => props4.data, () => props4.columns], () => { - if (horizonScroll.value) { - triggerOnScroll(); - } - }, { - flush: "post" - }); - const [scrollbarSize, setScrollbarSize] = useState(0); - useProvideSticky(); - onMounted(() => { - nextTick(() => { - var _a2, _b; - triggerOnScroll(); - setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.value).width); - scrollBodySizeInfo.value = { - scrollWidth: ((_a2 = scrollBodyRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollWidth) || 0, - clientWidth: ((_b = scrollBodyRef.value) === null || _b === void 0 ? void 0 : _b.clientWidth) || 0 - }; - }); - }); - onUpdated(() => { - nextTick(() => { - var _a2, _b; - const scrollWidth = ((_a2 = scrollBodyRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollWidth) || 0; - const clientWidth = ((_b = scrollBodyRef.value) === null || _b === void 0 ? void 0 : _b.clientWidth) || 0; - if (scrollBodySizeInfo.value.scrollWidth !== scrollWidth || scrollBodySizeInfo.value.clientWidth !== clientWidth) { - scrollBodySizeInfo.value = { - scrollWidth, - clientWidth - }; - } - }); - }); - watchEffect(() => { - if (props4.internalHooks === INTERNAL_HOOKS && props4.internalRefs) { - props4.onUpdateInternalRefs({ - body: scrollBodyRef.value ? scrollBodyRef.value.$el || scrollBodyRef.value : null - }); - } - }, { - flush: "post" - }); - const mergedTableLayout = computed(() => { - if (props4.tableLayout) { - return props4.tableLayout; - } - if (fixColumn.value) { - return props4.scroll.x === "max-content" ? "auto" : "fixed"; - } - if (fixHeader.value || stickyState.value.isSticky || flattenColumns.value.some((_ref5) => { - let { - ellipsis - } = _ref5; - return ellipsis; - })) { - return "fixed"; - } - return "auto"; - }); - const emptyNode = () => { - var _a2; - return hasData.value ? null : ((_a2 = slots.emptyText) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || "No Data"; - }; - useProvideTable(reactive(_extends(_extends({}, toRefs(reactivePick(props4, "prefixCls", "direction", "transformCellText"))), { - getComponent: getComponent2, - scrollbarSize, - fixedInfoList: computed(() => flattenColumns.value.map((_2, colIndex) => getCellFixedInfo(colIndex, colIndex, flattenColumns.value, stickyOffsets.value, props4.direction))), - isSticky: computed(() => stickyState.value.isSticky), - summaryCollect - }))); - useProvideBody(reactive(_extends(_extends({}, toRefs(reactivePick(props4, "rowClassName", "expandedRowClassName", "expandRowByClick", "expandedRowRender", "expandIconColumnIndex", "indentSize"))), { - columns, - flattenColumns, - tableLayout: mergedTableLayout, - expandIcon: mergedExpandIcon, - expandableType, - onTriggerExpand - }))); - useProvideResize({ - onColumnResize - }); - useProvideExpandedRow({ - componentWidth, - fixHeader, - fixColumn, - horizonScroll - }); - const bodyTable = () => createVNode(Body_default, { - "data": mergedData.value, - "measureColumnWidth": fixHeader.value || horizonScroll.value || stickyState.value.isSticky, - "expandedKeys": mergedExpandedKeys.value, - "rowExpandable": props4.rowExpandable, - "getRowKey": getRowKey.value, - "customRow": props4.customRow, - "childrenColumnName": mergedChildrenColumnName.value - }, { - emptyNode - }); - const bodyColGroup = () => createVNode(ColGroup_default, { - "colWidths": flattenColumns.value.map((_ref6) => { - let { - width - } = _ref6; - return width; - }), - "columns": flattenColumns.value - }, null); - return () => { - var _a2; - const { - prefixCls, - scroll, - tableLayout, - direction, - // Additional Part - title = slots.title, - footer = slots.footer, - // Customize - id, - showHeader, - customHeaderRow - } = props4; - const { - isSticky, - offsetHeader, - offsetSummary, - offsetScroll, - stickyClassName, - container - } = stickyState.value; - const TableComponent = getComponent2(["table"], "table"); - const customizeScrollBody = getComponent2(["body"]); - const summaryNode = (_a2 = slots.summary) === null || _a2 === void 0 ? void 0 : _a2.call(slots, { - pageData: mergedData.value - }); - let groupTableNode = () => null; - const headerProps = { - colWidths: colWidths.value, - columCount: flattenColumns.value.length, - stickyOffsets: stickyOffsets.value, - customHeaderRow, - fixHeader: fixHeader.value, - scroll - }; - if (typeof customizeScrollBody === "function" && hasData.value && !fixHeader.value) { - warning(false, "`components.body` with render props is only work on `scroll.y`."); - } - if (fixHeader.value || isSticky) { - let bodyContent = () => null; - if (typeof customizeScrollBody === "function") { - bodyContent = () => customizeScrollBody(mergedData.value, { - scrollbarSize: scrollbarSize.value, - ref: scrollBodyRef, - onScroll - }); - headerProps.colWidths = flattenColumns.value.map((_ref7, index3) => { - let { - width - } = _ref7; - const colWidth = index3 === columns.value.length - 1 ? width - scrollbarSize.value : width; - if (typeof colWidth === "number" && !Number.isNaN(colWidth)) { - return colWidth; - } - warning(false, "When use `components.body` with render props. Each column should have a fixed `width` value."); - return 0; - }); - } else { - bodyContent = () => createVNode("div", { - "style": _extends(_extends({}, scrollXStyle.value), scrollYStyle.value), - "onScroll": onScroll, - "ref": scrollBodyRef, - "class": classNames_default(`${prefixCls}-body`) - }, [createVNode(TableComponent, { - "style": _extends(_extends({}, scrollTableStyle.value), { - tableLayout: mergedTableLayout.value - }) - }, { - default: () => [bodyColGroup(), bodyTable(), !fixFooter.value && summaryNode && createVNode(Footer_default, { - "stickyOffsets": stickyOffsets.value, - "flattenColumns": flattenColumns.value - }, { - default: () => [summaryNode] - })] - })]); - } - const fixedHolderProps = _extends(_extends(_extends({ - noData: !mergedData.value.length, - maxContentScroll: horizonScroll.value && scroll.x === "max-content" - }, headerProps), columnContext.value), { - direction, - stickyClassName, - onScroll - }); - groupTableNode = () => createVNode(Fragment, null, [showHeader !== false && createVNode(FixedHolder_default, _objectSpread2(_objectSpread2({}, fixedHolderProps), {}, { - "stickyTopOffset": offsetHeader, - "class": `${prefixCls}-header`, - "ref": scrollHeaderRef - }), { - default: (fixedHolderPassProps) => createVNode(Fragment, null, [createVNode(Header_default3, fixedHolderPassProps, null), fixFooter.value === "top" && createVNode(Footer_default, fixedHolderPassProps, { - default: () => [summaryNode] - })]) - }), bodyContent(), fixFooter.value && fixFooter.value !== "top" && createVNode(FixedHolder_default, _objectSpread2(_objectSpread2({}, fixedHolderProps), {}, { - "stickyBottomOffset": offsetSummary, - "class": `${prefixCls}-summary`, - "ref": scrollSummaryRef - }), { - default: (fixedHolderPassProps) => createVNode(Footer_default, fixedHolderPassProps, { - default: () => [summaryNode] - }) - }), isSticky && scrollBodyRef.value && createVNode(stickyScrollBar_default, { - "ref": stickyRef, - "offsetScroll": offsetScroll, - "scrollBodyRef": scrollBodyRef, - "onScroll": onScroll, - "container": container, - "scrollBodySizeInfo": scrollBodySizeInfo.value - }, null)]); - } else { - groupTableNode = () => createVNode("div", { - "style": _extends(_extends({}, scrollXStyle.value), scrollYStyle.value), - "class": classNames_default(`${prefixCls}-content`), - "onScroll": onScroll, - "ref": scrollBodyRef - }, [createVNode(TableComponent, { - "style": _extends(_extends({}, scrollTableStyle.value), { - tableLayout: mergedTableLayout.value - }) - }, { - default: () => [bodyColGroup(), showHeader !== false && createVNode(Header_default3, _objectSpread2(_objectSpread2({}, headerProps), columnContext.value), null), bodyTable(), summaryNode && createVNode(Footer_default, { - "stickyOffsets": stickyOffsets.value, - "flattenColumns": flattenColumns.value - }, { - default: () => [summaryNode] - })] - })]); - } - const ariaProps = pickAttrs(attrs, { - aria: true, - data: true - }); - const fullTable = () => createVNode("div", _objectSpread2(_objectSpread2({}, ariaProps), {}, { - "class": classNames_default(prefixCls, { - [`${prefixCls}-rtl`]: direction === "rtl", - [`${prefixCls}-ping-left`]: pingedLeft.value, - [`${prefixCls}-ping-right`]: pingedRight.value, - [`${prefixCls}-layout-fixed`]: tableLayout === "fixed", - [`${prefixCls}-fixed-header`]: fixHeader.value, - /** No used but for compatible */ - [`${prefixCls}-fixed-column`]: fixColumn.value, - [`${prefixCls}-scroll-horizontal`]: horizonScroll.value, - [`${prefixCls}-has-fix-left`]: flattenColumns.value[0] && flattenColumns.value[0].fixed, - [`${prefixCls}-has-fix-right`]: flattenColumns.value[columnCount.value - 1] && flattenColumns.value[columnCount.value - 1].fixed === "right", - [attrs.class]: attrs.class - }), - "style": attrs.style, - "id": id, - "ref": fullTableRef - }), [title && createVNode(Panel_default, { - "class": `${prefixCls}-title` - }, { - default: () => [title(mergedData.value)] - }), createVNode("div", { - "class": `${prefixCls}-container` - }, [groupTableNode()]), footer && createVNode(Panel_default, { - "class": `${prefixCls}-footer` - }, { - default: () => [footer(mergedData.value)] - })]); - if (horizonScroll.value) { - return createVNode(vc_resize_observer_default, { - "onResize": onFullTableResize - }, { - default: fullTable - }); - } - return fullTable(); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-table/index.js -var vc_table_default = Table_default; - -// node_modules/ant-design-vue/es/_util/extendsObject.js -function extendsObject() { - const result2 = _extends({}, arguments.length <= 0 ? void 0 : arguments[0]); - for (let i3 = 1; i3 < arguments.length; i3++) { - const obj = i3 < 0 || arguments.length <= i3 ? void 0 : arguments[i3]; - if (obj) { - Object.keys(obj).forEach((key2) => { - const val = obj[key2]; - if (val !== void 0) { - result2[key2] = val; - } - }); - } - } - return result2; -} -var extendsObject_default = extendsObject; - -// node_modules/ant-design-vue/es/table/hooks/usePagination.js -var DEFAULT_PAGE_SIZE = 10; -function getPaginationParam(mergedPagination, pagination) { - const param = { - current: mergedPagination.current, - pageSize: mergedPagination.pageSize - }; - const paginationObj = pagination && typeof pagination === "object" ? pagination : {}; - Object.keys(paginationObj).forEach((pageProp) => { - const value = mergedPagination[pageProp]; - if (typeof value !== "function") { - param[pageProp] = value; - } - }); - return param; -} -function usePagination(totalRef, paginationRef, onChange) { - const pagination = computed(() => paginationRef.value && typeof paginationRef.value === "object" ? paginationRef.value : {}); - const paginationTotal = computed(() => pagination.value.total || 0); - const [innerPagination, setInnerPagination] = useState(() => ({ - current: "defaultCurrent" in pagination.value ? pagination.value.defaultCurrent : 1, - pageSize: "defaultPageSize" in pagination.value ? pagination.value.defaultPageSize : DEFAULT_PAGE_SIZE - })); - const mergedPagination = computed(() => { - const mP = extendsObject_default(innerPagination.value, pagination.value, { - total: paginationTotal.value > 0 ? paginationTotal.value : totalRef.value - }); - const maxPage = Math.ceil((paginationTotal.value || totalRef.value) / mP.pageSize); - if (mP.current > maxPage) { - mP.current = maxPage || 1; - } - return mP; - }); - const refreshPagination = (current, pageSize) => { - if (paginationRef.value === false) return; - setInnerPagination({ - current: current !== null && current !== void 0 ? current : 1, - pageSize: pageSize || mergedPagination.value.pageSize - }); - }; - const onInternalChange = (current, pageSize) => { - var _a2, _b; - if (paginationRef.value) { - (_b = (_a2 = pagination.value).onChange) === null || _b === void 0 ? void 0 : _b.call(_a2, current, pageSize); - } - refreshPagination(current, pageSize); - onChange(current, pageSize || mergedPagination.value.pageSize); - }; - return [computed(() => { - return paginationRef.value === false ? {} : _extends(_extends({}, mergedPagination.value), { - onChange: onInternalChange - }); - }), refreshPagination]; -} - -// node_modules/ant-design-vue/es/table/hooks/useLazyKVMap.js -function useLazyKVMap(dataRef, childrenColumnNameRef, getRowKeyRef) { - const mapCacheRef = shallowRef({}); - watch([dataRef, childrenColumnNameRef, getRowKeyRef], () => { - const kvMap = /* @__PURE__ */ new Map(); - const getRowKey = getRowKeyRef.value; - const childrenColumnName = childrenColumnNameRef.value; - function dig(records) { - records.forEach((record, index3) => { - const rowKey = getRowKey(record, index3); - kvMap.set(rowKey, record); - if (record && typeof record === "object" && childrenColumnName in record) { - dig(record[childrenColumnName] || []); - } - }); - } - dig(dataRef.value); - mapCacheRef.value = { - kvMap - }; - }, { - deep: true, - immediate: true - }); - function getRecordByKey(key2) { - return mapCacheRef.value.kvMap.get(key2); - } - return [getRecordByKey]; -} - -// node_modules/ant-design-vue/es/table/hooks/useSelection.js -var SELECTION_COLUMN = {}; -var SELECTION_ALL = "SELECT_ALL"; -var SELECTION_INVERT = "SELECT_INVERT"; -var SELECTION_NONE = "SELECT_NONE"; -var EMPTY_LIST2 = []; -function flattenData(childrenColumnName, data) { - let list = []; - (data || []).forEach((record) => { - list.push(record); - if (record && typeof record === "object" && childrenColumnName in record) { - list = [...list, ...flattenData(childrenColumnName, record[childrenColumnName])]; - } - }); - return list; -} -function useSelection(rowSelectionRef, configRef) { - const mergedRowSelection = computed(() => { - const temp = rowSelectionRef.value || {}; - const { - checkStrictly = true - } = temp; - return _extends(_extends({}, temp), { - checkStrictly - }); - }); - const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(mergedRowSelection.value.selectedRowKeys || mergedRowSelection.value.defaultSelectedRowKeys || EMPTY_LIST2, { - value: computed(() => mergedRowSelection.value.selectedRowKeys) - }); - const preserveRecordsRef = shallowRef(/* @__PURE__ */ new Map()); - const updatePreserveRecordsCache = (keys2) => { - if (mergedRowSelection.value.preserveSelectedRowKeys) { - const newCache = /* @__PURE__ */ new Map(); - keys2.forEach((key2) => { - let record = configRef.getRecordByKey(key2); - if (!record && preserveRecordsRef.value.has(key2)) { - record = preserveRecordsRef.value.get(key2); - } - newCache.set(key2, record); - }); - preserveRecordsRef.value = newCache; - } - }; - watchEffect(() => { - updatePreserveRecordsCache(mergedSelectedKeys.value); - }); - const keyEntities = computed(() => mergedRowSelection.value.checkStrictly ? null : convertDataToEntities(configRef.data.value, { - externalGetKey: configRef.getRowKey.value, - childrenPropName: configRef.childrenColumnName.value - }).keyEntities); - const flattedData = computed(() => flattenData(configRef.childrenColumnName.value, configRef.pageData.value)); - const checkboxPropsMap = computed(() => { - const map2 = /* @__PURE__ */ new Map(); - const getRowKey = configRef.getRowKey.value; - const getCheckboxProps = mergedRowSelection.value.getCheckboxProps; - flattedData.value.forEach((record, index3) => { - const key2 = getRowKey(record, index3); - const checkboxProps3 = (getCheckboxProps ? getCheckboxProps(record) : null) || {}; - map2.set(key2, checkboxProps3); - if ("checked" in checkboxProps3 || "defaultChecked" in checkboxProps3) { - devWarning_default(false, "Table", "Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead."); - } - }); - return map2; - }); - const { - maxLevel, - levelEntities - } = useMaxLevel(keyEntities); - const isCheckboxDisabled = (r3) => { - var _a2; - return !!((_a2 = checkboxPropsMap.value.get(configRef.getRowKey.value(r3))) === null || _a2 === void 0 ? void 0 : _a2.disabled); - }; - const selectKeysState = computed(() => { - if (mergedRowSelection.value.checkStrictly) { - return [mergedSelectedKeys.value || [], []]; - } - const { - checkedKeys, - halfCheckedKeys - } = conductCheck(mergedSelectedKeys.value, true, keyEntities.value, maxLevel.value, levelEntities.value, isCheckboxDisabled); - return [checkedKeys || [], halfCheckedKeys]; - }); - const derivedSelectedKeys = computed(() => selectKeysState.value[0]); - const derivedHalfSelectedKeys = computed(() => selectKeysState.value[1]); - const derivedSelectedKeySet = computed(() => { - const keys2 = mergedRowSelection.value.type === "radio" ? derivedSelectedKeys.value.slice(0, 1) : derivedSelectedKeys.value; - return new Set(keys2); - }); - const derivedHalfSelectedKeySet = computed(() => mergedRowSelection.value.type === "radio" ? /* @__PURE__ */ new Set() : new Set(derivedHalfSelectedKeys.value)); - const [lastSelectedKey, setLastSelectedKey] = useState(null); - const setSelectedKeys = (keys2) => { - let availableKeys; - let records; - updatePreserveRecordsCache(keys2); - const { - preserveSelectedRowKeys, - onChange: onSelectionChange - } = mergedRowSelection.value; - const { - getRecordByKey - } = configRef; - if (preserveSelectedRowKeys) { - availableKeys = keys2; - records = keys2.map((key2) => preserveRecordsRef.value.get(key2)); - } else { - availableKeys = []; - records = []; - keys2.forEach((key2) => { - const record = getRecordByKey(key2); - if (record !== void 0) { - availableKeys.push(key2); - records.push(record); - } - }); - } - setMergedSelectedKeys(availableKeys); - onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records); - }; - const triggerSingleSelection = (key2, selected, keys2, event) => { - const { - onSelect - } = mergedRowSelection.value; - const { - getRecordByKey - } = configRef || {}; - if (onSelect) { - const rows = keys2.map((k2) => getRecordByKey(k2)); - onSelect(getRecordByKey(key2), selected, rows, event); - } - setSelectedKeys(keys2); - }; - const mergedSelections = computed(() => { - const { - onSelectInvert, - onSelectNone, - selections, - hideSelectAll - } = mergedRowSelection.value; - const { - data, - pageData, - getRowKey, - locale: tableLocale - } = configRef; - if (!selections || hideSelectAll) { - return null; - } - const selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections; - return selectionList.map((selection) => { - if (selection === SELECTION_ALL) { - return { - key: "all", - text: tableLocale.value.selectionAll, - onSelect() { - setSelectedKeys(data.value.map((record, index3) => getRowKey.value(record, index3)).filter((key2) => { - const checkProps = checkboxPropsMap.value.get(key2); - return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.value.has(key2); - })); - } - }; - } - if (selection === SELECTION_INVERT) { - return { - key: "invert", - text: tableLocale.value.selectInvert, - onSelect() { - const keySet = new Set(derivedSelectedKeySet.value); - pageData.value.forEach((record, index3) => { - const key2 = getRowKey.value(record, index3); - const checkProps = checkboxPropsMap.value.get(key2); - if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) { - if (keySet.has(key2)) { - keySet.delete(key2); - } else { - keySet.add(key2); - } - } - }); - const keys2 = Array.from(keySet); - if (onSelectInvert) { - devWarning_default(false, "Table", "`onSelectInvert` will be removed in future. Please use `onChange` instead."); - onSelectInvert(keys2); - } - setSelectedKeys(keys2); - } - }; - } - if (selection === SELECTION_NONE) { - return { - key: "none", - text: tableLocale.value.selectNone, - onSelect() { - onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone(); - setSelectedKeys(Array.from(derivedSelectedKeySet.value).filter((key2) => { - const checkProps = checkboxPropsMap.value.get(key2); - return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled; - })); - } - }; - } - return selection; - }); - }); - const flattedDataLength = computed(() => flattedData.value.length); - const transformColumns = (columns) => { - var _a2; - const { - onSelectAll, - onSelectMultiple, - columnWidth: selectionColWidth, - type: selectionType, - fixed, - renderCell: customizeRenderCell, - hideSelectAll, - checkStrictly - } = mergedRowSelection.value; - const { - prefixCls, - getRecordByKey, - getRowKey, - expandType, - getPopupContainer - } = configRef; - if (!rowSelectionRef.value) { - if (true) { - devWarning_default(!columns.includes(SELECTION_COLUMN), "Table", "`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`."); - } - return columns.filter((col) => col !== SELECTION_COLUMN); - } - let cloneColumns = columns.slice(); - const keySet = new Set(derivedSelectedKeySet.value); - const recordKeys = flattedData.value.map(getRowKey.value).filter((key2) => !checkboxPropsMap.value.get(key2).disabled); - const checkedCurrentAll = recordKeys.every((key2) => keySet.has(key2)); - const checkedCurrentSome = recordKeys.some((key2) => keySet.has(key2)); - const onSelectAllChange = () => { - const changeKeys = []; - if (checkedCurrentAll) { - recordKeys.forEach((key2) => { - keySet.delete(key2); - changeKeys.push(key2); - }); - } else { - recordKeys.forEach((key2) => { - if (!keySet.has(key2)) { - keySet.add(key2); - changeKeys.push(key2); - } - }); - } - const keys2 = Array.from(keySet); - onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys2.map((k2) => getRecordByKey(k2)), changeKeys.map((k2) => getRecordByKey(k2))); - setSelectedKeys(keys2); - }; - let title; - if (selectionType !== "radio") { - let customizeSelections; - if (mergedSelections.value) { - const menu = createVNode(menu_default, { - "getPopupContainer": getPopupContainer.value - }, { - default: () => [mergedSelections.value.map((selection, index3) => { - const { - key: key2, - text, - onSelect: onSelectionClick - } = selection; - return createVNode(menu_default.Item, { - "key": key2 || index3, - "onClick": () => { - onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys); - } - }, { - default: () => [text] - }); - })] - }); - customizeSelections = createVNode("div", { - "class": `${prefixCls.value}-selection-extra` - }, [createVNode(dropdown_default3, { - "overlay": menu, - "getPopupContainer": getPopupContainer.value - }, { - default: () => [createVNode("span", null, [createVNode(DownOutlined_default, null, null)])] - })]); - } - const allDisabledData = flattedData.value.map((record, index3) => { - const key2 = getRowKey.value(record, index3); - const checkboxProps3 = checkboxPropsMap.value.get(key2) || {}; - return _extends({ - checked: keySet.has(key2) - }, checkboxProps3); - }).filter((_ref) => { - let { - disabled - } = _ref; - return disabled; - }); - const allDisabled = !!allDisabledData.length && allDisabledData.length === flattedDataLength.value; - const allDisabledAndChecked = allDisabled && allDisabledData.every((_ref2) => { - let { - checked - } = _ref2; - return checked; - }); - const allDisabledSomeChecked = allDisabled && allDisabledData.some((_ref3) => { - let { - checked - } = _ref3; - return checked; - }); - title = !hideSelectAll && createVNode("div", { - "class": `${prefixCls.value}-selection` - }, [createVNode(checkbox_default, { - "checked": !allDisabled ? !!flattedDataLength.value && checkedCurrentAll : allDisabledAndChecked, - "indeterminate": !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked, - "onChange": onSelectAllChange, - "disabled": flattedDataLength.value === 0 || allDisabled, - "aria-label": customizeSelections ? "Custom selection" : "Select all", - "skipGroup": true - }, null), customizeSelections]); - } - let renderCell; - if (selectionType === "radio") { - renderCell = (_ref4) => { - let { - record, - index: index3 - } = _ref4; - const key2 = getRowKey.value(record, index3); - const checked = keySet.has(key2); - return { - node: createVNode(radio_default, _objectSpread2(_objectSpread2({}, checkboxPropsMap.value.get(key2)), {}, { - "checked": checked, - "onClick": (e3) => e3.stopPropagation(), - "onChange": (event) => { - if (!keySet.has(key2)) { - triggerSingleSelection(key2, true, [key2], event.nativeEvent); - } - } - }), null), - checked - }; - }; - } else { - renderCell = (_ref5) => { - let { - record, - index: index3 - } = _ref5; - var _a3; - const key2 = getRowKey.value(record, index3); - const checked = keySet.has(key2); - const indeterminate = derivedHalfSelectedKeySet.value.has(key2); - const checkboxProps3 = checkboxPropsMap.value.get(key2); - let mergedIndeterminate; - if (expandType.value === "nest") { - mergedIndeterminate = indeterminate; - devWarning_default(typeof (checkboxProps3 === null || checkboxProps3 === void 0 ? void 0 : checkboxProps3.indeterminate) !== "boolean", "Table", "set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource."); - } else { - mergedIndeterminate = (_a3 = checkboxProps3 === null || checkboxProps3 === void 0 ? void 0 : checkboxProps3.indeterminate) !== null && _a3 !== void 0 ? _a3 : indeterminate; - } - return { - node: createVNode(checkbox_default, _objectSpread2(_objectSpread2({}, checkboxProps3), {}, { - "indeterminate": mergedIndeterminate, - "checked": checked, - "skipGroup": true, - "onClick": (e3) => e3.stopPropagation(), - "onChange": (_ref6) => { - let { - nativeEvent - } = _ref6; - const { - shiftKey - } = nativeEvent; - let startIndex = -1; - let endIndex = -1; - if (shiftKey && checkStrictly) { - const pointKeys = /* @__PURE__ */ new Set([lastSelectedKey.value, key2]); - recordKeys.some((recordKey, recordIndex) => { - if (pointKeys.has(recordKey)) { - if (startIndex === -1) { - startIndex = recordIndex; - } else { - endIndex = recordIndex; - return true; - } - } - return false; - }); - } - if (endIndex !== -1 && startIndex !== endIndex && checkStrictly) { - const rangeKeys = recordKeys.slice(startIndex, endIndex + 1); - const changedKeys = []; - if (checked) { - rangeKeys.forEach((recordKey) => { - if (keySet.has(recordKey)) { - changedKeys.push(recordKey); - keySet.delete(recordKey); - } - }); - } else { - rangeKeys.forEach((recordKey) => { - if (!keySet.has(recordKey)) { - changedKeys.push(recordKey); - keySet.add(recordKey); - } - }); - } - const keys2 = Array.from(keySet); - onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys2.map((recordKey) => getRecordByKey(recordKey)), changedKeys.map((recordKey) => getRecordByKey(recordKey))); - setSelectedKeys(keys2); - } else { - const originCheckedKeys = derivedSelectedKeys.value; - if (checkStrictly) { - const checkedKeys = checked ? arrDel(originCheckedKeys, key2) : arrAdd(originCheckedKeys, key2); - triggerSingleSelection(key2, !checked, checkedKeys, nativeEvent); - } else { - const result2 = conductCheck([...originCheckedKeys, key2], true, keyEntities.value, maxLevel.value, levelEntities.value, isCheckboxDisabled); - const { - checkedKeys, - halfCheckedKeys - } = result2; - let nextCheckedKeys = checkedKeys; - if (checked) { - const tempKeySet = new Set(checkedKeys); - tempKeySet.delete(key2); - nextCheckedKeys = conductCheck(Array.from(tempKeySet), { - checked: false, - halfCheckedKeys - }, keyEntities.value, maxLevel.value, levelEntities.value, isCheckboxDisabled).checkedKeys; - } - triggerSingleSelection(key2, !checked, nextCheckedKeys, nativeEvent); - } - } - setLastSelectedKey(key2); - } - }), null), - checked - }; - }; - } - const renderSelectionCell = (_ref7) => { - let { - record, - index: index3 - } = _ref7; - const { - node: node2, - checked - } = renderCell({ - record, - index: index3 - }); - if (customizeRenderCell) { - return customizeRenderCell(checked, record, index3, node2); - } - return node2; - }; - if (!cloneColumns.includes(SELECTION_COLUMN)) { - if (cloneColumns.findIndex((col) => { - var _a3; - return ((_a3 = col[INTERNAL_COL_DEFINE]) === null || _a3 === void 0 ? void 0 : _a3.columnType) === "EXPAND_COLUMN"; - }) === 0) { - const [expandColumn, ...restColumns] = cloneColumns; - cloneColumns = [expandColumn, SELECTION_COLUMN, ...restColumns]; - } else { - cloneColumns = [SELECTION_COLUMN, ...cloneColumns]; - } - } - const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN); - if (cloneColumns.filter((col) => col === SELECTION_COLUMN).length > 1) { - devWarning_default(false, "Table", "Multiple `SELECTION_COLUMN` exist in `columns`."); - } - cloneColumns = cloneColumns.filter((column2, index3) => column2 !== SELECTION_COLUMN || index3 === selectionColumnIndex); - const prevCol = cloneColumns[selectionColumnIndex - 1]; - const nextCol = cloneColumns[selectionColumnIndex + 1]; - let mergedFixed = fixed; - if (mergedFixed === void 0) { - if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== void 0) { - mergedFixed = nextCol.fixed; - } else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== void 0) { - mergedFixed = prevCol.fixed; - } - } - if (mergedFixed && prevCol && ((_a2 = prevCol[INTERNAL_COL_DEFINE]) === null || _a2 === void 0 ? void 0 : _a2.columnType) === "EXPAND_COLUMN" && prevCol.fixed === void 0) { - prevCol.fixed = mergedFixed; - } - const selectionColumn = { - fixed: mergedFixed, - width: selectionColWidth, - className: `${prefixCls.value}-selection-column`, - title: mergedRowSelection.value.columnTitle || title, - customRender: renderSelectionCell, - [INTERNAL_COL_DEFINE]: { - class: `${prefixCls.value}-selection-col` - } - }; - return cloneColumns.map((col) => col === SELECTION_COLUMN ? selectionColumn : col); - }; - return [transformColumns, derivedSelectedKeySet]; -} - -// node_modules/ant-design-vue/es/table/util.js -var __rest66 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function getColumnKey(column2, defaultKey) { - if ("key" in column2 && column2.key !== void 0 && column2.key !== null) { - return column2.key; - } - if (column2.dataIndex) { - return Array.isArray(column2.dataIndex) ? column2.dataIndex.join(".") : column2.dataIndex; - } - return defaultKey; -} -function getColumnPos(index3, pos) { - return pos ? `${pos}-${index3}` : `${index3}`; -} -function renderColumnTitle(title, props4) { - if (typeof title === "function") { - return title(props4); - } - return title; -} -function convertChildrenToColumns() { - let elements = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - const flattenElements = flattenChildren(elements); - const columns = []; - flattenElements.forEach((element) => { - var _a2, _b, _c, _d; - if (!element) { - return; - } - const key2 = element.key; - const style = ((_a2 = element.props) === null || _a2 === void 0 ? void 0 : _a2.style) || {}; - const cls = ((_b = element.props) === null || _b === void 0 ? void 0 : _b.class) || ""; - const props4 = element.props || {}; - for (const [k2, v2] of Object.entries(props4)) { - props4[camelize(k2)] = v2; - } - const _e = element.children || {}, { - default: children - } = _e, restSlots = __rest66(_e, ["default"]); - const column2 = _extends(_extends(_extends({}, restSlots), props4), { - style, - class: cls - }); - if (key2) { - column2.key = key2; - } - if ((_c = element.type) === null || _c === void 0 ? void 0 : _c.__ANT_TABLE_COLUMN_GROUP) { - column2.children = convertChildrenToColumns(typeof children === "function" ? children() : children); - } else { - const customRender = (_d = element.children) === null || _d === void 0 ? void 0 : _d.default; - column2.customRender = column2.customRender || customRender; - } - columns.push(column2); - }); - return columns; -} - -// node_modules/ant-design-vue/es/table/hooks/useSorter.js -var ASCEND = "ascend"; -var DESCEND = "descend"; -function getMultiplePriority(column2) { - if (typeof column2.sorter === "object" && typeof column2.sorter.multiple === "number") { - return column2.sorter.multiple; - } - return false; -} -function getSortFunction(sorter) { - if (typeof sorter === "function") { - return sorter; - } - if (sorter && typeof sorter === "object" && sorter.compare) { - return sorter.compare; - } - return false; -} -function nextSortDirection(sortDirections, current) { - if (!current) { - return sortDirections[0]; - } - return sortDirections[sortDirections.indexOf(current) + 1]; -} -function collectSortStates(columns, init, pos) { - let sortStates = []; - function pushState(column2, columnPos) { - sortStates.push({ - column: column2, - key: getColumnKey(column2, columnPos), - multiplePriority: getMultiplePriority(column2), - sortOrder: column2.sortOrder - }); - } - (columns || []).forEach((column2, index3) => { - const columnPos = getColumnPos(index3, pos); - if (column2.children) { - if ("sortOrder" in column2) { - pushState(column2, columnPos); - } - sortStates = [...sortStates, ...collectSortStates(column2.children, init, columnPos)]; - } else if (column2.sorter) { - if ("sortOrder" in column2) { - pushState(column2, columnPos); - } else if (init && column2.defaultSortOrder) { - sortStates.push({ - column: column2, - key: getColumnKey(column2, columnPos), - multiplePriority: getMultiplePriority(column2), - sortOrder: column2.defaultSortOrder - }); - } - } - }); - return sortStates; -} -function injectSorter(prefixCls, columns, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, pos) { - return (columns || []).map((column2, index3) => { - const columnPos = getColumnPos(index3, pos); - let newColumn = column2; - if (newColumn.sorter) { - const sortDirections = newColumn.sortDirections || defaultSortDirections; - const showSorterTooltip = newColumn.showSorterTooltip === void 0 ? tableShowSorterTooltip : newColumn.showSorterTooltip; - const columnKey = getColumnKey(newColumn, columnPos); - const sorterState = sorterStates.find((_ref) => { - let { - key: key2 - } = _ref; - return key2 === columnKey; - }); - const sorterOrder = sorterState ? sorterState.sortOrder : null; - const nextSortOrder = nextSortDirection(sortDirections, sorterOrder); - const upNode = sortDirections.includes(ASCEND) && createVNode(CaretUpOutlined_default, { - "class": classNames_default(`${prefixCls}-column-sorter-up`, { - active: sorterOrder === ASCEND - }), - "role": "presentation" - }, null); - const downNode = sortDirections.includes(DESCEND) && createVNode(CaretDownOutlined_default, { - "role": "presentation", - "class": classNames_default(`${prefixCls}-column-sorter-down`, { - active: sorterOrder === DESCEND - }) - }, null); - const { - cancelSort, - triggerAsc, - triggerDesc - } = tableLocale || {}; - let sortTip = cancelSort; - if (nextSortOrder === DESCEND) { - sortTip = triggerDesc; - } else if (nextSortOrder === ASCEND) { - sortTip = triggerAsc; - } - const tooltipProps2 = typeof showSorterTooltip === "object" ? showSorterTooltip : { - title: sortTip - }; - newColumn = _extends(_extends({}, newColumn), { - className: classNames_default(newColumn.className, { - [`${prefixCls}-column-sort`]: sorterOrder - }), - title: (renderProps) => { - const renderSortTitle = createVNode("div", { - "class": `${prefixCls}-column-sorters` - }, [createVNode("span", { - "class": `${prefixCls}-column-title` - }, [renderColumnTitle(column2.title, renderProps)]), createVNode("span", { - "class": classNames_default(`${prefixCls}-column-sorter`, { - [`${prefixCls}-column-sorter-full`]: !!(upNode && downNode) - }) - }, [createVNode("span", { - "class": `${prefixCls}-column-sorter-inner` - }, [upNode, downNode])])]); - return showSorterTooltip ? createVNode(tooltip_default, tooltipProps2, { - default: () => [renderSortTitle] - }) : renderSortTitle; - }, - customHeaderCell: (col) => { - const cell = column2.customHeaderCell && column2.customHeaderCell(col) || {}; - const originOnClick = cell.onClick; - const originOKeyDown = cell.onKeydown; - cell.onClick = (event) => { - triggerSorter({ - column: column2, - key: columnKey, - sortOrder: nextSortOrder, - multiplePriority: getMultiplePriority(column2) - }); - if (originOnClick) { - originOnClick(event); - } - }; - cell.onKeydown = (event) => { - if (event.keyCode === KeyCode_default.ENTER) { - triggerSorter({ - column: column2, - key: columnKey, - sortOrder: nextSortOrder, - multiplePriority: getMultiplePriority(column2) - }); - originOKeyDown === null || originOKeyDown === void 0 ? void 0 : originOKeyDown(event); - } - }; - if (sorterOrder) { - cell["aria-sort"] = sorterOrder === "ascend" ? "ascending" : "descending"; - } - cell.class = classNames_default(cell.class, `${prefixCls}-column-has-sorters`); - cell.tabindex = 0; - return cell; - } - }); - } - if ("children" in newColumn) { - newColumn = _extends(_extends({}, newColumn), { - children: injectSorter(prefixCls, newColumn.children, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, columnPos) - }); - } - return newColumn; - }); -} -function stateToInfo(sorterStates) { - const { - column: column2, - sortOrder - } = sorterStates; - return { - column: column2, - order: sortOrder, - field: column2.dataIndex, - columnKey: column2.key - }; -} -function generateSorterInfo(sorterStates) { - const list = sorterStates.filter((_ref2) => { - let { - sortOrder - } = _ref2; - return sortOrder; - }).map(stateToInfo); - if (list.length === 0 && sorterStates.length) { - return _extends(_extends({}, stateToInfo(sorterStates[sorterStates.length - 1])), { - column: void 0 - }); - } - if (list.length <= 1) { - return list[0] || {}; - } - return list; -} -function getSortData(data, sortStates, childrenColumnName) { - const innerSorterStates = sortStates.slice().sort((a2, b2) => b2.multiplePriority - a2.multiplePriority); - const cloneData = data.slice(); - const runningSorters = innerSorterStates.filter((_ref3) => { - let { - column: { - sorter - }, - sortOrder - } = _ref3; - return getSortFunction(sorter) && sortOrder; - }); - if (!runningSorters.length) { - return cloneData; - } - return cloneData.sort((record1, record2) => { - for (let i3 = 0; i3 < runningSorters.length; i3 += 1) { - const sorterState = runningSorters[i3]; - const { - column: { - sorter - }, - sortOrder - } = sorterState; - const compareFn = getSortFunction(sorter); - if (compareFn && sortOrder) { - const compareResult = compareFn(record1, record2, sortOrder); - if (compareResult !== 0) { - return sortOrder === ASCEND ? compareResult : -compareResult; - } - } - } - return 0; - }).map((record) => { - const subRecords = record[childrenColumnName]; - if (subRecords) { - return _extends(_extends({}, record), { - [childrenColumnName]: getSortData(subRecords, sortStates, childrenColumnName) - }); - } - return record; - }); -} -function useFilterSorter(_ref4) { - let { - prefixCls, - mergedColumns, - onSorterChange, - sortDirections, - tableLocale, - showSorterTooltip - } = _ref4; - const [sortStates, setSortStates] = useState(collectSortStates(mergedColumns.value, true)); - const mergedSorterStates = computed(() => { - let validate = true; - const collectedStates = collectSortStates(mergedColumns.value, false); - if (!collectedStates.length) { - return sortStates.value; - } - const validateStates = []; - function patchStates(state) { - if (validate) { - validateStates.push(state); - } else { - validateStates.push(_extends(_extends({}, state), { - sortOrder: null - })); - } - } - let multipleMode = null; - collectedStates.forEach((state) => { - if (multipleMode === null) { - patchStates(state); - if (state.sortOrder) { - if (state.multiplePriority === false) { - validate = false; - } else { - multipleMode = true; - } - } - } else if (multipleMode && state.multiplePriority !== false) { - patchStates(state); - } else { - validate = false; - patchStates(state); - } - }); - return validateStates; - }); - const columnTitleSorterProps = computed(() => { - const sortColumns = mergedSorterStates.value.map((_ref5) => { - let { - column: column2, - sortOrder - } = _ref5; - return { - column: column2, - order: sortOrder - }; - }); - return { - sortColumns, - // Legacy - sortColumn: sortColumns[0] && sortColumns[0].column, - sortOrder: sortColumns[0] && sortColumns[0].order - }; - }); - function triggerSorter(sortState) { - let newSorterStates; - if (sortState.multiplePriority === false || !mergedSorterStates.value.length || mergedSorterStates.value[0].multiplePriority === false) { - newSorterStates = [sortState]; - } else { - newSorterStates = [...mergedSorterStates.value.filter((_ref6) => { - let { - key: key2 - } = _ref6; - return key2 !== sortState.key; - }), sortState]; - } - setSortStates(newSorterStates); - onSorterChange(generateSorterInfo(newSorterStates), newSorterStates); - } - const transformColumns = (innerColumns) => injectSorter(prefixCls.value, innerColumns, mergedSorterStates.value, triggerSorter, sortDirections.value, tableLocale.value, showSorterTooltip.value); - const sorters = computed(() => generateSorterInfo(mergedSorterStates.value)); - return [transformColumns, mergedSorterStates, columnTitleSorterProps, sorters]; -} - -// node_modules/ant-design-vue/es/table/hooks/useFilter/FilterWrapper.js -var onKeyDown = (event) => { - const { - keyCode - } = event; - if (keyCode === KeyCode_default.ENTER) { - event.stopPropagation(); - } -}; -var FilterDropdownMenuWrapper = (_props, _ref) => { - let { - slots - } = _ref; - var _a2; - return createVNode("div", { - "onClick": (e3) => e3.stopPropagation(), - "onKeydown": onKeyDown - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); -}; -var FilterWrapper_default = FilterDropdownMenuWrapper; - -// node_modules/ant-design-vue/es/table/hooks/useFilter/FilterSearch.js -var FilterSearch_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "FilterSearch", - inheritAttrs: false, - props: { - value: stringType(), - onChange: functionType(), - filterSearch: someType([Boolean, Function]), - tablePrefixCls: stringType(), - locale: objectType() - }, - setup(props4) { - return () => { - const { - value, - onChange, - filterSearch, - tablePrefixCls, - locale: locale4 - } = props4; - if (!filterSearch) { - return null; - } - return createVNode("div", { - "class": `${tablePrefixCls}-filter-dropdown-search` - }, [createVNode(input_default, { - "placeholder": locale4.filterSearchPlaceholder, - "onChange": onChange, - "value": value, - "htmlSize": 1, - "class": `${tablePrefixCls}-filter-dropdown-search-input` - }, { - prefix: () => createVNode(SearchOutlined_default, null, null) - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/MotionTreeNode.js -var __rest67 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var MotionTreeNode_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "MotionTreeNode", - inheritAttrs: false, - props: _extends(_extends({}, treeNodeProps), { - active: Boolean, - motion: Object, - motionNodes: { - type: Array - }, - onMotionStart: Function, - onMotionEnd: Function, - motionType: String - }), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const visible = shallowRef(true); - const context2 = useInjectTreeContext(); - const motionedRef = shallowRef(false); - const transitionProps = computed(() => { - if (props4.motion) { - return props4.motion; - } else { - return collapseMotion_default(); - } - }); - const onMotionEnd = (node2, type4) => { - var _a2, _b, _c, _d; - if (type4 === "appear") { - (_b = (_a2 = transitionProps.value) === null || _a2 === void 0 ? void 0 : _a2.onAfterEnter) === null || _b === void 0 ? void 0 : _b.call(_a2, node2); - } else if (type4 === "leave") { - (_d = (_c = transitionProps.value) === null || _c === void 0 ? void 0 : _c.onAfterLeave) === null || _d === void 0 ? void 0 : _d.call(_c, node2); - } - if (!motionedRef.value) { - props4.onMotionEnd(); - } - motionedRef.value = true; - }; - watch(() => props4.motionNodes, () => { - if (props4.motionNodes && props4.motionType === "hide" && visible.value) { - nextTick(() => { - visible.value = false; - }); - } - }, { - immediate: true, - flush: "post" - }); - onMounted(() => { - props4.motionNodes && props4.onMotionStart(); - }); - onBeforeUnmount(() => { - props4.motionNodes && onMotionEnd(); - }); - return () => { - const { - motion, - motionNodes, - motionType, - active, - eventKey - } = props4, otherProps = __rest67(props4, ["motion", "motionNodes", "motionType", "active", "eventKey"]); - if (motionNodes) { - return createVNode(Transition, _objectSpread2(_objectSpread2({}, transitionProps.value), {}, { - "appear": motionType === "show", - "onAfterAppear": (node2) => onMotionEnd(node2, "appear"), - "onAfterLeave": (node2) => onMotionEnd(node2, "leave") - }), { - default: () => [withDirectives(createVNode("div", { - "class": `${context2.value.prefixCls}-treenode-motion` - }, [motionNodes.map((treeNode) => { - const restProps = __rest67(treeNode.data, []), { - title, - key: key2, - isStart, - isEnd - } = treeNode; - delete restProps.children; - return createVNode(TreeNode_default, _objectSpread2(_objectSpread2({}, restProps), {}, { - "title": title, - "active": active, - "data": treeNode.data, - "key": key2, - "eventKey": key2, - "isStart": isStart, - "isEnd": isEnd - }), slots); - })]), [[vShow, visible.value]])] - }); - } - return createVNode(TreeNode_default, _objectSpread2(_objectSpread2({ - "class": attrs.class, - "style": attrs.style - }, otherProps), {}, { - "active": active, - "eventKey": eventKey - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/utils/diffUtil.js -function findExpandedKeys() { - let prev2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - let next2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : []; - const prevLen = prev2.length; - const nextLen = next2.length; - if (Math.abs(prevLen - nextLen) !== 1) { - return { - add: false, - key: null - }; - } - function find2(shorter, longer) { - const cache = /* @__PURE__ */ new Map(); - shorter.forEach((key2) => { - cache.set(key2, true); - }); - const keys2 = longer.filter((key2) => !cache.has(key2)); - return keys2.length === 1 ? keys2[0] : null; - } - if (prevLen < nextLen) { - return { - add: true, - key: find2(prev2, next2) - }; - } - return { - add: false, - key: find2(next2, prev2) - }; -} -function getExpandRange(shorter, longer, key2) { - const shorterStartIndex = shorter.findIndex((item) => item.key === key2); - const shorterEndNode = shorter[shorterStartIndex + 1]; - const longerStartIndex = longer.findIndex((item) => item.key === key2); - if (shorterEndNode) { - const longerEndIndex = longer.findIndex((item) => item.key === shorterEndNode.key); - return longer.slice(longerStartIndex + 1, longerEndIndex); - } - return longer.slice(longerStartIndex + 1); -} - -// node_modules/ant-design-vue/es/vc-tree/NodeList.js -var __rest68 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var HIDDEN_STYLE2 = { - width: 0, - height: 0, - display: "flex", - overflow: "hidden", - opacity: 0, - border: 0, - padding: 0, - margin: 0 -}; -var noop13 = () => { -}; -var MOTION_KEY = `RC_TREE_MOTION_${Math.random()}`; -var MotionNode = { - key: MOTION_KEY -}; -var MotionEntity = { - key: MOTION_KEY, - level: 0, - index: 0, - pos: "0", - node: MotionNode, - nodes: [MotionNode] -}; -var MotionFlattenData = { - parent: null, - children: [], - pos: MotionEntity.pos, - data: MotionNode, - title: null, - key: MOTION_KEY, - /** Hold empty list here since we do not use it */ - isStart: [], - isEnd: [] -}; -function getMinimumRangeTransitionRange(list, virtual, height, itemHeight) { - if (virtual === false || !height) { - return list; - } - return list.slice(0, Math.ceil(height / itemHeight) + 1); -} -function itemKey(item) { - const { - key: key2, - pos - } = item; - return getKey3(key2, pos); -} -function getAccessibilityPath(item) { - let path2 = String(item.key); - let current = item; - while (current.parent) { - current = current.parent; - path2 = `${current.key} > ${path2}`; - } - return path2; -} -var NodeList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "NodeList", - inheritAttrs: false, - props: nodeListProps, - setup(props4, _ref) { - let { - expose, - attrs - } = _ref; - const listRef = ref(); - const indentMeasurerRef = ref(); - const { - expandedKeys, - flattenNodes - } = useInjectKeysState(); - expose({ - scrollTo: (scroll) => { - listRef.value.scrollTo(scroll); - }, - getIndentWidth: () => indentMeasurerRef.value.offsetWidth - }); - const transitionData = shallowRef(flattenNodes.value); - const transitionRange = shallowRef([]); - const motionType = ref(null); - function onMotionEnd() { - transitionData.value = flattenNodes.value; - transitionRange.value = []; - motionType.value = null; - props4.onListChangeEnd(); - } - const context2 = useInjectTreeContext(); - watch([() => expandedKeys.value.slice(), flattenNodes], (_ref2, _ref3) => { - let [expandedKeys2, data] = _ref2; - let [prevExpandedKeys, prevData] = _ref3; - const diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys2); - if (diffExpanded.key !== null) { - const { - virtual, - height, - itemHeight - } = props4; - if (diffExpanded.add) { - const keyIndex2 = prevData.findIndex((_ref4) => { - let { - key: key2 - } = _ref4; - return key2 === diffExpanded.key; - }); - const rangeNodes = getMinimumRangeTransitionRange(getExpandRange(prevData, data, diffExpanded.key), virtual, height, itemHeight); - const newTransitionData = prevData.slice(); - newTransitionData.splice(keyIndex2 + 1, 0, MotionFlattenData); - transitionData.value = newTransitionData; - transitionRange.value = rangeNodes; - motionType.value = "show"; - } else { - const keyIndex2 = data.findIndex((_ref5) => { - let { - key: key2 - } = _ref5; - return key2 === diffExpanded.key; - }); - const rangeNodes = getMinimumRangeTransitionRange(getExpandRange(data, prevData, diffExpanded.key), virtual, height, itemHeight); - const newTransitionData = data.slice(); - newTransitionData.splice(keyIndex2 + 1, 0, MotionFlattenData); - transitionData.value = newTransitionData; - transitionRange.value = rangeNodes; - motionType.value = "hide"; - } - } else if (prevData !== data) { - transitionData.value = data; - } - }); - watch(() => context2.value.dragging, (dragging) => { - if (!dragging) { - onMotionEnd(); - } - }); - const mergedData = computed(() => props4.motion === void 0 ? transitionData.value : flattenNodes.value); - const onActiveChange = () => { - props4.onActiveChange(null); - }; - return () => { - const _a2 = _extends(_extends({}, props4), attrs), { - prefixCls, - selectable, - checkable, - disabled, - motion, - height, - itemHeight, - virtual, - focusable, - activeItem, - focused, - tabindex, - onKeydown, - onFocus, - onBlur, - onListChangeStart, - onListChangeEnd - } = _a2, domProps = __rest68(_a2, ["prefixCls", "selectable", "checkable", "disabled", "motion", "height", "itemHeight", "virtual", "focusable", "activeItem", "focused", "tabindex", "onKeydown", "onFocus", "onBlur", "onListChangeStart", "onListChangeEnd"]); - return createVNode(Fragment, null, [focused && activeItem && createVNode("span", { - "style": HIDDEN_STYLE2, - "aria-live": "assertive" - }, [getAccessibilityPath(activeItem)]), createVNode("div", null, [createVNode("input", { - "style": HIDDEN_STYLE2, - "disabled": focusable === false || disabled, - "tabindex": focusable !== false ? tabindex : null, - "onKeydown": onKeydown, - "onFocus": onFocus, - "onBlur": onBlur, - "value": "", - "onChange": noop13, - "aria-label": "for screen reader" - }, null)]), createVNode("div", { - "class": `${prefixCls}-treenode`, - "aria-hidden": true, - "style": { - position: "absolute", - pointerEvents: "none", - visibility: "hidden", - height: 0, - overflow: "hidden" - } - }, [createVNode("div", { - "class": `${prefixCls}-indent` - }, [createVNode("div", { - "ref": indentMeasurerRef, - "class": `${prefixCls}-indent-unit` - }, null)])]), createVNode(vc_virtual_list_default, _objectSpread2(_objectSpread2({}, omit_default(domProps, ["onActiveChange"])), {}, { - "data": mergedData.value, - "itemKey": itemKey, - "height": height, - "fullHeight": false, - "virtual": virtual, - "itemHeight": itemHeight, - "prefixCls": `${prefixCls}-list`, - "ref": listRef, - "onVisibleChange": (originList, fullList) => { - const originSet = new Set(originList); - const restList = fullList.filter((item) => !originSet.has(item)); - if (restList.some((item) => itemKey(item) === MOTION_KEY)) { - onMotionEnd(); - } - } - }), { - default: (treeNode) => { - const { - pos - } = treeNode, restProps = __rest68(treeNode.data, []), { - title, - key: key2, - isStart, - isEnd - } = treeNode; - const mergedKey = getKey3(key2, pos); - delete restProps.key; - delete restProps.children; - return createVNode(MotionTreeNode_default, _objectSpread2(_objectSpread2({}, restProps), {}, { - "eventKey": mergedKey, - "title": title, - "active": !!activeItem && key2 === activeItem.key, - "data": treeNode.data, - "isStart": isStart, - "isEnd": isEnd, - "motion": motion, - "motionNodes": key2 === MOTION_KEY ? transitionRange.value : null, - "motionType": motionType.value, - "onMotionStart": onListChangeStart, - "onMotionEnd": onMotionEnd, - "onMousemove": onActiveChange - }), null); - } - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/DropIndicator.js -function DropIndicator(_ref) { - let { - dropPosition, - dropLevelOffset, - indent - } = _ref; - const style = { - pointerEvents: "none", - position: "absolute", - right: 0, - backgroundColor: "red", - height: `${2}px` - }; - switch (dropPosition) { - case -1: - style.top = 0; - style.left = `${-dropLevelOffset * indent}px`; - break; - case 1: - style.bottom = 0; - style.left = `${-dropLevelOffset * indent}px`; - break; - case 0: - style.bottom = 0; - style.left = `${indent}`; - break; - } - return createVNode("div", { - "style": style - }, null); -} - -// node_modules/ant-design-vue/es/vc-tree/Tree.js -var MAX_RETRY_TIMES = 10; -var Tree_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Tree", - inheritAttrs: false, - props: initDefaultProps_default(treeProps(), { - prefixCls: "vc-tree", - showLine: false, - showIcon: true, - selectable: true, - multiple: false, - checkable: false, - disabled: false, - checkStrictly: false, - draggable: false, - expandAction: false, - defaultExpandParent: true, - autoExpandParent: false, - defaultExpandAll: false, - defaultExpandedKeys: [], - defaultCheckedKeys: [], - defaultSelectedKeys: [], - dropIndicatorRender: DropIndicator, - allowDrop: () => true - }), - setup(props4, _ref) { - let { - attrs, - slots, - expose - } = _ref; - const destroyed = shallowRef(false); - let delayedDragEnterLogic = {}; - const indent = shallowRef(); - const selectedKeys = shallowRef([]); - const checkedKeys = shallowRef([]); - const halfCheckedKeys = shallowRef([]); - const loadedKeys = shallowRef([]); - const loadingKeys = shallowRef([]); - const expandedKeys = shallowRef([]); - const loadingRetryTimes = {}; - const dragState = reactive({ - draggingNodeKey: null, - dragChildrenKeys: [], - // dropTargetKey is the key of abstract-drop-node - // the abstract-drop-node is the real drop node when drag and drop - // not the DOM drag over node - dropTargetKey: null, - dropPosition: null, - dropContainerKey: null, - dropLevelOffset: null, - dropTargetPos: null, - dropAllowed: true, - // the abstract-drag-over-node - // if mouse is on the bottom of top dom node or no the top of the bottom dom node - // abstract-drag-over-node is the top node - dragOverNodeKey: null - }); - const treeData = shallowRef([]); - watch([() => props4.treeData, () => props4.children], () => { - treeData.value = props4.treeData !== void 0 ? toRaw(props4.treeData).slice() : convertTreeToData(toRaw(props4.children)); - }, { - immediate: true, - deep: true - }); - const keyEntities = shallowRef({}); - const focused = shallowRef(false); - const activeKey = shallowRef(null); - const listChanging = shallowRef(false); - const fieldNames = computed(() => fillFieldNames3(props4.fieldNames)); - const listRef = shallowRef(); - let dragStartMousePosition = null; - let dragNode = null; - let currentMouseOverDroppableNodeKey = null; - const treeNodeRequiredProps = computed(() => { - return { - expandedKeysSet: expandedKeysSet.value, - selectedKeysSet: selectedKeysSet.value, - loadedKeysSet: loadedKeysSet.value, - loadingKeysSet: loadingKeysSet.value, - checkedKeysSet: checkedKeysSet.value, - halfCheckedKeysSet: halfCheckedKeysSet.value, - dragOverNodeKey: dragState.dragOverNodeKey, - dropPosition: dragState.dropPosition, - keyEntities: keyEntities.value - }; - }); - const expandedKeysSet = computed(() => { - return new Set(expandedKeys.value); - }); - const selectedKeysSet = computed(() => { - return new Set(selectedKeys.value); - }); - const loadedKeysSet = computed(() => { - return new Set(loadedKeys.value); - }); - const loadingKeysSet = computed(() => { - return new Set(loadingKeys.value); - }); - const checkedKeysSet = computed(() => { - return new Set(checkedKeys.value); - }); - const halfCheckedKeysSet = computed(() => { - return new Set(halfCheckedKeys.value); - }); - watchEffect(() => { - if (treeData.value) { - const entitiesMap = convertDataToEntities(treeData.value, { - fieldNames: fieldNames.value - }); - keyEntities.value = _extends({ - [MOTION_KEY]: MotionEntity - }, entitiesMap.keyEntities); - } - }); - let init = false; - watch( - [() => props4.expandedKeys, () => props4.autoExpandParent, keyEntities], - // eslint-disable-next-line @typescript-eslint/no-unused-vars - (_ref2, _ref3) => { - let [_newKeys, newAutoExpandParent] = _ref2; - let [_oldKeys, oldAutoExpandParent] = _ref3; - let keys2 = expandedKeys.value; - if (props4.expandedKeys !== void 0 || init && newAutoExpandParent !== oldAutoExpandParent) { - keys2 = props4.autoExpandParent || !init && props4.defaultExpandParent ? conductExpandParent(props4.expandedKeys, keyEntities.value) : props4.expandedKeys; - } else if (!init && props4.defaultExpandAll) { - const cloneKeyEntities = _extends({}, keyEntities.value); - delete cloneKeyEntities[MOTION_KEY]; - keys2 = Object.keys(cloneKeyEntities).map((key2) => cloneKeyEntities[key2].key); - } else if (!init && props4.defaultExpandedKeys) { - keys2 = props4.autoExpandParent || props4.defaultExpandParent ? conductExpandParent(props4.defaultExpandedKeys, keyEntities.value) : props4.defaultExpandedKeys; - } - if (keys2) { - expandedKeys.value = keys2; - } - init = true; - }, - { - immediate: true - } - ); - const flattenNodes = shallowRef([]); - watchEffect(() => { - flattenNodes.value = flattenTreeData(treeData.value, expandedKeys.value, fieldNames.value); - }); - watchEffect(() => { - if (props4.selectable) { - if (props4.selectedKeys !== void 0) { - selectedKeys.value = calcSelectedKeys(props4.selectedKeys, props4); - } else if (!init && props4.defaultSelectedKeys) { - selectedKeys.value = calcSelectedKeys(props4.defaultSelectedKeys, props4); - } - } - }); - const { - maxLevel, - levelEntities - } = useMaxLevel(keyEntities); - watchEffect(() => { - if (props4.checkable) { - let checkedKeyEntity; - if (props4.checkedKeys !== void 0) { - checkedKeyEntity = parseCheckedKeys(props4.checkedKeys) || {}; - } else if (!init && props4.defaultCheckedKeys) { - checkedKeyEntity = parseCheckedKeys(props4.defaultCheckedKeys) || {}; - } else if (treeData.value) { - checkedKeyEntity = parseCheckedKeys(props4.checkedKeys) || { - checkedKeys: checkedKeys.value, - halfCheckedKeys: halfCheckedKeys.value - }; - } - if (checkedKeyEntity) { - let { - checkedKeys: newCheckedKeys = [], - halfCheckedKeys: newHalfCheckedKeys = [] - } = checkedKeyEntity; - if (!props4.checkStrictly) { - const conductKeys = conductCheck(newCheckedKeys, true, keyEntities.value, maxLevel.value, levelEntities.value); - ({ - checkedKeys: newCheckedKeys, - halfCheckedKeys: newHalfCheckedKeys - } = conductKeys); - } - checkedKeys.value = newCheckedKeys; - halfCheckedKeys.value = newHalfCheckedKeys; - } - } - }); - watchEffect(() => { - if (props4.loadedKeys) { - loadedKeys.value = props4.loadedKeys; - } - }); - const resetDragState = () => { - _extends(dragState, { - dragOverNodeKey: null, - dropPosition: null, - dropLevelOffset: null, - dropTargetKey: null, - dropContainerKey: null, - dropTargetPos: null, - dropAllowed: false - }); - }; - const scrollTo3 = (scroll) => { - listRef.value.scrollTo(scroll); - }; - watch(() => props4.activeKey, () => { - if (props4.activeKey !== void 0) { - activeKey.value = props4.activeKey; - } - }, { - immediate: true - }); - watch(activeKey, (val) => { - nextTick(() => { - if (val !== null) { - scrollTo3({ - key: val - }); - } - }); - }, { - immediate: true, - flush: "post" - }); - const setExpandedKeys = (keys2) => { - if (props4.expandedKeys === void 0) { - expandedKeys.value = keys2; - } - }; - const cleanDragState = () => { - if (dragState.draggingNodeKey !== null) { - _extends(dragState, { - draggingNodeKey: null, - dropPosition: null, - dropContainerKey: null, - dropTargetKey: null, - dropLevelOffset: null, - dropAllowed: true, - dragOverNodeKey: null - }); - } - dragStartMousePosition = null; - currentMouseOverDroppableNodeKey = null; - }; - const onNodeDragEnd = (event, node2) => { - const { - onDragend - } = props4; - dragState.dragOverNodeKey = null; - cleanDragState(); - onDragend === null || onDragend === void 0 ? void 0 : onDragend({ - event, - node: node2.eventData - }); - dragNode = null; - }; - const onWindowDragEnd = (event) => { - onNodeDragEnd(event, null, true); - window.removeEventListener("dragend", onWindowDragEnd); - }; - const onNodeDragStart = (event, node2) => { - const { - onDragstart - } = props4; - const { - eventKey, - eventData - } = node2; - dragNode = node2; - dragStartMousePosition = { - x: event.clientX, - y: event.clientY - }; - const newExpandedKeys = arrDel(expandedKeys.value, eventKey); - dragState.draggingNodeKey = eventKey; - dragState.dragChildrenKeys = getDragChildrenKeys(eventKey, keyEntities.value); - indent.value = listRef.value.getIndentWidth(); - setExpandedKeys(newExpandedKeys); - window.addEventListener("dragend", onWindowDragEnd); - if (onDragstart) { - onDragstart({ - event, - node: eventData - }); - } - }; - const onNodeDragEnter = (event, node2) => { - const { - onDragenter, - onExpand, - allowDrop, - direction - } = props4; - const { - pos, - eventKey - } = node2; - if (currentMouseOverDroppableNodeKey !== eventKey) { - currentMouseOverDroppableNodeKey = eventKey; - } - if (!dragNode) { - resetDragState(); - return; - } - const { - dropPosition, - dropLevelOffset, - dropTargetKey, - dropContainerKey, - dropTargetPos, - dropAllowed, - dragOverNodeKey - } = calcDropPosition(event, dragNode, node2, indent.value, dragStartMousePosition, allowDrop, flattenNodes.value, keyEntities.value, expandedKeysSet.value, direction); - if ( - // don't allow drop inside its children - dragState.dragChildrenKeys.indexOf(dropTargetKey) !== -1 || // don't allow drop when drop is not allowed caculated by calcDropPosition - !dropAllowed - ) { - resetDragState(); - return; - } - if (!delayedDragEnterLogic) { - delayedDragEnterLogic = {}; - } - Object.keys(delayedDragEnterLogic).forEach((key2) => { - clearTimeout(delayedDragEnterLogic[key2]); - }); - if (dragNode.eventKey !== node2.eventKey) { - delayedDragEnterLogic[pos] = window.setTimeout(() => { - if (dragState.draggingNodeKey === null) return; - let newExpandedKeys = expandedKeys.value.slice(); - const entity = keyEntities.value[node2.eventKey]; - if (entity && (entity.children || []).length) { - newExpandedKeys = arrAdd(expandedKeys.value, node2.eventKey); - } - setExpandedKeys(newExpandedKeys); - if (onExpand) { - onExpand(newExpandedKeys, { - node: node2.eventData, - expanded: true, - nativeEvent: event - }); - } - }, 800); - } - if (dragNode.eventKey === dropTargetKey && dropLevelOffset === 0) { - resetDragState(); - return; - } - _extends(dragState, { - dragOverNodeKey, - dropPosition, - dropLevelOffset, - dropTargetKey, - dropContainerKey, - dropTargetPos, - dropAllowed - }); - if (onDragenter) { - onDragenter({ - event, - node: node2.eventData, - expandedKeys: expandedKeys.value - }); - } - }; - const onNodeDragOver = (event, node2) => { - const { - onDragover, - allowDrop, - direction - } = props4; - if (!dragNode) { - return; - } - const { - dropPosition, - dropLevelOffset, - dropTargetKey, - dropContainerKey, - dropAllowed, - dropTargetPos, - dragOverNodeKey - } = calcDropPosition(event, dragNode, node2, indent.value, dragStartMousePosition, allowDrop, flattenNodes.value, keyEntities.value, expandedKeysSet.value, direction); - if (dragState.dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) { - return; - } - if (dragNode.eventKey === dropTargetKey && dropLevelOffset === 0) { - if (!(dragState.dropPosition === null && dragState.dropLevelOffset === null && dragState.dropTargetKey === null && dragState.dropContainerKey === null && dragState.dropTargetPos === null && dragState.dropAllowed === false && dragState.dragOverNodeKey === null)) { - resetDragState(); - } - } else if (!(dropPosition === dragState.dropPosition && dropLevelOffset === dragState.dropLevelOffset && dropTargetKey === dragState.dropTargetKey && dropContainerKey === dragState.dropContainerKey && dropTargetPos === dragState.dropTargetPos && dropAllowed === dragState.dropAllowed && dragOverNodeKey === dragState.dragOverNodeKey)) { - _extends(dragState, { - dropPosition, - dropLevelOffset, - dropTargetKey, - dropContainerKey, - dropTargetPos, - dropAllowed, - dragOverNodeKey - }); - } - if (onDragover) { - onDragover({ - event, - node: node2.eventData - }); - } - }; - const onNodeDragLeave = (event, node2) => { - if (currentMouseOverDroppableNodeKey === node2.eventKey && !event.currentTarget.contains(event.relatedTarget)) { - resetDragState(); - currentMouseOverDroppableNodeKey = null; - } - const { - onDragleave - } = props4; - if (onDragleave) { - onDragleave({ - event, - node: node2.eventData - }); - } - }; - const onNodeDrop = function(event, _node) { - let outsideTree = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - var _a2; - const { - dragChildrenKeys, - dropPosition, - dropTargetKey, - dropTargetPos, - dropAllowed - } = dragState; - if (!dropAllowed) return; - const { - onDrop - } = props4; - dragState.dragOverNodeKey = null; - cleanDragState(); - if (dropTargetKey === null) return; - const abstractDropNodeProps = _extends(_extends({}, getTreeNodeProps(dropTargetKey, toRaw(treeNodeRequiredProps.value))), { - active: ((_a2 = activeItem.value) === null || _a2 === void 0 ? void 0 : _a2.key) === dropTargetKey, - data: keyEntities.value[dropTargetKey].node - }); - const dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1; - warning(!dropToChild, "Can not drop to dragNode's children node. Maybe this is a bug of ant-design-vue. Please report an issue."); - const posArr = posToArr(dropTargetPos); - const dropResult = { - event, - node: convertNodePropsToEventData(abstractDropNodeProps), - dragNode: dragNode ? dragNode.eventData : null, - dragNodesKeys: [dragNode.eventKey].concat(dragChildrenKeys), - dropToGap: dropPosition !== 0, - dropPosition: dropPosition + Number(posArr[posArr.length - 1]) - }; - if (!outsideTree) { - onDrop === null || onDrop === void 0 ? void 0 : onDrop(dropResult); - } - dragNode = null; - }; - const triggerExpandActionExpand = (e3, treeNode) => { - const { - expanded, - key: key2 - } = treeNode; - const node2 = flattenNodes.value.filter((nodeItem) => nodeItem.key === key2)[0]; - const eventNode = convertNodePropsToEventData(_extends(_extends({}, getTreeNodeProps(key2, treeNodeRequiredProps.value)), { - data: node2.data - })); - setExpandedKeys(expanded ? arrDel(expandedKeys.value, key2) : arrAdd(expandedKeys.value, key2)); - onNodeExpand(e3, eventNode); - }; - const onNodeClick = (e3, treeNode) => { - const { - onClick, - expandAction - } = props4; - if (expandAction === "click") { - triggerExpandActionExpand(e3, treeNode); - } - if (onClick) { - onClick(e3, treeNode); - } - }; - const onNodeDoubleClick = (e3, treeNode) => { - const { - onDblclick, - expandAction - } = props4; - if (expandAction === "doubleclick" || expandAction === "dblclick") { - triggerExpandActionExpand(e3, treeNode); - } - if (onDblclick) { - onDblclick(e3, treeNode); - } - }; - const onNodeSelect = (e3, treeNode) => { - let newSelectedKeys = selectedKeys.value; - const { - onSelect, - multiple - } = props4; - const { - selected - } = treeNode; - const key2 = treeNode[fieldNames.value.key]; - const targetSelected = !selected; - if (!targetSelected) { - newSelectedKeys = arrDel(newSelectedKeys, key2); - } else if (!multiple) { - newSelectedKeys = [key2]; - } else { - newSelectedKeys = arrAdd(newSelectedKeys, key2); - } - const keyEntitiesValue = keyEntities.value; - const selectedNodes = newSelectedKeys.map((selectedKey) => { - const entity = keyEntitiesValue[selectedKey]; - if (!entity) return null; - return entity.node; - }).filter((node2) => node2); - if (props4.selectedKeys === void 0) { - selectedKeys.value = newSelectedKeys; - } - if (onSelect) { - onSelect(newSelectedKeys, { - event: "select", - selected: targetSelected, - node: treeNode, - selectedNodes, - nativeEvent: e3 - }); - } - }; - const onNodeCheck = (e3, treeNode, checked) => { - const { - checkStrictly, - onCheck - } = props4; - const key2 = treeNode[fieldNames.value.key]; - let checkedObj; - const eventObj = { - event: "check", - node: treeNode, - checked, - nativeEvent: e3 - }; - const keyEntitiesValue = keyEntities.value; - if (checkStrictly) { - const newCheckedKeys = checked ? arrAdd(checkedKeys.value, key2) : arrDel(checkedKeys.value, key2); - const newHalfCheckedKeys = arrDel(halfCheckedKeys.value, key2); - checkedObj = { - checked: newCheckedKeys, - halfChecked: newHalfCheckedKeys - }; - eventObj.checkedNodes = newCheckedKeys.map((checkedKey) => keyEntitiesValue[checkedKey]).filter((entity) => entity).map((entity) => entity.node); - if (props4.checkedKeys === void 0) { - checkedKeys.value = newCheckedKeys; - } - } else { - let { - checkedKeys: newCheckedKeys, - halfCheckedKeys: newHalfCheckedKeys - } = conductCheck([...checkedKeys.value, key2], true, keyEntitiesValue, maxLevel.value, levelEntities.value); - if (!checked) { - const keySet = new Set(newCheckedKeys); - keySet.delete(key2); - ({ - checkedKeys: newCheckedKeys, - halfCheckedKeys: newHalfCheckedKeys - } = conductCheck(Array.from(keySet), { - checked: false, - halfCheckedKeys: newHalfCheckedKeys - }, keyEntitiesValue, maxLevel.value, levelEntities.value)); - } - checkedObj = newCheckedKeys; - eventObj.checkedNodes = []; - eventObj.checkedNodesPositions = []; - eventObj.halfCheckedKeys = newHalfCheckedKeys; - newCheckedKeys.forEach((checkedKey) => { - const entity = keyEntitiesValue[checkedKey]; - if (!entity) return; - const { - node: node2, - pos - } = entity; - eventObj.checkedNodes.push(node2); - eventObj.checkedNodesPositions.push({ - node: node2, - pos - }); - }); - if (props4.checkedKeys === void 0) { - checkedKeys.value = newCheckedKeys; - halfCheckedKeys.value = newHalfCheckedKeys; - } - } - if (onCheck) { - onCheck(checkedObj, eventObj); - } - }; - const onNodeLoad = (treeNode) => { - const key2 = treeNode[fieldNames.value.key]; - const loadPromise = new Promise((resolve, reject2) => { - const { - loadData, - onLoad - } = props4; - if (!loadData || loadedKeysSet.value.has(key2) || loadingKeysSet.value.has(key2)) { - return null; - } - const promise = loadData(treeNode); - promise.then(() => { - const newLoadedKeys = arrAdd(loadedKeys.value, key2); - const newLoadingKeys = arrDel(loadingKeys.value, key2); - if (onLoad) { - onLoad(newLoadedKeys, { - event: "load", - node: treeNode - }); - } - if (props4.loadedKeys === void 0) { - loadedKeys.value = newLoadedKeys; - } - loadingKeys.value = newLoadingKeys; - resolve(); - }).catch((e3) => { - const newLoadingKeys = arrDel(loadingKeys.value, key2); - loadingKeys.value = newLoadingKeys; - loadingRetryTimes[key2] = (loadingRetryTimes[key2] || 0) + 1; - if (loadingRetryTimes[key2] >= MAX_RETRY_TIMES) { - warning(false, "Retry for `loadData` many times but still failed. No more retry."); - const newLoadedKeys = arrAdd(loadedKeys.value, key2); - if (props4.loadedKeys === void 0) { - loadedKeys.value = newLoadedKeys; - } - resolve(); - } - reject2(e3); - }); - loadingKeys.value = arrAdd(loadingKeys.value, key2); - }); - loadPromise.catch(() => { - }); - return loadPromise; - }; - const onNodeMouseEnter = (event, node2) => { - const { - onMouseenter - } = props4; - if (onMouseenter) { - onMouseenter({ - event, - node: node2 - }); - } - }; - const onNodeMouseLeave = (event, node2) => { - const { - onMouseleave - } = props4; - if (onMouseleave) { - onMouseleave({ - event, - node: node2 - }); - } - }; - const onNodeContextMenu = (event, node2) => { - const { - onRightClick - } = props4; - if (onRightClick) { - event.preventDefault(); - onRightClick({ - event, - node: node2 - }); - } - }; - const onFocus = (e3) => { - const { - onFocus: onFocus2 - } = props4; - focused.value = true; - if (onFocus2) { - onFocus2(e3); - } - }; - const onBlur = (e3) => { - const { - onBlur: onBlur2 - } = props4; - focused.value = false; - onActiveChange(null); - if (onBlur2) { - onBlur2(e3); - } - }; - const onNodeExpand = (e3, treeNode) => { - let newExpandedKeys = expandedKeys.value; - const { - onExpand, - loadData - } = props4; - const { - expanded - } = treeNode; - const key2 = treeNode[fieldNames.value.key]; - if (listChanging.value) { - return; - } - const index3 = newExpandedKeys.indexOf(key2); - const targetExpanded = !expanded; - warning(expanded && index3 !== -1 || !expanded && index3 === -1, "Expand state not sync with index check"); - if (targetExpanded) { - newExpandedKeys = arrAdd(newExpandedKeys, key2); - } else { - newExpandedKeys = arrDel(newExpandedKeys, key2); - } - setExpandedKeys(newExpandedKeys); - if (onExpand) { - onExpand(newExpandedKeys, { - node: treeNode, - expanded: targetExpanded, - nativeEvent: e3 - }); - } - if (targetExpanded && loadData) { - const loadPromise = onNodeLoad(treeNode); - if (loadPromise) { - loadPromise.then(() => { - }).catch((e4) => { - const expandedKeysToRestore = arrDel(expandedKeys.value, key2); - setExpandedKeys(expandedKeysToRestore); - Promise.reject(e4); - }); - } - } - }; - const onListChangeStart = () => { - listChanging.value = true; - }; - const onListChangeEnd = () => { - setTimeout(() => { - listChanging.value = false; - }); - }; - const onActiveChange = (newActiveKey) => { - const { - onActiveChange: onActiveChange2 - } = props4; - if (activeKey.value === newActiveKey) { - return; - } - if (props4.activeKey !== void 0) { - activeKey.value = newActiveKey; - } - if (newActiveKey !== null) { - scrollTo3({ - key: newActiveKey - }); - } - if (onActiveChange2) { - onActiveChange2(newActiveKey); - } - }; - const activeItem = computed(() => { - if (activeKey.value === null) { - return null; - } - return flattenNodes.value.find((_ref4) => { - let { - key: key2 - } = _ref4; - return key2 === activeKey.value; - }) || null; - }); - const offsetActiveKey = (offset4) => { - let index3 = flattenNodes.value.findIndex((_ref5) => { - let { - key: key2 - } = _ref5; - return key2 === activeKey.value; - }); - if (index3 === -1 && offset4 < 0) { - index3 = flattenNodes.value.length; - } - index3 = (index3 + offset4 + flattenNodes.value.length) % flattenNodes.value.length; - const item = flattenNodes.value[index3]; - if (item) { - const { - key: key2 - } = item; - onActiveChange(key2); - } else { - onActiveChange(null); - } - }; - const activeItemEventNode = computed(() => { - return convertNodePropsToEventData(_extends(_extends({}, getTreeNodeProps(activeKey.value, treeNodeRequiredProps.value)), { - data: activeItem.value.data, - active: true - })); - }); - const onKeydown = (event) => { - const { - onKeydown: onKeydown2, - checkable, - selectable - } = props4; - switch (event.which) { - case KeyCode_default.UP: { - offsetActiveKey(-1); - event.preventDefault(); - break; - } - case KeyCode_default.DOWN: { - offsetActiveKey(1); - event.preventDefault(); - break; - } - } - const item = activeItem.value; - if (item && item.data) { - const expandable = item.data.isLeaf === false || !!(item.data.children || []).length; - const eventNode = activeItemEventNode.value; - switch (event.which) { - case KeyCode_default.LEFT: { - if (expandable && expandedKeysSet.value.has(activeKey.value)) { - onNodeExpand({}, eventNode); - } else if (item.parent) { - onActiveChange(item.parent.key); - } - event.preventDefault(); - break; - } - case KeyCode_default.RIGHT: { - if (expandable && !expandedKeysSet.value.has(activeKey.value)) { - onNodeExpand({}, eventNode); - } else if (item.children && item.children.length) { - onActiveChange(item.children[0].key); - } - event.preventDefault(); - break; - } - case KeyCode_default.ENTER: - case KeyCode_default.SPACE: { - if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) { - onNodeCheck({}, eventNode, !checkedKeysSet.value.has(activeKey.value)); - } else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) { - onNodeSelect({}, eventNode); - } - break; - } - } - } - if (onKeydown2) { - onKeydown2(event); - } - }; - expose({ - onNodeExpand, - scrollTo: scrollTo3, - onKeydown, - selectedKeys: computed(() => selectedKeys.value), - checkedKeys: computed(() => checkedKeys.value), - halfCheckedKeys: computed(() => halfCheckedKeys.value), - loadedKeys: computed(() => loadedKeys.value), - loadingKeys: computed(() => loadingKeys.value), - expandedKeys: computed(() => expandedKeys.value) - }); - onUnmounted(() => { - window.removeEventListener("dragend", onWindowDragEnd); - destroyed.value = true; - }); - useProvideKeysState({ - expandedKeys, - selectedKeys, - loadedKeys, - loadingKeys, - checkedKeys, - halfCheckedKeys, - expandedKeysSet, - selectedKeysSet, - loadedKeysSet, - loadingKeysSet, - checkedKeysSet, - halfCheckedKeysSet, - flattenNodes - }); - return () => { - const { - // focused, - // flattenNodes, - // keyEntities, - draggingNodeKey, - // activeKey, - dropLevelOffset, - dropContainerKey, - dropTargetKey, - dropPosition, - dragOverNodeKey - // indent, - } = dragState; - const { - prefixCls, - showLine, - focusable, - tabindex = 0, - selectable, - showIcon, - icon = slots.icon, - switcherIcon, - draggable, - checkable, - checkStrictly, - disabled, - motion, - loadData, - filterTreeNode, - height, - itemHeight, - virtual, - dropIndicatorRender: dropIndicatorRender2, - onContextmenu, - onScroll, - direction, - rootClassName, - rootStyle - } = props4; - const { - class: className, - style - } = attrs; - const domProps = pickAttrs(_extends(_extends({}, props4), attrs), { - aria: true, - data: true - }); - let draggableConfig; - if (draggable) { - if (typeof draggable === "object") { - draggableConfig = draggable; - } else if (typeof draggable === "function") { - draggableConfig = { - nodeDraggable: draggable - }; - } else { - draggableConfig = {}; - } - } else { - draggableConfig = false; - } - return createVNode(TreeContext, { - "value": { - prefixCls, - selectable, - showIcon, - icon, - switcherIcon, - draggable: draggableConfig, - draggingNodeKey, - checkable, - customCheckable: slots.checkable, - checkStrictly, - disabled, - keyEntities: keyEntities.value, - dropLevelOffset, - dropContainerKey, - dropTargetKey, - dropPosition, - dragOverNodeKey, - dragging: draggingNodeKey !== null, - indent: indent.value, - direction, - dropIndicatorRender: dropIndicatorRender2, - loadData, - filterTreeNode, - onNodeClick, - onNodeDoubleClick, - onNodeExpand, - onNodeSelect, - onNodeCheck, - onNodeLoad, - onNodeMouseEnter, - onNodeMouseLeave, - onNodeContextMenu, - onNodeDragStart, - onNodeDragEnter, - onNodeDragOver, - onNodeDragLeave, - onNodeDragEnd, - onNodeDrop, - slots - } - }, { - default: () => [createVNode("div", { - "role": "tree", - "class": classNames_default(prefixCls, className, rootClassName, { - [`${prefixCls}-show-line`]: showLine, - [`${prefixCls}-focused`]: focused.value, - [`${prefixCls}-active-focused`]: activeKey.value !== null - }), - "style": rootStyle - }, [createVNode(NodeList_default, _objectSpread2({ - "ref": listRef, - "prefixCls": prefixCls, - "style": style, - "disabled": disabled, - "selectable": selectable, - "checkable": !!checkable, - "motion": motion, - "height": height, - "itemHeight": itemHeight, - "virtual": virtual, - "focusable": focusable, - "focused": focused.value, - "tabindex": tabindex, - "activeItem": activeItem.value, - "onFocus": onFocus, - "onBlur": onBlur, - "onKeydown": onKeydown, - "onActiveChange": onActiveChange, - "onListChangeStart": onListChangeStart, - "onListChangeEnd": onListChangeEnd, - "onContextmenu": onContextmenu, - "onScroll": onScroll - }, domProps), null)])] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree/index.js -var vc_tree_default = Tree_default; - -// node_modules/ant-design-vue/es/tree/utils/iconUtil.js -function renderSwitcherIcon(prefixCls, switcherIcon, props4, leafIcon, showLine) { - const { - isLeaf: isLeaf2, - expanded, - loading - } = props4; - let icon = switcherIcon; - if (loading) { - return createVNode(LoadingOutlined_default, { - "class": `${prefixCls}-switcher-loading-icon` - }, null); - } - let showLeafIcon; - if (showLine && typeof showLine === "object") { - showLeafIcon = showLine.showLeafIcon; - } - let defaultIcon = null; - const switcherCls = `${prefixCls}-switcher-icon`; - if (isLeaf2) { - if (!showLine) { - return null; - } - if (showLeafIcon && leafIcon) { - return leafIcon(props4); - } - if (typeof showLine === "object" && !showLeafIcon) { - defaultIcon = createVNode("span", { - "class": `${prefixCls}-switcher-leaf-line` - }, null); - } else { - defaultIcon = createVNode(FileOutlined_default, { - "class": `${prefixCls}-switcher-line-icon` - }, null); - } - return defaultIcon; - } else { - defaultIcon = createVNode(CaretDownFilled_default, { - "class": switcherCls - }, null); - if (showLine) { - defaultIcon = expanded ? createVNode(MinusSquareOutlined_default, { - "class": `${prefixCls}-switcher-line-icon` - }, null) : createVNode(PlusSquareOutlined_default, { - "class": `${prefixCls}-switcher-line-icon` - }, null); - } - } - if (typeof switcherIcon === "function") { - icon = switcherIcon(_extends(_extends({}, props4), { - defaultIcon, - switcherCls - })); - } else if (isValidElement(icon)) { - icon = cloneVNode(icon, { - class: switcherCls - }); - } - return icon || defaultIcon; -} - -// node_modules/ant-design-vue/es/tree/utils/dropIndicator.js -var offset3 = 4; -function dropIndicatorRender(props4) { - const { - dropPosition, - dropLevelOffset, - prefixCls, - indent, - direction = "ltr" - } = props4; - const startPosition = direction === "ltr" ? "left" : "right"; - const endPosition = direction === "ltr" ? "right" : "left"; - const style = { - [startPosition]: `${-dropLevelOffset * indent + offset3}px`, - [endPosition]: 0 - }; - switch (dropPosition) { - case -1: - style.top = `${-3}px`; - break; - case 1: - style.bottom = `${-3}px`; - break; - default: - style.bottom = `${-3}px`; - style[startPosition] = `${indent + offset3}px`; - break; - } - return createVNode("div", { - "style": style, - "class": `${prefixCls}-drop-indicator` - }, null); -} - -// node_modules/ant-design-vue/es/tree/style/index.js -var treeNodeFX = new Keyframes_default("ant-tree-node-fx-do-not-use", { - "0%": { - opacity: 0 - }, - "100%": { - opacity: 1 - } -}); -var getSwitchStyle = (prefixCls, token2) => ({ - [`.${prefixCls}-switcher-icon`]: { - display: "inline-block", - fontSize: 10, - verticalAlign: "baseline", - svg: { - transition: `transform ${token2.motionDurationSlow}` - } - } -}); -var getDropIndicatorStyle = (prefixCls, token2) => ({ - [`.${prefixCls}-drop-indicator`]: { - position: "absolute", - // it should displayed over the following node - zIndex: 1, - height: 2, - backgroundColor: token2.colorPrimary, - borderRadius: 1, - pointerEvents: "none", - "&:after": { - position: "absolute", - top: -3, - insetInlineStart: -6, - width: 8, - height: 8, - backgroundColor: "transparent", - border: `${token2.lineWidthBold}px solid ${token2.colorPrimary}`, - borderRadius: "50%", - content: '""' - } - } -}); -var genBaseStyle16 = (prefixCls, token2) => { - const { - treeCls, - treeNodeCls, - treeNodePadding, - treeTitleHeight - } = token2; - const treeCheckBoxMarginVertical = (treeTitleHeight - token2.fontSizeLG) / 2; - const treeCheckBoxMarginHorizontal = token2.paddingXS; - return { - [treeCls]: _extends(_extends({}, resetComponent(token2)), { - background: token2.colorBgContainer, - borderRadius: token2.borderRadius, - transition: `background-color ${token2.motionDurationSlow}`, - [`&${treeCls}-rtl`]: { - // >>> Switcher - [`${treeCls}-switcher`]: { - "&_close": { - [`${treeCls}-switcher-icon`]: { - svg: { - transform: "rotate(90deg)" - } - } - } - } - }, - [`&-focused:not(:hover):not(${treeCls}-active-focused)`]: _extends({}, genFocusOutline(token2)), - // =================== Virtual List =================== - [`${treeCls}-list-holder-inner`]: { - alignItems: "flex-start" - }, - [`&${treeCls}-block-node`]: { - [`${treeCls}-list-holder-inner`]: { - alignItems: "stretch", - // >>> Title - [`${treeCls}-node-content-wrapper`]: { - flex: "auto" - }, - // >>> Drag - [`${treeNodeCls}.dragging`]: { - position: "relative", - "&:after": { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: treeNodePadding, - insetInlineStart: 0, - border: `1px solid ${token2.colorPrimary}`, - opacity: 0, - animationName: treeNodeFX, - animationDuration: token2.motionDurationSlow, - animationPlayState: "running", - animationFillMode: "forwards", - content: '""', - pointerEvents: "none" - } - } - } - }, - // ===================== TreeNode ===================== - [`${treeNodeCls}`]: { - display: "flex", - alignItems: "flex-start", - padding: `0 0 ${treeNodePadding}px 0`, - outline: "none", - "&-rtl": { - direction: "rtl" - }, - // Disabled - "&-disabled": { - // >>> Title - [`${treeCls}-node-content-wrapper`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed", - "&:hover": { - background: "transparent" - } - } - }, - [`&-active ${treeCls}-node-content-wrapper`]: _extends({}, genFocusOutline(token2)), - [`&:not(${treeNodeCls}-disabled).filter-node ${treeCls}-title`]: { - color: "inherit", - fontWeight: 500 - }, - "&-draggable": { - [`${treeCls}-draggable-icon`]: { - width: treeTitleHeight, - lineHeight: `${treeTitleHeight}px`, - textAlign: "center", - visibility: "visible", - opacity: 0.2, - transition: `opacity ${token2.motionDurationSlow}`, - [`${treeNodeCls}:hover &`]: { - opacity: 0.45 - } - }, - [`&${treeNodeCls}-disabled`]: { - [`${treeCls}-draggable-icon`]: { - visibility: "hidden" - } - } - } - }, - // >>> Indent - [`${treeCls}-indent`]: { - alignSelf: "stretch", - whiteSpace: "nowrap", - userSelect: "none", - "&-unit": { - display: "inline-block", - width: treeTitleHeight - } - }, - // >>> Drag Handler - [`${treeCls}-draggable-icon`]: { - visibility: "hidden" - }, - // >>> Switcher - [`${treeCls}-switcher`]: _extends(_extends({}, getSwitchStyle(prefixCls, token2)), { - position: "relative", - flex: "none", - alignSelf: "stretch", - width: treeTitleHeight, - margin: 0, - lineHeight: `${treeTitleHeight}px`, - textAlign: "center", - cursor: "pointer", - userSelect: "none", - "&-noop": { - cursor: "default" - }, - "&_close": { - [`${treeCls}-switcher-icon`]: { - svg: { - transform: "rotate(-90deg)" - } - } - }, - "&-loading-icon": { - color: token2.colorPrimary - }, - "&-leaf-line": { - position: "relative", - zIndex: 1, - display: "inline-block", - width: "100%", - height: "100%", - // https://github.com/ant-design/ant-design/issues/31884 - "&:before": { - position: "absolute", - top: 0, - insetInlineEnd: treeTitleHeight / 2, - bottom: -treeNodePadding, - marginInlineStart: -1, - borderInlineEnd: `1px solid ${token2.colorBorder}`, - content: '""' - }, - "&:after": { - position: "absolute", - width: treeTitleHeight / 2 * 0.8, - height: treeTitleHeight / 2, - borderBottom: `1px solid ${token2.colorBorder}`, - content: '""' - } - } - }), - // >>> Checkbox - [`${treeCls}-checkbox`]: { - top: "initial", - marginInlineEnd: treeCheckBoxMarginHorizontal, - marginBlockStart: treeCheckBoxMarginVertical - }, - // >>> Title - // add `${treeCls}-checkbox + span` to cover checkbox `${checkboxCls} + span` - [`${treeCls}-node-content-wrapper, ${treeCls}-checkbox + span`]: { - position: "relative", - zIndex: "auto", - minHeight: treeTitleHeight, - margin: 0, - padding: `0 ${token2.paddingXS / 2}px`, - color: "inherit", - lineHeight: `${treeTitleHeight}px`, - background: "transparent", - borderRadius: token2.borderRadius, - cursor: "pointer", - transition: `all ${token2.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`, - "&:hover": { - backgroundColor: token2.controlItemBgHover - }, - [`&${treeCls}-node-selected`]: { - backgroundColor: token2.controlItemBgActive - }, - // Icon - [`${treeCls}-iconEle`]: { - display: "inline-block", - width: treeTitleHeight, - height: treeTitleHeight, - lineHeight: `${treeTitleHeight}px`, - textAlign: "center", - verticalAlign: "top", - "&:empty": { - display: "none" - } - } - }, - // https://github.com/ant-design/ant-design/issues/28217 - [`${treeCls}-unselectable ${treeCls}-node-content-wrapper:hover`]: { - backgroundColor: "transparent" - }, - // ==================== Draggable ===================== - [`${treeCls}-node-content-wrapper`]: _extends({ - lineHeight: `${treeTitleHeight}px`, - userSelect: "none" - }, getDropIndicatorStyle(prefixCls, token2)), - [`${treeNodeCls}.drop-container`]: { - "> [draggable]": { - boxShadow: `0 0 0 2px ${token2.colorPrimary}` - } - }, - // ==================== Show Line ===================== - "&-show-line": { - // ================ Indent lines ================ - [`${treeCls}-indent`]: { - "&-unit": { - position: "relative", - height: "100%", - "&:before": { - position: "absolute", - top: 0, - insetInlineEnd: treeTitleHeight / 2, - bottom: -treeNodePadding, - borderInlineEnd: `1px solid ${token2.colorBorder}`, - content: '""' - }, - "&-end": { - "&:before": { - display: "none" - } - } - } - }, - // ============== Cover Background ============== - [`${treeCls}-switcher`]: { - background: "transparent", - "&-line-icon": { - // https://github.com/ant-design/ant-design/issues/32813 - verticalAlign: "-0.15em" - } - } - }, - [`${treeNodeCls}-leaf-last`]: { - [`${treeCls}-switcher`]: { - "&-leaf-line": { - "&:before": { - top: "auto !important", - bottom: "auto !important", - height: `${treeTitleHeight / 2}px !important` - } - } - } - } - }) - }; -}; -var genDirectoryStyle = (token2) => { - const { - treeCls, - treeNodeCls, - treeNodePadding - } = token2; - return { - [`${treeCls}${treeCls}-directory`]: { - // ================== TreeNode ================== - [treeNodeCls]: { - position: "relative", - // Hover color - "&:before": { - position: "absolute", - top: 0, - insetInlineEnd: 0, - bottom: treeNodePadding, - insetInlineStart: 0, - transition: `background-color ${token2.motionDurationMid}`, - content: '""', - pointerEvents: "none" - }, - "&:hover": { - "&:before": { - background: token2.controlItemBgHover - } - }, - // Elements - "> *": { - zIndex: 1 - }, - // >>> Switcher - [`${treeCls}-switcher`]: { - transition: `color ${token2.motionDurationMid}` - }, - // >>> Title - [`${treeCls}-node-content-wrapper`]: { - borderRadius: 0, - userSelect: "none", - "&:hover": { - background: "transparent" - }, - [`&${treeCls}-node-selected`]: { - color: token2.colorTextLightSolid, - background: "transparent" - } - }, - // ============= Selected ============= - "&-selected": { - [` - &:hover::before, - &::before - `]: { - background: token2.colorPrimary - }, - // >>> Switcher - [`${treeCls}-switcher`]: { - color: token2.colorTextLightSolid - }, - // >>> Title - [`${treeCls}-node-content-wrapper`]: { - color: token2.colorTextLightSolid, - background: "transparent" - } - } - } - } - }; -}; -var genTreeStyle = (prefixCls, token2) => { - const treeCls = `.${prefixCls}`; - const treeNodeCls = `${treeCls}-treenode`; - const treeNodePadding = token2.paddingXS / 2; - const treeTitleHeight = token2.controlHeightSM; - const treeToken = merge(token2, { - treeCls, - treeNodeCls, - treeNodePadding, - treeTitleHeight - }); - return [ - // Basic - genBaseStyle16(prefixCls, treeToken), - // Directory - genDirectoryStyle(treeToken) - ]; -}; -var style_default54 = genComponentStyleHook("Tree", (token2, _ref) => { - let { - prefixCls - } = _ref; - return [{ - [token2.componentCls]: getStyle2(`${prefixCls}-checkbox`, token2) - }, genTreeStyle(prefixCls, token2), collapse_default(token2)]; -}); - -// node_modules/ant-design-vue/es/tree/Tree.js -var treeProps2 = () => { - const baseTreeProps = treeProps(); - return _extends(_extends({}, baseTreeProps), { - showLine: someType([Boolean, Object]), - /** 是否支持多选 */ - multiple: booleanType(), - /** 是否自动展开父节点 */ - autoExpandParent: booleanType(), - /** checkable状态下节点选择完全受控(父子节点选中状态不再关联)*/ - checkStrictly: booleanType(), - /** 是否支持选中 */ - checkable: booleanType(), - /** 是否禁用树 */ - disabled: booleanType(), - /** 默认展开所有树节点 */ - defaultExpandAll: booleanType(), - /** 默认展开对应树节点 */ - defaultExpandParent: booleanType(), - /** 默认展开指定的树节点 */ - defaultExpandedKeys: arrayType(), - /** (受控)展开指定的树节点 */ - expandedKeys: arrayType(), - /** (受控)选中复选框的树节点 */ - checkedKeys: someType([Array, Object]), - /** 默认选中复选框的树节点 */ - defaultCheckedKeys: arrayType(), - /** (受控)设置选中的树节点 */ - selectedKeys: arrayType(), - /** 默认选中的树节点 */ - defaultSelectedKeys: arrayType(), - selectable: booleanType(), - loadedKeys: arrayType(), - draggable: booleanType(), - showIcon: booleanType(), - icon: functionType(), - switcherIcon: vue_types_default.any, - prefixCls: String, - /** - * @default{title,key,children} - * deprecated, please use `fieldNames` instead - * 替换treeNode中 title,key,children字段为treeData中对应的字段 - */ - replaceFields: objectType(), - blockNode: booleanType(), - openAnimation: vue_types_default.any, - onDoubleclick: baseTreeProps.onDblclick, - "onUpdate:selectedKeys": functionType(), - "onUpdate:checkedKeys": functionType(), - "onUpdate:expandedKeys": functionType() - }); -}; -var Tree_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATree", - inheritAttrs: false, - props: initDefaultProps_default(treeProps2(), { - checkable: false, - selectable: true, - showIcon: false, - blockNode: false - }), - slots: Object, - setup(props4, _ref) { - let { - attrs, - expose, - emit, - slots - } = _ref; - warning(!(props4.treeData === void 0 && slots.default), "`children` of Tree is deprecated. Please use `treeData` instead."); - const { - prefixCls, - direction, - virtual - } = useConfigInject_default("tree", props4); - const [wrapSSR, hashId] = style_default54(prefixCls); - const treeRef = ref(); - const scrollTo3 = (scroll) => { - var _a2; - (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(scroll); - }; - expose({ - treeRef, - onNodeExpand: function() { - var _a2; - (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.onNodeExpand(...arguments); - }, - scrollTo: scrollTo3, - selectedKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.selectedKeys; - }), - checkedKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.checkedKeys; - }), - halfCheckedKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.halfCheckedKeys; - }), - loadedKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.loadedKeys; - }), - loadingKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.loadingKeys; - }), - expandedKeys: computed(() => { - var _a2; - return (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.expandedKeys; - }) - }); - watchEffect(() => { - devWarning_default(props4.replaceFields === void 0, "Tree", "`replaceFields` is deprecated, please use fieldNames instead"); - }); - const handleCheck = (checkedObjOrKeys, eventObj) => { - emit("update:checkedKeys", checkedObjOrKeys); - emit("check", checkedObjOrKeys, eventObj); - }; - const handleExpand = (expandedKeys, eventObj) => { - emit("update:expandedKeys", expandedKeys); - emit("expand", expandedKeys, eventObj); - }; - const handleSelect = (selectedKeys, eventObj) => { - emit("update:selectedKeys", selectedKeys); - emit("select", selectedKeys, eventObj); - }; - return () => { - const { - showIcon, - showLine, - switcherIcon = slots.switcherIcon, - icon = slots.icon, - blockNode, - checkable, - selectable, - fieldNames = props4.replaceFields, - motion = props4.openAnimation, - itemHeight = 28, - onDoubleclick, - onDblclick - } = props4; - const newProps = _extends(_extends(_extends({}, attrs), omit_default(props4, ["onUpdate:checkedKeys", "onUpdate:expandedKeys", "onUpdate:selectedKeys", "onDoubleclick"])), { - showLine: Boolean(showLine), - dropIndicatorRender, - fieldNames, - icon, - itemHeight - }); - const children = slots.default ? filterEmpty(slots.default()) : void 0; - return wrapSSR(createVNode(vc_tree_default, _objectSpread2(_objectSpread2({}, newProps), {}, { - "virtual": virtual.value, - "motion": motion, - "ref": treeRef, - "prefixCls": prefixCls.value, - "class": classNames_default({ - [`${prefixCls.value}-icon-hide`]: !showIcon, - [`${prefixCls.value}-block-node`]: blockNode, - [`${prefixCls.value}-unselectable`]: !selectable, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value), - "direction": direction.value, - "checkable": checkable, - "selectable": selectable, - "switcherIcon": (nodeProps) => renderSwitcherIcon(prefixCls.value, switcherIcon, nodeProps, slots.leafIcon, showLine), - "onCheck": handleCheck, - "onExpand": handleExpand, - "onSelect": handleSelect, - "onDblclick": onDblclick || onDoubleclick, - "children": children - }), _extends(_extends({}, slots), { - checkable: () => createVNode("span", { - "class": `${prefixCls.value}-checkbox-inner` - }, null) - }))); - }; - } -}); - -// node_modules/ant-design-vue/es/tree/utils/dictUtil.js -var Record; -(function(Record2) { - Record2[Record2["None"] = 0] = "None"; - Record2[Record2["Start"] = 1] = "Start"; - Record2[Record2["End"] = 2] = "End"; -})(Record || (Record = {})); -function traverseNodesKey(treeData, fieldNames, callback) { - function processNode(dataNode) { - const key2 = dataNode[fieldNames.key]; - const children = dataNode[fieldNames.children]; - if (callback(key2, dataNode) !== false) { - traverseNodesKey(children || [], fieldNames, callback); - } - } - treeData.forEach(processNode); -} -function calcRangeKeys(_ref) { - let { - treeData, - expandedKeys, - startKey, - endKey, - fieldNames = { - title: "title", - key: "key", - children: "children" - } - } = _ref; - const keys2 = []; - let record = Record.None; - if (startKey && startKey === endKey) { - return [startKey]; - } - if (!startKey || !endKey) { - return []; - } - function matchKey(key2) { - return key2 === startKey || key2 === endKey; - } - traverseNodesKey(treeData, fieldNames, (key2) => { - if (record === Record.End) { - return false; - } - if (matchKey(key2)) { - keys2.push(key2); - if (record === Record.None) { - record = Record.Start; - } else if (record === Record.Start) { - record = Record.End; - return false; - } - } else if (record === Record.Start) { - keys2.push(key2); - } - return expandedKeys.includes(key2); - }); - return keys2; -} -function convertDirectoryKeysToNodes(treeData, keys2, fieldNames) { - const restKeys = [...keys2]; - const nodes = []; - traverseNodesKey(treeData, fieldNames, (key2, node2) => { - const index3 = restKeys.indexOf(key2); - if (index3 !== -1) { - nodes.push(node2); - restKeys.splice(index3, 1); - } - return !!restKeys.length; - }); - return nodes; -} - -// node_modules/ant-design-vue/es/tree/DirectoryTree.js -var __rest69 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var directoryTreeProps = () => _extends(_extends({}, treeProps2()), { - expandAction: someType([Boolean, String]) -}); -function getIcon(props4) { - const { - isLeaf: isLeaf2, - expanded - } = props4; - if (isLeaf2) { - return createVNode(FileOutlined_default, null, null); - } - return expanded ? createVNode(FolderOpenOutlined_default, null, null) : createVNode(FolderOutlined_default, null, null); -} -var DirectoryTree_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ADirectoryTree", - inheritAttrs: false, - props: initDefaultProps_default(directoryTreeProps(), { - showIcon: true, - expandAction: "click" - }), - slots: Object, - // emits: [ - // 'update:selectedKeys', - // 'update:checkedKeys', - // 'update:expandedKeys', - // 'expand', - // 'select', - // 'check', - // 'doubleclick', - // 'dblclick', - // 'click', - // ], - setup(props4, _ref) { - let { - attrs, - slots, - emit, - expose - } = _ref; - var _a2; - const treeData = ref(props4.treeData || convertTreeToData(filterEmpty((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)))); - watch(() => props4.treeData, () => { - treeData.value = props4.treeData; - }); - onUpdated(() => { - nextTick(() => { - var _a3; - if (props4.treeData === void 0 && slots.default) { - treeData.value = convertTreeToData(filterEmpty((_a3 = slots.default) === null || _a3 === void 0 ? void 0 : _a3.call(slots))); - } - }); - }); - const lastSelectedKey = ref(); - const cachedSelectedKeys = ref(); - const fieldNames = computed(() => fillFieldNames3(props4.fieldNames)); - const treeRef = ref(); - const scrollTo3 = (scroll) => { - var _a3; - (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.scrollTo(scroll); - }; - expose({ - scrollTo: scrollTo3, - selectedKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.selectedKeys; - }), - checkedKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.checkedKeys; - }), - halfCheckedKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.halfCheckedKeys; - }), - loadedKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.loadedKeys; - }), - loadingKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.loadingKeys; - }), - expandedKeys: computed(() => { - var _a3; - return (_a3 = treeRef.value) === null || _a3 === void 0 ? void 0 : _a3.expandedKeys; - }) - }); - const getInitExpandedKeys = () => { - const { - keyEntities - } = convertDataToEntities(treeData.value, { - fieldNames: fieldNames.value - }); - let initExpandedKeys; - if (props4.defaultExpandAll) { - initExpandedKeys = Object.keys(keyEntities); - } else if (props4.defaultExpandParent) { - initExpandedKeys = conductExpandParent(props4.expandedKeys || props4.defaultExpandedKeys || [], keyEntities); - } else { - initExpandedKeys = props4.expandedKeys || props4.defaultExpandedKeys; - } - return initExpandedKeys; - }; - const selectedKeys = ref(props4.selectedKeys || props4.defaultSelectedKeys || []); - const expandedKeys = ref(getInitExpandedKeys()); - watch(() => props4.selectedKeys, () => { - if (props4.selectedKeys !== void 0) { - selectedKeys.value = props4.selectedKeys; - } - }, { - immediate: true - }); - watch(() => props4.expandedKeys, () => { - if (props4.expandedKeys !== void 0) { - expandedKeys.value = props4.expandedKeys; - } - }, { - immediate: true - }); - const expandFolderNode = (event, node2) => { - const { - isLeaf: isLeaf2 - } = node2; - if (isLeaf2 || event.shiftKey || event.metaKey || event.ctrlKey) { - return; - } - treeRef.value.onNodeExpand(event, node2); - }; - const onDebounceExpand = debounce_default(expandFolderNode, 200, { - leading: true - }); - const onExpand = (keys2, info) => { - if (props4.expandedKeys === void 0) { - expandedKeys.value = keys2; - } - emit("update:expandedKeys", keys2); - emit("expand", keys2, info); - }; - const onClick = (event, node2) => { - const { - expandAction - } = props4; - if (expandAction === "click") { - onDebounceExpand(event, node2); - } - emit("click", event, node2); - }; - const onDoubleClick = (event, node2) => { - const { - expandAction - } = props4; - if (expandAction === "dblclick" || expandAction === "doubleclick") { - onDebounceExpand(event, node2); - } - emit("doubleclick", event, node2); - emit("dblclick", event, node2); - }; - const onSelect = (keys2, event) => { - const { - multiple - } = props4; - const { - node: node2, - nativeEvent - } = event; - const key2 = node2[fieldNames.value.key]; - const newEvent = _extends(_extends({}, event), { - selected: true - }); - const ctrlPick = (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.ctrlKey) || (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.metaKey); - const shiftPick = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.shiftKey; - let newSelectedKeys; - if (multiple && ctrlPick) { - newSelectedKeys = keys2; - lastSelectedKey.value = key2; - cachedSelectedKeys.value = newSelectedKeys; - newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData.value, newSelectedKeys, fieldNames.value); - } else if (multiple && shiftPick) { - newSelectedKeys = Array.from(/* @__PURE__ */ new Set([...cachedSelectedKeys.value || [], ...calcRangeKeys({ - treeData: treeData.value, - expandedKeys: expandedKeys.value, - startKey: key2, - endKey: lastSelectedKey.value, - fieldNames: fieldNames.value - })])); - newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData.value, newSelectedKeys, fieldNames.value); - } else { - newSelectedKeys = [key2]; - lastSelectedKey.value = key2; - cachedSelectedKeys.value = newSelectedKeys; - newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData.value, newSelectedKeys, fieldNames.value); - } - emit("update:selectedKeys", newSelectedKeys); - emit("select", newSelectedKeys, newEvent); - if (props4.selectedKeys === void 0) { - selectedKeys.value = newSelectedKeys; - } - }; - const onCheck = (checkedObjOrKeys, eventObj) => { - emit("update:checkedKeys", checkedObjOrKeys); - emit("check", checkedObjOrKeys, eventObj); - }; - const { - prefixCls, - direction - } = useConfigInject_default("tree", props4); - return () => { - const connectClassName = classNames_default(`${prefixCls.value}-directory`, { - [`${prefixCls.value}-directory-rtl`]: direction.value === "rtl" - }, attrs.class); - const { - icon = slots.icon, - blockNode = true - } = props4, otherProps = __rest69(props4, ["icon", "blockNode"]); - return createVNode(Tree_default2, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), {}, { - "icon": icon || getIcon, - "ref": treeRef, - "blockNode": blockNode - }, otherProps), {}, { - "prefixCls": prefixCls.value, - "class": connectClassName, - "expandedKeys": expandedKeys.value, - "selectedKeys": selectedKeys.value, - "onSelect": onSelect, - "onClick": onClick, - "onDblclick": onDoubleClick, - "onExpand": onExpand, - "onCheck": onCheck - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/tree/index.js -var TreeNode = TreeNode_default; -var tree_default = _extends(Tree_default2, { - DirectoryTree: DirectoryTree_default, - TreeNode, - install: (app) => { - app.component(Tree_default2.name, Tree_default2); - app.component(TreeNode.name, TreeNode); - app.component(DirectoryTree_default.name, DirectoryTree_default); - return app; - } -}); - -// node_modules/ant-design-vue/es/vc-util/isEqual.js -function isEqual3(obj1, obj2) { - let shallow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - const refSet = /* @__PURE__ */ new Set(); - function deepEqual(a2, b2) { - let level = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; - const circular = refSet.has(a2); - warning_default(!circular, "Warning: There may be circular references"); - if (circular) { - return false; - } - if (a2 === b2) { - return true; - } - if (shallow && level > 1) { - return false; - } - refSet.add(a2); - const newLevel = level + 1; - if (Array.isArray(a2)) { - if (!Array.isArray(b2) || a2.length !== b2.length) { - return false; - } - for (let i3 = 0; i3 < a2.length; i3++) { - if (!deepEqual(a2[i3], b2[i3], newLevel)) { - return false; - } - } - return true; - } - if (a2 && b2 && typeof a2 === "object" && typeof b2 === "object") { - const keys2 = Object.keys(a2); - if (keys2.length !== Object.keys(b2).length) { - return false; - } - return keys2.every((key2) => deepEqual(a2[key2], b2[key2], newLevel)); - } - return false; - } - return deepEqual(obj1, obj2); -} -var isEqual_default2 = isEqual3; - -// node_modules/ant-design-vue/es/table/hooks/useFilter/FilterDropdown.js -var { - SubMenu, - Item: MenuItem -} = menu_default; -function hasSubMenu(filters) { - return filters.some((_ref) => { - let { - children - } = _ref; - return children && children.length > 0; - }); -} -function searchValueMatched(searchValue, text) { - if (typeof text === "string" || typeof text === "number") { - return text === null || text === void 0 ? void 0 : text.toString().toLowerCase().includes(searchValue.trim().toLowerCase()); - } - return false; -} -function renderFilterItems(_ref2) { - let { - filters, - prefixCls, - filteredKeys, - filterMultiple, - searchValue, - filterSearch - } = _ref2; - return filters.map((filter3, index3) => { - const key2 = String(filter3.value); - if (filter3.children) { - return createVNode(SubMenu, { - "key": key2 || index3, - "title": filter3.text, - "popupClassName": `${prefixCls}-dropdown-submenu` - }, { - default: () => [renderFilterItems({ - filters: filter3.children, - prefixCls, - filteredKeys, - filterMultiple, - searchValue, - filterSearch - })] - }); - } - const Component = filterMultiple ? checkbox_default : radio_default; - const item = createVNode(MenuItem, { - "key": filter3.value !== void 0 ? key2 : index3 - }, { - default: () => [createVNode(Component, { - "checked": filteredKeys.includes(key2) - }, null), createVNode("span", null, [filter3.text])] - }); - if (searchValue.trim()) { - if (typeof filterSearch === "function") { - return filterSearch(searchValue, filter3) ? item : void 0; - } - return searchValueMatched(searchValue, filter3.text) ? item : void 0; - } - return item; - }); -} -var FilterDropdown_default = defineComponent({ - name: "FilterDropdown", - props: ["tablePrefixCls", "prefixCls", "dropdownPrefixCls", "column", "filterState", "filterMultiple", "filterMode", "filterSearch", "columnKey", "triggerFilter", "locale", "getPopupContainer"], - setup(props4, _ref3) { - let { - slots - } = _ref3; - const contextSlots = useInjectSlots(); - const filterMode = computed(() => { - var _a2; - return (_a2 = props4.filterMode) !== null && _a2 !== void 0 ? _a2 : "menu"; - }); - const filterSearch = computed(() => { - var _a2; - return (_a2 = props4.filterSearch) !== null && _a2 !== void 0 ? _a2 : false; - }); - const filterDropdownOpen = computed(() => props4.column.filterDropdownOpen || props4.column.filterDropdownVisible); - const onFilterDropdownOpenChange = computed(() => props4.column.onFilterDropdownOpenChange || props4.column.onFilterDropdownVisibleChange); - if (true) { - [["filterDropdownVisible", "filterDropdownOpen", props4.column.filterDropdownVisible], ["onFilterDropdownVisibleChange", "onFilterDropdownOpenChange", props4.column.onFilterDropdownVisibleChange]].forEach((_ref4) => { - let [deprecatedName, newName, prop] = _ref4; - devWarning_default(prop === void 0 || prop === null, "Table", `\`${deprecatedName}\` is deprecated. Please use \`${newName}\` instead.`); - }); - } - const visible = shallowRef(false); - const filtered = computed(() => { - var _a2; - return !!(props4.filterState && (((_a2 = props4.filterState.filteredKeys) === null || _a2 === void 0 ? void 0 : _a2.length) || props4.filterState.forceFiltered)); - }); - const filterFlattenKeys = computed(() => { - var _a2; - return flattenKeys((_a2 = props4.column) === null || _a2 === void 0 ? void 0 : _a2.filters); - }); - const filterDropdownRef = computed(() => { - const { - filterDropdown, - slots: slots2 = {}, - customFilterDropdown - } = props4.column; - return filterDropdown || slots2.filterDropdown && contextSlots.value[slots2.filterDropdown] || customFilterDropdown && contextSlots.value.customFilterDropdown; - }); - const filterIconRef = computed(() => { - const { - filterIcon, - slots: slots2 = {} - } = props4.column; - return filterIcon || slots2.filterIcon && contextSlots.value[slots2.filterIcon] || contextSlots.value.customFilterIcon; - }); - const triggerVisible = (newVisible) => { - var _a2; - visible.value = newVisible; - (_a2 = onFilterDropdownOpenChange.value) === null || _a2 === void 0 ? void 0 : _a2.call(onFilterDropdownOpenChange, newVisible); - }; - const mergedVisible = computed(() => typeof filterDropdownOpen.value === "boolean" ? filterDropdownOpen.value : visible.value); - const propFilteredKeys = computed(() => { - var _a2; - return (_a2 = props4.filterState) === null || _a2 === void 0 ? void 0 : _a2.filteredKeys; - }); - const filteredKeys = shallowRef([]); - const onSelectKeys = (_ref5) => { - let { - selectedKeys - } = _ref5; - filteredKeys.value = selectedKeys; - }; - const onCheck = (keys2, _ref6) => { - let { - node: node2, - checked - } = _ref6; - if (!props4.filterMultiple) { - onSelectKeys({ - selectedKeys: checked && node2.key ? [node2.key] : [] - }); - } else { - onSelectKeys({ - selectedKeys: keys2 - }); - } - }; - watch(propFilteredKeys, () => { - if (!visible.value) { - return; - } - onSelectKeys({ - selectedKeys: propFilteredKeys.value || [] - }); - }, { - immediate: true - }); - const openKeys = shallowRef([]); - const openRef = shallowRef(); - const onOpenChange = (keys2) => { - openRef.value = setTimeout(() => { - openKeys.value = keys2; - }); - }; - const onMenuClick = () => { - clearTimeout(openRef.value); - }; - onBeforeUnmount(() => { - clearTimeout(openRef.value); - }); - const searchValue = shallowRef(""); - const onSearch = (e3) => { - const { - value - } = e3.target; - searchValue.value = value; - }; - watch(visible, () => { - if (!visible.value) { - searchValue.value = ""; - } - }); - const internalTriggerFilter = (keys2) => { - const { - column: column2, - columnKey, - filterState - } = props4; - const mergedKeys = keys2 && keys2.length ? keys2 : null; - if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) { - return null; - } - if (isEqual_default2(mergedKeys, filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys, true)) { - return null; - } - props4.triggerFilter({ - column: column2, - key: columnKey, - filteredKeys: mergedKeys - }); - }; - const onConfirm = () => { - triggerVisible(false); - internalTriggerFilter(filteredKeys.value); - }; - const onReset = function() { - let { - confirm: confirm2, - closeDropdown - } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : { - confirm: false, - closeDropdown: false - }; - if (confirm2) { - internalTriggerFilter([]); - } - if (closeDropdown) { - triggerVisible(false); - } - searchValue.value = ""; - if (props4.column.filterResetToDefaultFilteredValue) { - filteredKeys.value = (props4.column.defaultFilteredValue || []).map((key2) => String(key2)); - } else { - filteredKeys.value = []; - } - }; - const doFilter = function() { - let { - closeDropdown - } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : { - closeDropdown: true - }; - if (closeDropdown) { - triggerVisible(false); - } - internalTriggerFilter(filteredKeys.value); - }; - const onVisibleChange = (newVisible) => { - if (newVisible && propFilteredKeys.value !== void 0) { - filteredKeys.value = propFilteredKeys.value || []; - } - triggerVisible(newVisible); - if (!newVisible && !filterDropdownRef.value) { - onConfirm(); - } - }; - const { - direction - } = useConfigInject_default("", props4); - const onCheckAll = (e3) => { - if (e3.target.checked) { - const allFilterKeys = filterFlattenKeys.value; - filteredKeys.value = allFilterKeys; - } else { - filteredKeys.value = []; - } - }; - const getTreeData = (_ref7) => { - let { - filters - } = _ref7; - return (filters || []).map((filter3, index3) => { - const key2 = String(filter3.value); - const item = { - title: filter3.text, - key: filter3.value !== void 0 ? key2 : index3 - }; - if (filter3.children) { - item.children = getTreeData({ - filters: filter3.children - }); - } - return item; - }); - }; - const getFilterData2 = (node2) => { - var _a2; - return _extends(_extends({}, node2), { - text: node2.title, - value: node2.key, - children: ((_a2 = node2.children) === null || _a2 === void 0 ? void 0 : _a2.map((item) => getFilterData2(item))) || [] - }); - }; - const treeData = computed(() => getTreeData({ - filters: props4.column.filters - })); - const dropdownMenuClass = computed(() => classNames_default({ - [`${props4.dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(props4.column.filters || []) - })); - const getFilterComponent = () => { - const selectedKeys = filteredKeys.value; - const { - column: column2, - locale: locale4, - tablePrefixCls, - filterMultiple, - dropdownPrefixCls, - getPopupContainer, - prefixCls - } = props4; - if ((column2.filters || []).length === 0) { - return createVNode(empty_default2, { - "image": empty_default2.PRESENTED_IMAGE_SIMPLE, - "description": locale4.filterEmptyText, - "imageStyle": { - height: 24 - }, - "style": { - margin: 0, - padding: "16px 0" - } - }, null); - } - if (filterMode.value === "tree") { - return createVNode(Fragment, null, [createVNode(FilterSearch_default, { - "filterSearch": filterSearch.value, - "value": searchValue.value, - "onChange": onSearch, - "tablePrefixCls": tablePrefixCls, - "locale": locale4 - }, null), createVNode("div", { - "class": `${tablePrefixCls}-filter-dropdown-tree` - }, [filterMultiple ? createVNode(checkbox_default, { - "class": `${tablePrefixCls}-filter-dropdown-checkall`, - "onChange": onCheckAll, - "checked": selectedKeys.length === filterFlattenKeys.value.length, - "indeterminate": selectedKeys.length > 0 && selectedKeys.length < filterFlattenKeys.value.length - }, { - default: () => [locale4.filterCheckall] - }) : null, createVNode(tree_default, { - "checkable": true, - "selectable": false, - "blockNode": true, - "multiple": filterMultiple, - "checkStrictly": !filterMultiple, - "class": `${dropdownPrefixCls}-menu`, - "onCheck": onCheck, - "checkedKeys": selectedKeys, - "selectedKeys": selectedKeys, - "showIcon": false, - "treeData": treeData.value, - "autoExpandParent": true, - "defaultExpandAll": true, - "filterTreeNode": searchValue.value.trim() ? (node2) => { - if (typeof filterSearch.value === "function") { - return filterSearch.value(searchValue.value, getFilterData2(node2)); - } - return searchValueMatched(searchValue.value, node2.title); - } : void 0 - }, null)])]); - } - return createVNode(Fragment, null, [createVNode(FilterSearch_default, { - "filterSearch": filterSearch.value, - "value": searchValue.value, - "onChange": onSearch, - "tablePrefixCls": tablePrefixCls, - "locale": locale4 - }, null), createVNode(menu_default, { - "multiple": filterMultiple, - "prefixCls": `${dropdownPrefixCls}-menu`, - "class": dropdownMenuClass.value, - "onClick": onMenuClick, - "onSelect": onSelectKeys, - "onDeselect": onSelectKeys, - "selectedKeys": selectedKeys, - "getPopupContainer": getPopupContainer, - "openKeys": openKeys.value, - "onOpenChange": onOpenChange - }, { - default: () => renderFilterItems({ - filters: column2.filters || [], - filterSearch: filterSearch.value, - prefixCls, - filteredKeys: filteredKeys.value, - filterMultiple, - searchValue: searchValue.value - }) - })]); - }; - const resetDisabled = computed(() => { - const selectedKeys = filteredKeys.value; - if (props4.column.filterResetToDefaultFilteredValue) { - return isEqual_default2((props4.column.defaultFilteredValue || []).map((key2) => String(key2)), selectedKeys, true); - } - return selectedKeys.length === 0; - }); - return () => { - var _a2; - const { - tablePrefixCls, - prefixCls, - column: column2, - dropdownPrefixCls, - locale: locale4, - getPopupContainer - } = props4; - let dropdownContent; - if (typeof filterDropdownRef.value === "function") { - dropdownContent = filterDropdownRef.value({ - prefixCls: `${dropdownPrefixCls}-custom`, - setSelectedKeys: (selectedKeys) => onSelectKeys({ - selectedKeys - }), - selectedKeys: filteredKeys.value, - confirm: doFilter, - clearFilters: onReset, - filters: column2.filters, - visible: mergedVisible.value, - column: column2.__originColumn__, - close: () => { - triggerVisible(false); - } - }); - } else if (filterDropdownRef.value) { - dropdownContent = filterDropdownRef.value; - } else { - dropdownContent = createVNode(Fragment, null, [getFilterComponent(), createVNode("div", { - "class": `${prefixCls}-dropdown-btns` - }, [createVNode(button_default2, { - "type": "link", - "size": "small", - "disabled": resetDisabled.value, - "onClick": () => onReset() - }, { - default: () => [locale4.filterReset] - }), createVNode(button_default2, { - "type": "primary", - "size": "small", - "onClick": onConfirm - }, { - default: () => [locale4.filterConfirm] - })])]); - } - const menu = createVNode(FilterWrapper_default, { - "class": `${prefixCls}-dropdown` - }, { - default: () => [dropdownContent] - }); - let filterIcon; - if (typeof filterIconRef.value === "function") { - filterIcon = filterIconRef.value({ - filtered: filtered.value, - column: column2.__originColumn__ - }); - } else if (filterIconRef.value) { - filterIcon = filterIconRef.value; - } else { - filterIcon = createVNode(FilterFilled_default, null, null); - } - return createVNode("div", { - "class": `${prefixCls}-column` - }, [createVNode("span", { - "class": `${tablePrefixCls}-column-title` - }, [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]), createVNode(dropdown_default3, { - "overlay": menu, - "trigger": ["click"], - "open": mergedVisible.value, - "onOpenChange": onVisibleChange, - "getPopupContainer": getPopupContainer, - "placement": direction.value === "rtl" ? "bottomLeft" : "bottomRight" - }, { - default: () => [createVNode("span", { - "role": "button", - "tabindex": -1, - "class": classNames_default(`${prefixCls}-trigger`, { - active: filtered.value - }), - "onClick": (e3) => { - e3.stopPropagation(); - } - }, [filterIcon])] - })]); - }; - } -}); - -// node_modules/ant-design-vue/es/table/hooks/useFilter/index.js -function collectFilterStates(columns, init, pos) { - let filterStates = []; - (columns || []).forEach((column2, index3) => { - var _a2, _b; - const columnPos = getColumnPos(index3, pos); - const hasFilterDropdown = column2.filterDropdown || ((_a2 = column2 === null || column2 === void 0 ? void 0 : column2.slots) === null || _a2 === void 0 ? void 0 : _a2.filterDropdown) || column2.customFilterDropdown; - if (column2.filters || hasFilterDropdown || "onFilter" in column2) { - if ("filteredValue" in column2) { - let filteredValues = column2.filteredValue; - if (!hasFilterDropdown) { - filteredValues = (_b = filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.map(String)) !== null && _b !== void 0 ? _b : filteredValues; - } - filterStates.push({ - column: column2, - key: getColumnKey(column2, columnPos), - filteredKeys: filteredValues, - forceFiltered: column2.filtered - }); - } else { - filterStates.push({ - column: column2, - key: getColumnKey(column2, columnPos), - filteredKeys: init && column2.defaultFilteredValue ? column2.defaultFilteredValue : void 0, - forceFiltered: column2.filtered - }); - } - } - if ("children" in column2) { - filterStates = [...filterStates, ...collectFilterStates(column2.children, init, columnPos)]; - } - }); - return filterStates; -} -function injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, locale4, triggerFilter, getPopupContainer, pos) { - return columns.map((column2, index3) => { - var _a2; - const columnPos = getColumnPos(index3, pos); - const { - filterMultiple = true, - filterMode, - filterSearch - } = column2; - let newColumn = column2; - const hasFilterDropdown = column2.filterDropdown || ((_a2 = column2 === null || column2 === void 0 ? void 0 : column2.slots) === null || _a2 === void 0 ? void 0 : _a2.filterDropdown) || column2.customFilterDropdown; - if (newColumn.filters || hasFilterDropdown) { - const columnKey = getColumnKey(newColumn, columnPos); - const filterState = filterStates.find((_ref) => { - let { - key: key2 - } = _ref; - return columnKey === key2; - }); - newColumn = _extends(_extends({}, newColumn), { - title: (renderProps) => createVNode(FilterDropdown_default, { - "tablePrefixCls": prefixCls, - "prefixCls": `${prefixCls}-filter`, - "dropdownPrefixCls": dropdownPrefixCls, - "column": newColumn, - "columnKey": columnKey, - "filterState": filterState, - "filterMultiple": filterMultiple, - "filterMode": filterMode, - "filterSearch": filterSearch, - "triggerFilter": triggerFilter, - "locale": locale4, - "getPopupContainer": getPopupContainer - }, { - default: () => [renderColumnTitle(column2.title, renderProps)] - }) - }); - } - if ("children" in newColumn) { - newColumn = _extends(_extends({}, newColumn), { - children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, locale4, triggerFilter, getPopupContainer, columnPos) - }); - } - return newColumn; - }); -} -function flattenKeys(filters) { - let keys2 = []; - (filters || []).forEach((_ref2) => { - let { - value, - children - } = _ref2; - keys2.push(value); - if (children) { - keys2 = [...keys2, ...flattenKeys(children)]; - } - }); - return keys2; -} -function generateFilterInfo(filterStates) { - const currentFilters = {}; - filterStates.forEach((_ref3) => { - let { - key: key2, - filteredKeys, - column: column2 - } = _ref3; - var _a2; - const hasFilterDropdown = column2.filterDropdown || ((_a2 = column2 === null || column2 === void 0 ? void 0 : column2.slots) === null || _a2 === void 0 ? void 0 : _a2.filterDropdown) || column2.customFilterDropdown; - const { - filters - } = column2; - if (hasFilterDropdown) { - currentFilters[key2] = filteredKeys || null; - } else if (Array.isArray(filteredKeys)) { - const keys2 = flattenKeys(filters); - currentFilters[key2] = keys2.filter((originKey) => filteredKeys.includes(String(originKey))); - } else { - currentFilters[key2] = null; - } - }); - return currentFilters; -} -function getFilterData(data, filterStates) { - return filterStates.reduce((currentData, filterState) => { - const { - column: { - onFilter, - filters - }, - filteredKeys - } = filterState; - if (onFilter && filteredKeys && filteredKeys.length) { - return currentData.filter((record) => filteredKeys.some((key2) => { - const keys2 = flattenKeys(filters); - const keyIndex2 = keys2.findIndex((k2) => String(k2) === String(key2)); - const realKey = keyIndex2 !== -1 ? keys2[keyIndex2] : key2; - return onFilter(realKey, record); - })); - } - return currentData; - }, data); -} -function getMergedColumns(rawMergedColumns) { - return rawMergedColumns.flatMap((column2) => { - if ("children" in column2) { - return [column2, ...getMergedColumns(column2.children || [])]; - } - return [column2]; - }); -} -function useFilter(_ref4) { - let { - prefixCls, - dropdownPrefixCls, - mergedColumns: rawMergedColumns, - locale: locale4, - onFilterChange, - getPopupContainer - } = _ref4; - const mergedColumns = computed(() => getMergedColumns(rawMergedColumns.value)); - const [filterStates, setFilterStates] = useState(collectFilterStates(mergedColumns.value, true)); - const mergedFilterStates = computed(() => { - const collectedStates = collectFilterStates(mergedColumns.value, false); - if (collectedStates.length === 0) { - return collectedStates; - } - let filteredKeysIsAllNotControlled = true; - let filteredKeysIsAllControlled = true; - collectedStates.forEach((_ref5) => { - let { - filteredKeys - } = _ref5; - if (filteredKeys !== void 0) { - filteredKeysIsAllNotControlled = false; - } else { - filteredKeysIsAllControlled = false; - } - }); - if (filteredKeysIsAllNotControlled) { - const keyList = (mergedColumns.value || []).map((column2, index3) => getColumnKey(column2, getColumnPos(index3))); - return filterStates.value.filter((_ref6) => { - let { - key: key2 - } = _ref6; - return keyList.includes(key2); - }).map((item) => { - const col = mergedColumns.value[keyList.findIndex((key2) => key2 === item.key)]; - return _extends(_extends({}, item), { - column: _extends(_extends({}, item.column), col), - forceFiltered: col.filtered - }); - }); - } - devWarning_default(filteredKeysIsAllControlled, "Table", "Columns should all contain `filteredValue` or not contain `filteredValue`."); - return collectedStates; - }); - const filters = computed(() => generateFilterInfo(mergedFilterStates.value)); - const triggerFilter = (filterState) => { - const newFilterStates = mergedFilterStates.value.filter((_ref7) => { - let { - key: key2 - } = _ref7; - return key2 !== filterState.key; - }); - newFilterStates.push(filterState); - setFilterStates(newFilterStates); - onFilterChange(generateFilterInfo(newFilterStates), newFilterStates); - }; - const transformColumns = (innerColumns) => { - return injectFilter(prefixCls.value, dropdownPrefixCls.value, innerColumns, mergedFilterStates.value, locale4.value, triggerFilter, getPopupContainer.value); - }; - return [transformColumns, mergedFilterStates, filters]; -} -var useFilter_default = useFilter; - -// node_modules/ant-design-vue/es/table/hooks/useTitleColumns.js -function fillTitle(columns, columnTitleProps) { - return columns.map((column2) => { - const cloneColumn = _extends({}, column2); - cloneColumn.title = renderColumnTitle(cloneColumn.title, columnTitleProps); - if ("children" in cloneColumn) { - cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps); - } - return cloneColumn; - }); -} -function useTitleColumns(columnTitleProps) { - const filledColumns = (columns) => fillTitle(columns, columnTitleProps.value); - return [filledColumns]; -} - -// node_modules/ant-design-vue/es/table/ExpandIcon.js -function renderExpandIcon2(locale4) { - return function expandIcon(_ref) { - let { - prefixCls, - onExpand, - record, - expanded, - expandable - } = _ref; - const iconPrefix = `${prefixCls}-row-expand-icon`; - return createVNode("button", { - "type": "button", - "onClick": (e3) => { - onExpand(record, e3); - e3.stopPropagation(); - }, - "class": classNames_default(iconPrefix, { - [`${iconPrefix}-spaced`]: !expandable, - [`${iconPrefix}-expanded`]: expandable && expanded, - [`${iconPrefix}-collapsed`]: expandable && !expanded - }), - "aria-label": expanded ? locale4.collapse : locale4.expand, - "aria-expanded": expanded - }, null); - }; -} -var ExpandIcon_default = renderExpandIcon2; - -// node_modules/ant-design-vue/es/table/hooks/useColumns.js -function fillSlots(columns, contextSlots) { - const $slots = contextSlots.value; - return columns.map((column2) => { - var _a2; - if (column2 === SELECTION_COLUMN || column2 === EXPAND_COLUMN) return column2; - const cloneColumn = _extends({}, column2); - const { - slots = {} - } = cloneColumn; - cloneColumn.__originColumn__ = column2; - devWarning_default(!("slots" in cloneColumn), "Table", "`column.slots` is deprecated. Please use `v-slot:headerCell` `v-slot:bodyCell` instead."); - Object.keys(slots).forEach((key2) => { - const name = slots[key2]; - if (cloneColumn[key2] === void 0 && $slots[name]) { - cloneColumn[key2] = $slots[name]; - } - }); - if (contextSlots.value.headerCell && !((_a2 = column2.slots) === null || _a2 === void 0 ? void 0 : _a2.title)) { - cloneColumn.title = customRenderSlot(contextSlots.value, "headerCell", { - title: column2.title, - column: column2 - }, () => [column2.title]); - } - if ("children" in cloneColumn && Array.isArray(cloneColumn.children)) { - cloneColumn.children = fillSlots(cloneColumn.children, contextSlots); - } - return cloneColumn; - }); -} -function useColumns2(contextSlots) { - const filledColumns = (columns) => fillSlots(columns, contextSlots); - return [filledColumns]; -} - -// node_modules/ant-design-vue/es/table/style/bordered.js -var genBorderedStyle4 = (token2) => { - const { - componentCls - } = token2; - const tableBorder = `${token2.lineWidth}px ${token2.lineType} ${token2.tableBorderColor}`; - const getSizeBorderStyle = (size2, paddingVertical, paddingHorizontal) => ({ - [`&${componentCls}-${size2}`]: { - [`> ${componentCls}-container`]: { - [`> ${componentCls}-content, > ${componentCls}-body`]: { - "> table > tbody > tr > td": { - [`> ${componentCls}-expanded-row-fixed`]: { - margin: `-${paddingVertical}px -${paddingHorizontal + token2.lineWidth}px` - } - } - } - } - } - }); - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}${componentCls}-bordered`]: _extends(_extends(_extends({ - // ============================ Title ============================= - [`> ${componentCls}-title`]: { - border: tableBorder, - borderBottom: 0 - }, - // ============================ Content ============================ - [`> ${componentCls}-container`]: { - borderInlineStart: tableBorder, - [` - > ${componentCls}-content, - > ${componentCls}-header, - > ${componentCls}-body, - > ${componentCls}-summary - `]: { - "> table": { - // ============================= Cell ============================= - [` - > thead > tr > th, - > tbody > tr > td, - > tfoot > tr > th, - > tfoot > tr > td - `]: { - borderInlineEnd: tableBorder - }, - // ============================ Header ============================ - "> thead": { - "> tr:not(:last-child) > th": { - borderBottom: tableBorder - }, - "> tr > th::before": { - backgroundColor: "transparent !important" - } - }, - // Fixed right should provides additional border - [` - > thead > tr, - > tbody > tr, - > tfoot > tr - `]: { - [`> ${componentCls}-cell-fix-right-first::after`]: { - borderInlineEnd: tableBorder - } - }, - // ========================== Expandable ========================== - "> tbody > tr > td": { - [`> ${componentCls}-expanded-row-fixed`]: { - margin: `-${token2.tablePaddingVertical}px -${token2.tablePaddingHorizontal + token2.lineWidth}px`, - "&::after": { - position: "absolute", - top: 0, - insetInlineEnd: token2.lineWidth, - bottom: 0, - borderInlineEnd: tableBorder, - content: '""' - } - } - } - } - }, - [` - > ${componentCls}-content, - > ${componentCls}-header - `]: { - "> table": { - borderTop: tableBorder - } - } - }, - // ============================ Scroll ============================ - [`&${componentCls}-scroll-horizontal`]: { - [`> ${componentCls}-container > ${componentCls}-body`]: { - "> table > tbody": { - [` - > tr${componentCls}-expanded-row, - > tr${componentCls}-placeholder - `]: { - "> td": { - borderInlineEnd: 0 - } - } - } - } - } - }, getSizeBorderStyle("middle", token2.tablePaddingVerticalMiddle, token2.tablePaddingHorizontalMiddle)), getSizeBorderStyle("small", token2.tablePaddingVerticalSmall, token2.tablePaddingHorizontalSmall)), { - // ============================ Footer ============================ - [`> ${componentCls}-footer`]: { - border: tableBorder, - borderTop: 0 - } - }), - // ============================ Nested ============================ - [`${componentCls}-cell`]: { - [`${componentCls}-container:first-child`]: { - // :first-child to avoid the case when bordered and title is set - borderTop: 0 - }, - // https://github.com/ant-design/ant-design/issues/35577 - "&-scrollbar:not([rowspan])": { - boxShadow: `0 ${token2.lineWidth}px 0 ${token2.lineWidth}px ${token2.tableHeaderBg}` - } - } - } - }; -}; -var bordered_default = genBorderedStyle4; - -// node_modules/ant-design-vue/es/table/style/ellipsis.js -var genEllipsisStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-cell-ellipsis`]: _extends(_extends({}, textEllipsis), { - wordBreak: "keep-all", - // Fixed first or last should special process - [` - &${componentCls}-cell-fix-left-last, - &${componentCls}-cell-fix-right-first - `]: { - overflow: "visible", - [`${componentCls}-cell-content`]: { - display: "block", - overflow: "hidden", - textOverflow: "ellipsis" - } - }, - [`${componentCls}-column-title`]: { - overflow: "hidden", - textOverflow: "ellipsis", - wordBreak: "keep-all" - } - }) - } - }; -}; -var ellipsis_default = genEllipsisStyle; - -// node_modules/ant-design-vue/es/table/style/empty.js -var genEmptyStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-tbody > tr${componentCls}-placeholder`]: { - textAlign: "center", - color: token2.colorTextDisabled, - "&:hover > td": { - background: token2.colorBgContainer - } - } - } - }; -}; -var empty_default3 = genEmptyStyle; - -// node_modules/ant-design-vue/es/table/style/expand.js -var genExpandStyle = (token2) => { - const { - componentCls, - antCls, - controlInteractiveSize: checkboxSize, - motionDurationSlow, - lineWidth, - paddingXS, - lineType, - tableBorderColor, - tableExpandIconBg, - tableExpandColumnWidth, - borderRadius, - fontSize, - fontSizeSM, - lineHeight, - tablePaddingVertical, - tablePaddingHorizontal, - tableExpandedRowBg, - paddingXXS - } = token2; - const halfInnerSize = checkboxSize / 2 - lineWidth; - const expandIconSize = halfInnerSize * 2 + lineWidth * 3; - const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`; - const expandIconLineOffset = paddingXXS - lineWidth; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-expand-icon-col`]: { - width: tableExpandColumnWidth - }, - [`${componentCls}-row-expand-icon-cell`]: { - textAlign: "center", - [`${componentCls}-row-expand-icon`]: { - display: "inline-flex", - float: "none", - verticalAlign: "sub" - } - }, - [`${componentCls}-row-indent`]: { - height: 1, - float: "left" - }, - [`${componentCls}-row-expand-icon`]: _extends(_extends({}, operationUnit(token2)), { - position: "relative", - float: "left", - boxSizing: "border-box", - width: expandIconSize, - height: expandIconSize, - padding: 0, - color: "inherit", - lineHeight: `${expandIconSize}px`, - background: tableExpandIconBg, - border: tableBorder, - borderRadius, - transform: `scale(${checkboxSize / expandIconSize})`, - transition: `all ${motionDurationSlow}`, - userSelect: "none", - [`&:focus, &:hover, &:active`]: { - borderColor: "currentcolor" - }, - [`&::before, &::after`]: { - position: "absolute", - background: "currentcolor", - transition: `transform ${motionDurationSlow} ease-out`, - content: '""' - }, - "&::before": { - top: halfInnerSize, - insetInlineEnd: expandIconLineOffset, - insetInlineStart: expandIconLineOffset, - height: lineWidth - }, - "&::after": { - top: expandIconLineOffset, - bottom: expandIconLineOffset, - insetInlineStart: halfInnerSize, - width: lineWidth, - transform: "rotate(90deg)" - }, - // Motion effect - "&-collapsed::before": { - transform: "rotate(-180deg)" - }, - "&-collapsed::after": { - transform: "rotate(0deg)" - }, - "&-spaced": { - "&::before, &::after": { - display: "none", - content: "none" - }, - background: "transparent", - border: 0, - visibility: "hidden" - } - }), - [`${componentCls}-row-indent + ${componentCls}-row-expand-icon`]: { - marginTop: (fontSize * lineHeight - lineWidth * 3) / 2 - Math.ceil((fontSizeSM * 1.4 - lineWidth * 3) / 2), - marginInlineEnd: paddingXS - }, - [`tr${componentCls}-expanded-row`]: { - "&, &:hover": { - "> td": { - background: tableExpandedRowBg - } - }, - // https://github.com/ant-design/ant-design/issues/25573 - [`${antCls}-descriptions-view`]: { - display: "flex", - table: { - flex: "auto", - width: "auto" - } - } - }, - // With fixed - [`${componentCls}-expanded-row-fixed`]: { - position: "relative", - margin: `-${tablePaddingVertical}px -${tablePaddingHorizontal}px`, - padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px` - } - } - }; -}; -var expand_default = genExpandStyle; - -// node_modules/ant-design-vue/es/table/style/filter.js -var genFilterStyle = (token2) => { - const { - componentCls, - antCls, - iconCls, - tableFilterDropdownWidth, - tableFilterDropdownSearchWidth, - paddingXXS, - paddingXS, - colorText, - lineWidth, - lineType, - tableBorderColor, - tableHeaderIconColor, - fontSizeSM, - tablePaddingHorizontal, - borderRadius, - motionDurationSlow, - colorTextDescription, - colorPrimary, - tableHeaderFilterActiveBg, - colorTextDisabled, - tableFilterDropdownBg, - tableFilterDropdownHeight, - controlItemBgHover, - controlItemBgActive, - boxShadowSecondary - } = token2; - const dropdownPrefixCls = `${antCls}-dropdown`; - const tableFilterDropdownPrefixCls = `${componentCls}-filter-dropdown`; - const treePrefixCls = `${antCls}-tree`; - const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`; - return [ - { - [`${componentCls}-wrapper`]: { - [`${componentCls}-filter-column`]: { - display: "flex", - justifyContent: "space-between" - }, - [`${componentCls}-filter-trigger`]: { - position: "relative", - display: "flex", - alignItems: "center", - marginBlock: -paddingXXS, - marginInline: `${paddingXXS}px ${-tablePaddingHorizontal / 2}px`, - padding: `0 ${paddingXXS}px`, - color: tableHeaderIconColor, - fontSize: fontSizeSM, - borderRadius, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - "&:hover": { - color: colorTextDescription, - background: tableHeaderFilterActiveBg - }, - "&.active": { - color: colorPrimary - } - } - } - }, - { - // Dropdown - [`${antCls}-dropdown`]: { - [tableFilterDropdownPrefixCls]: _extends(_extends({}, resetComponent(token2)), { - minWidth: tableFilterDropdownWidth, - backgroundColor: tableFilterDropdownBg, - borderRadius, - boxShadow: boxShadowSecondary, - // Reset menu - [`${dropdownPrefixCls}-menu`]: { - // https://github.com/ant-design/ant-design/issues/4916 - // https://github.com/ant-design/ant-design/issues/19542 - maxHeight: tableFilterDropdownHeight, - overflowX: "hidden", - border: 0, - boxShadow: "none", - "&:empty::after": { - display: "block", - padding: `${paddingXS}px 0`, - color: colorTextDisabled, - fontSize: fontSizeSM, - textAlign: "center", - content: '"Not Found"' - } - }, - [`${tableFilterDropdownPrefixCls}-tree`]: { - paddingBlock: `${paddingXS}px 0`, - paddingInline: paddingXS, - [treePrefixCls]: { - padding: 0 - }, - [`${treePrefixCls}-treenode ${treePrefixCls}-node-content-wrapper:hover`]: { - backgroundColor: controlItemBgHover - }, - [`${treePrefixCls}-treenode-checkbox-checked ${treePrefixCls}-node-content-wrapper`]: { - "&, &:hover": { - backgroundColor: controlItemBgActive - } - } - }, - [`${tableFilterDropdownPrefixCls}-search`]: { - padding: paddingXS, - borderBottom: tableBorder, - "&-input": { - input: { - minWidth: tableFilterDropdownSearchWidth - }, - [iconCls]: { - color: colorTextDisabled - } - } - }, - [`${tableFilterDropdownPrefixCls}-checkall`]: { - width: "100%", - marginBottom: paddingXXS, - marginInlineStart: paddingXXS - }, - // Operation - [`${tableFilterDropdownPrefixCls}-btns`]: { - display: "flex", - justifyContent: "space-between", - padding: `${paddingXS - lineWidth}px ${paddingXS}px`, - overflow: "hidden", - backgroundColor: "inherit", - borderTop: tableBorder - } - }) - } - }, - // Dropdown Menu & SubMenu - { - // submenu of table filter dropdown - [`${antCls}-dropdown ${tableFilterDropdownPrefixCls}, ${tableFilterDropdownPrefixCls}-submenu`]: { - // Checkbox - [`${antCls}-checkbox-wrapper + span`]: { - paddingInlineStart: paddingXS, - color: colorText - }, - [`> ul`]: { - maxHeight: "calc(100vh - 130px)", - overflowX: "hidden", - overflowY: "auto" - } - } - } - ]; -}; -var filter_default2 = genFilterStyle; - -// node_modules/ant-design-vue/es/table/style/fixed.js -var genFixedStyle = (token2) => { - const { - componentCls, - lineWidth, - colorSplit, - motionDurationSlow, - zIndexTableFixed, - tableBg, - zIndexTableSticky - } = token2; - const shadowColor = colorSplit; - return { - [`${componentCls}-wrapper`]: { - [` - ${componentCls}-cell-fix-left, - ${componentCls}-cell-fix-right - `]: { - position: "sticky !important", - zIndex: zIndexTableFixed, - background: tableBg - }, - [` - ${componentCls}-cell-fix-left-first::after, - ${componentCls}-cell-fix-left-last::after - `]: { - position: "absolute", - top: 0, - right: { - _skip_check_: true, - value: 0 - }, - bottom: -lineWidth, - width: 30, - transform: "translateX(100%)", - transition: `box-shadow ${motionDurationSlow}`, - content: '""', - pointerEvents: "none" - }, - [`${componentCls}-cell-fix-left-all::after`]: { - display: "none" - }, - [` - ${componentCls}-cell-fix-right-first::after, - ${componentCls}-cell-fix-right-last::after - `]: { - position: "absolute", - top: 0, - bottom: -lineWidth, - left: { - _skip_check_: true, - value: 0 - }, - width: 30, - transform: "translateX(-100%)", - transition: `box-shadow ${motionDurationSlow}`, - content: '""', - pointerEvents: "none" - }, - [`${componentCls}-container`]: { - "&::before, &::after": { - position: "absolute", - top: 0, - bottom: 0, - zIndex: zIndexTableSticky + 1, - width: 30, - transition: `box-shadow ${motionDurationSlow}`, - content: '""', - pointerEvents: "none" - }, - "&::before": { - insetInlineStart: 0 - }, - "&::after": { - insetInlineEnd: 0 - } - }, - [`${componentCls}-ping-left`]: { - [`&:not(${componentCls}-has-fix-left) ${componentCls}-container`]: { - position: "relative", - "&::before": { - boxShadow: `inset 10px 0 8px -8px ${shadowColor}` - } - }, - [` - ${componentCls}-cell-fix-left-first::after, - ${componentCls}-cell-fix-left-last::after - `]: { - boxShadow: `inset 10px 0 8px -8px ${shadowColor}` - }, - [`${componentCls}-cell-fix-left-last::before`]: { - backgroundColor: "transparent !important" - } - }, - [`${componentCls}-ping-right`]: { - [`&:not(${componentCls}-has-fix-right) ${componentCls}-container`]: { - position: "relative", - "&::after": { - boxShadow: `inset -10px 0 8px -8px ${shadowColor}` - } - }, - [` - ${componentCls}-cell-fix-right-first::after, - ${componentCls}-cell-fix-right-last::after - `]: { - boxShadow: `inset -10px 0 8px -8px ${shadowColor}` - } - } - } - }; -}; -var fixed_default = genFixedStyle; - -// node_modules/ant-design-vue/es/table/style/pagination.js -var genPaginationStyle2 = (token2) => { - const { - componentCls, - antCls - } = token2; - return { - [`${componentCls}-wrapper`]: { - // ========================== Pagination ========================== - [`${componentCls}-pagination${antCls}-pagination`]: { - margin: `${token2.margin}px 0` - }, - [`${componentCls}-pagination`]: { - display: "flex", - flexWrap: "wrap", - rowGap: token2.paddingXS, - "> *": { - flex: "none" - }, - "&-left": { - justifyContent: "flex-start" - }, - "&-center": { - justifyContent: "center" - }, - "&-right": { - justifyContent: "flex-end" - } - } - } - }; -}; -var pagination_default2 = genPaginationStyle2; - -// node_modules/ant-design-vue/es/table/style/radius.js -var genRadiusStyle = (token2) => { - const { - componentCls, - tableRadius - } = token2; - return { - [`${componentCls}-wrapper`]: { - [componentCls]: { - // https://github.com/ant-design/ant-design/issues/39115#issuecomment-1362314574 - [`${componentCls}-title, ${componentCls}-header`]: { - borderRadius: `${tableRadius}px ${tableRadius}px 0 0` - }, - [`${componentCls}-title + ${componentCls}-container`]: { - borderStartStartRadius: 0, - borderStartEndRadius: 0, - table: { - borderRadius: 0, - "> thead > tr:first-child": { - "th:first-child": { - borderRadius: 0 - }, - "th:last-child": { - borderRadius: 0 - } - } - } - }, - "&-container": { - borderStartStartRadius: tableRadius, - borderStartEndRadius: tableRadius, - "table > thead > tr:first-child": { - "> *:first-child": { - borderStartStartRadius: tableRadius - }, - "> *:last-child": { - borderStartEndRadius: tableRadius - } - } - }, - "&-footer": { - borderRadius: `0 0 ${tableRadius}px ${tableRadius}px` - } - } - } - }; -}; -var radius_default = genRadiusStyle; - -// node_modules/ant-design-vue/es/table/style/rtl.js -var genStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-wrapper-rtl`]: { - direction: "rtl", - table: { - direction: "rtl" - }, - [`${componentCls}-pagination-left`]: { - justifyContent: "flex-end" - }, - [`${componentCls}-pagination-right`]: { - justifyContent: "flex-start" - }, - [`${componentCls}-row-expand-icon`]: { - "&::after": { - transform: "rotate(-90deg)" - }, - "&-collapsed::before": { - transform: "rotate(180deg)" - }, - "&-collapsed::after": { - transform: "rotate(0deg)" - } - } - } - }; -}; -var rtl_default3 = genStyle; - -// node_modules/ant-design-vue/es/table/style/selection.js -var genSelectionStyle = (token2) => { - const { - componentCls, - antCls, - iconCls, - fontSizeIcon, - paddingXS, - tableHeaderIconColor, - tableHeaderIconColorHover - } = token2; - return { - [`${componentCls}-wrapper`]: { - // ========================== Selections ========================== - [`${componentCls}-selection-col`]: { - width: token2.tableSelectionColumnWidth - }, - [`${componentCls}-bordered ${componentCls}-selection-col`]: { - width: token2.tableSelectionColumnWidth + paddingXS * 2 - }, - [` - table tr th${componentCls}-selection-column, - table tr td${componentCls}-selection-column - `]: { - paddingInlineEnd: token2.paddingXS, - paddingInlineStart: token2.paddingXS, - textAlign: "center", - [`${antCls}-radio-wrapper`]: { - marginInlineEnd: 0 - } - }, - [`table tr th${componentCls}-selection-column${componentCls}-cell-fix-left`]: { - zIndex: token2.zIndexTableFixed + 1 - }, - [`table tr th${componentCls}-selection-column::after`]: { - backgroundColor: "transparent !important" - }, - [`${componentCls}-selection`]: { - position: "relative", - display: "inline-flex", - flexDirection: "column" - }, - [`${componentCls}-selection-extra`]: { - position: "absolute", - top: 0, - zIndex: 1, - cursor: "pointer", - transition: `all ${token2.motionDurationSlow}`, - marginInlineStart: "100%", - paddingInlineStart: `${token2.tablePaddingHorizontal / 4}px`, - [iconCls]: { - color: tableHeaderIconColor, - fontSize: fontSizeIcon, - verticalAlign: "baseline", - "&:hover": { - color: tableHeaderIconColorHover - } - } - } - } - }; -}; -var selection_default = genSelectionStyle; - -// node_modules/ant-design-vue/es/table/style/size.js -var genSizeStyle4 = (token2) => { - const { - componentCls - } = token2; - const getSizeStyle = (size2, paddingVertical, paddingHorizontal, fontSize) => ({ - [`${componentCls}${componentCls}-${size2}`]: { - fontSize, - [` - ${componentCls}-title, - ${componentCls}-footer, - ${componentCls}-thead > tr > th, - ${componentCls}-tbody > tr > td, - tfoot > tr > th, - tfoot > tr > td - `]: { - padding: `${paddingVertical}px ${paddingHorizontal}px` - }, - [`${componentCls}-filter-trigger`]: { - marginInlineEnd: `-${paddingHorizontal / 2}px` - }, - [`${componentCls}-expanded-row-fixed`]: { - margin: `-${paddingVertical}px -${paddingHorizontal}px` - }, - [`${componentCls}-tbody`]: { - // ========================= Nest Table =========================== - [`${componentCls}-wrapper:only-child ${componentCls}`]: { - marginBlock: `-${paddingVertical}px`, - marginInline: `${token2.tableExpandColumnWidth - paddingHorizontal}px -${paddingHorizontal}px` - } - }, - // https://github.com/ant-design/ant-design/issues/35167 - [`${componentCls}-selection-column`]: { - paddingInlineStart: `${paddingHorizontal / 4}px` - } - } - }); - return { - [`${componentCls}-wrapper`]: _extends(_extends({}, getSizeStyle("middle", token2.tablePaddingVerticalMiddle, token2.tablePaddingHorizontalMiddle, token2.tableFontSizeMiddle)), getSizeStyle("small", token2.tablePaddingVerticalSmall, token2.tablePaddingHorizontalSmall, token2.tableFontSizeSmall)) - }; -}; -var size_default2 = genSizeStyle4; - -// node_modules/ant-design-vue/es/table/style/resize.js -var genResizeStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-wrapper ${componentCls}-resize-handle`]: { - position: "absolute", - top: 0, - height: "100% !important", - bottom: 0, - left: " auto !important", - right: " -8px", - cursor: "col-resize", - touchAction: "none", - userSelect: "auto", - width: "16px", - zIndex: 1, - [`&-line`]: { - display: "block", - width: "1px", - marginLeft: "7px", - height: "100% !important", - backgroundColor: token2.colorPrimary, - opacity: 0 - }, - [`&:hover &-line`]: { - opacity: 1 - } - }, - [`${componentCls}-wrapper ${componentCls}-resize-handle.dragging`]: { - overflow: "hidden", - [`${componentCls}-resize-handle-line`]: { - opacity: 1 - }, - [`&:before`]: { - position: "absolute", - top: 0, - bottom: 0, - content: '" "', - width: "200vw", - transform: "translateX(-50%)", - opacity: 0 - } - } - }; -}; -var resize_default = genResizeStyle; - -// node_modules/ant-design-vue/es/table/style/sorter.js -var genSorterStyle = (token2) => { - const { - componentCls, - marginXXS, - fontSizeIcon, - tableHeaderIconColor, - tableHeaderIconColorHover - } = token2; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-thead th${componentCls}-column-has-sorters`]: { - outline: "none", - cursor: "pointer", - transition: `all ${token2.motionDurationSlow}`, - "&:hover": { - background: token2.tableHeaderSortHoverBg, - "&::before": { - backgroundColor: "transparent !important" - } - }, - "&:focus-visible": { - color: token2.colorPrimary - }, - // https://github.com/ant-design/ant-design/issues/30969 - [` - &${componentCls}-cell-fix-left:hover, - &${componentCls}-cell-fix-right:hover - `]: { - background: token2.tableFixedHeaderSortActiveBg - } - }, - [`${componentCls}-thead th${componentCls}-column-sort`]: { - background: token2.tableHeaderSortBg, - "&::before": { - backgroundColor: "transparent !important" - } - }, - [`td${componentCls}-column-sort`]: { - background: token2.tableBodySortBg - }, - [`${componentCls}-column-title`]: { - position: "relative", - zIndex: 1, - flex: 1 - }, - [`${componentCls}-column-sorters`]: { - display: "flex", - flex: "auto", - alignItems: "center", - justifyContent: "space-between", - "&::after": { - position: "absolute", - inset: 0, - width: "100%", - height: "100%", - content: '""' - } - }, - [`${componentCls}-column-sorter`]: { - marginInlineStart: marginXXS, - color: tableHeaderIconColor, - fontSize: 0, - transition: `color ${token2.motionDurationSlow}`, - "&-inner": { - display: "inline-flex", - flexDirection: "column", - alignItems: "center" - }, - "&-up, &-down": { - fontSize: fontSizeIcon, - "&.active": { - color: token2.colorPrimary - } - }, - [`${componentCls}-column-sorter-up + ${componentCls}-column-sorter-down`]: { - marginTop: "-0.3em" - } - }, - [`${componentCls}-column-sorters:hover ${componentCls}-column-sorter`]: { - color: tableHeaderIconColorHover - } - } - }; -}; -var sorter_default = genSorterStyle; - -// node_modules/ant-design-vue/es/table/style/sticky.js -var genStickyStyle = (token2) => { - const { - componentCls, - opacityLoading, - tableScrollThumbBg, - tableScrollThumbBgHover, - tableScrollThumbSize, - tableScrollBg, - zIndexTableSticky - } = token2; - const tableBorder = `${token2.lineWidth}px ${token2.lineType} ${token2.tableBorderColor}`; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-sticky`]: { - "&-holder": { - position: "sticky", - zIndex: zIndexTableSticky, - background: token2.colorBgContainer - }, - "&-scroll": { - position: "sticky", - bottom: 0, - height: `${tableScrollThumbSize}px !important`, - zIndex: zIndexTableSticky, - display: "flex", - alignItems: "center", - background: tableScrollBg, - borderTop: tableBorder, - opacity: opacityLoading, - "&:hover": { - transformOrigin: "center bottom" - }, - // fake scrollbar style of sticky - "&-bar": { - height: tableScrollThumbSize, - backgroundColor: tableScrollThumbBg, - borderRadius: 100, - transition: `all ${token2.motionDurationSlow}, transform none`, - position: "absolute", - bottom: 0, - "&:hover, &-active": { - backgroundColor: tableScrollThumbBgHover - } - } - } - } - } - }; -}; -var sticky_default = genStickyStyle; - -// node_modules/ant-design-vue/es/table/style/summary.js -var genSummaryStyle = (token2) => { - const { - componentCls, - lineWidth, - tableBorderColor - } = token2; - const tableBorder = `${lineWidth}px ${token2.lineType} ${tableBorderColor}`; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-summary`]: { - position: "relative", - zIndex: token2.zIndexTableFixed, - background: token2.tableBg, - "> tr": { - "> th, > td": { - borderBottom: tableBorder - } - } - }, - [`div${componentCls}-summary`]: { - boxShadow: `0 -${lineWidth}px 0 ${tableBorderColor}` - } - } - }; -}; -var summary_default = genSummaryStyle; - -// node_modules/ant-design-vue/es/table/style/index.js -var genTableStyle = (token2) => { - const { - componentCls, - fontWeightStrong, - tablePaddingVertical, - tablePaddingHorizontal, - lineWidth, - lineType, - tableBorderColor, - tableFontSize, - tableBg, - tableRadius, - tableHeaderTextColor, - motionDurationMid, - tableHeaderBg, - tableHeaderCellSplitColor, - tableRowHoverBg, - tableSelectedRowBg, - tableSelectedRowHoverBg, - tableFooterTextColor, - tableFooterBg, - paddingContentVerticalLG - } = token2; - const tableBorder = `${lineWidth}px ${lineType} ${tableBorderColor}`; - return { - [`${componentCls}-wrapper`]: _extends(_extends({ - clear: "both", - maxWidth: "100%" - }, clearFix()), { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - fontSize: tableFontSize, - background: tableBg, - borderRadius: `${tableRadius}px ${tableRadius}px 0 0` - }), - // https://github.com/ant-design/ant-design/issues/17611 - table: { - width: "100%", - textAlign: "start", - borderRadius: `${tableRadius}px ${tableRadius}px 0 0`, - borderCollapse: "separate", - borderSpacing: 0 - }, - // ============================= Cell ============================= - [` - ${componentCls}-thead > tr > th, - ${componentCls}-tbody > tr > td, - tfoot > tr > th, - tfoot > tr > td - `]: { - position: "relative", - padding: `${paddingContentVerticalLG}px ${tablePaddingHorizontal}px`, - overflowWrap: "break-word" - }, - // ============================ Title ============================= - [`${componentCls}-title`]: { - padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px` - }, - // ============================ Header ============================ - [`${componentCls}-thead`]: { - [` - > tr > th, - > tr > td - `]: { - position: "relative", - color: tableHeaderTextColor, - fontWeight: fontWeightStrong, - textAlign: "start", - background: tableHeaderBg, - borderBottom: tableBorder, - transition: `background ${motionDurationMid} ease`, - "&[colspan]:not([colspan='1'])": { - textAlign: "center" - }, - [`&:not(:last-child):not(${componentCls}-selection-column):not(${componentCls}-row-expand-icon-cell):not([colspan])::before`]: { - position: "absolute", - top: "50%", - insetInlineEnd: 0, - width: 1, - height: "1.6em", - backgroundColor: tableHeaderCellSplitColor, - transform: "translateY(-50%)", - transition: `background-color ${motionDurationMid}`, - content: '""' - } - }, - "> tr:not(:last-child) > th[colspan]": { - borderBottom: 0 - } - }, - // ============================ Body ============================ - // Borderless Table has unique hover style, which would be implemented with `borderTop`. - [`${componentCls}:not(${componentCls}-bordered)`]: { - [`${componentCls}-tbody`]: { - "> tr": { - "> td": { - borderTop: tableBorder, - borderBottom: "transparent" - }, - "&:last-child > td": { - borderBottom: tableBorder - }, - [`&:first-child > td, - &${componentCls}-measure-row + tr > td`]: { - borderTop: "none", - borderTopColor: "transparent" - } - } - } - }, - // Bordered Table remains simple `borderBottom`. - // Ref issue: https://github.com/ant-design/ant-design/issues/38724 - [`${componentCls}${componentCls}-bordered`]: { - [`${componentCls}-tbody`]: { - "> tr": { - "> td": { - borderBottom: tableBorder - } - } - } - }, - [`${componentCls}-tbody`]: { - "> tr": { - "> td": { - transition: `background ${motionDurationMid}, border-color ${motionDurationMid}`, - // ========================= Nest Table =========================== - [` - > ${componentCls}-wrapper:only-child, - > ${componentCls}-expanded-row-fixed > ${componentCls}-wrapper:only-child - `]: { - [componentCls]: { - marginBlock: `-${tablePaddingVertical}px`, - marginInline: `${token2.tableExpandColumnWidth - tablePaddingHorizontal}px -${tablePaddingHorizontal}px`, - [`${componentCls}-tbody > tr:last-child > td`]: { - borderBottom: 0, - "&:first-child, &:last-child": { - borderRadius: 0 - } - } - } - } - }, - [` - &${componentCls}-row:hover > td, - > td${componentCls}-cell-row-hover - `]: { - background: tableRowHoverBg - }, - [`&${componentCls}-row-selected`]: { - "> td": { - background: tableSelectedRowBg - }, - "&:hover > td": { - background: tableSelectedRowHoverBg - } - } - } - }, - // ============================ Footer ============================ - [`${componentCls}-footer`]: { - padding: `${tablePaddingVertical}px ${tablePaddingHorizontal}px`, - color: tableFooterTextColor, - background: tableFooterBg - } - }) - }; -}; -var style_default55 = genComponentStyleHook("Table", (token2) => { - const { - controlItemBgActive, - controlItemBgActiveHover, - colorTextPlaceholder, - colorTextHeading, - colorSplit, - colorBorderSecondary, - fontSize, - padding, - paddingXS, - paddingSM, - controlHeight, - colorFillAlter, - colorIcon, - colorIconHover, - opacityLoading, - colorBgContainer, - borderRadiusLG, - colorFillContent, - colorFillSecondary, - controlInteractiveSize: checkboxSize - } = token2; - const baseColorAction = new TinyColor(colorIcon); - const baseColorActionHover = new TinyColor(colorIconHover); - const tableSelectedRowBg = controlItemBgActive; - const zIndexTableFixed = 2; - const colorFillSecondarySolid = new TinyColor(colorFillSecondary).onBackground(colorBgContainer).toHexString(); - const colorFillContentSolid = new TinyColor(colorFillContent).onBackground(colorBgContainer).toHexString(); - const colorFillAlterSolid = new TinyColor(colorFillAlter).onBackground(colorBgContainer).toHexString(); - const tableToken = merge(token2, { - tableFontSize: fontSize, - tableBg: colorBgContainer, - tableRadius: borderRadiusLG, - tablePaddingVertical: padding, - tablePaddingHorizontal: padding, - tablePaddingVerticalMiddle: paddingSM, - tablePaddingHorizontalMiddle: paddingXS, - tablePaddingVerticalSmall: paddingXS, - tablePaddingHorizontalSmall: paddingXS, - tableBorderColor: colorBorderSecondary, - tableHeaderTextColor: colorTextHeading, - tableHeaderBg: colorFillAlterSolid, - tableFooterTextColor: colorTextHeading, - tableFooterBg: colorFillAlterSolid, - tableHeaderCellSplitColor: colorBorderSecondary, - tableHeaderSortBg: colorFillSecondarySolid, - tableHeaderSortHoverBg: colorFillContentSolid, - tableHeaderIconColor: baseColorAction.clone().setAlpha(baseColorAction.getAlpha() * opacityLoading).toRgbString(), - tableHeaderIconColorHover: baseColorActionHover.clone().setAlpha(baseColorActionHover.getAlpha() * opacityLoading).toRgbString(), - tableBodySortBg: colorFillAlterSolid, - tableFixedHeaderSortActiveBg: colorFillSecondarySolid, - tableHeaderFilterActiveBg: colorFillContent, - tableFilterDropdownBg: colorBgContainer, - tableRowHoverBg: colorFillAlterSolid, - tableSelectedRowBg, - tableSelectedRowHoverBg: controlItemBgActiveHover, - zIndexTableFixed, - zIndexTableSticky: zIndexTableFixed + 1, - tableFontSizeMiddle: fontSize, - tableFontSizeSmall: fontSize, - tableSelectionColumnWidth: controlHeight, - tableExpandIconBg: colorBgContainer, - tableExpandColumnWidth: checkboxSize + 2 * token2.padding, - tableExpandedRowBg: colorFillAlter, - // Dropdown - tableFilterDropdownWidth: 120, - tableFilterDropdownHeight: 264, - tableFilterDropdownSearchWidth: 140, - // Virtual Scroll Bar - tableScrollThumbSize: 8, - tableScrollThumbBg: colorTextPlaceholder, - tableScrollThumbBgHover: colorTextHeading, - tableScrollBg: colorSplit - }); - return [genTableStyle(tableToken), pagination_default2(tableToken), summary_default(tableToken), sorter_default(tableToken), filter_default2(tableToken), bordered_default(tableToken), radius_default(tableToken), expand_default(tableToken), summary_default(tableToken), empty_default3(tableToken), selection_default(tableToken), fixed_default(tableToken), sticky_default(tableToken), ellipsis_default(tableToken), size_default2(tableToken), resize_default(tableToken), rtl_default3(tableToken)]; -}); - -// node_modules/ant-design-vue/es/table/Table.js -var EMPTY_LIST3 = []; -var tableProps = () => { - return { - prefixCls: stringType(), - columns: arrayType(), - rowKey: someType([String, Function]), - tableLayout: stringType(), - rowClassName: someType([String, Function]), - title: functionType(), - footer: functionType(), - id: stringType(), - showHeader: booleanType(), - components: objectType(), - customRow: functionType(), - customHeaderRow: functionType(), - direction: stringType(), - expandFixed: someType([Boolean, String]), - expandColumnWidth: Number, - expandedRowKeys: arrayType(), - defaultExpandedRowKeys: arrayType(), - expandedRowRender: functionType(), - expandRowByClick: booleanType(), - expandIcon: functionType(), - onExpand: functionType(), - onExpandedRowsChange: functionType(), - "onUpdate:expandedRowKeys": functionType(), - defaultExpandAllRows: booleanType(), - indentSize: Number, - /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */ - expandIconColumnIndex: Number, - showExpandColumn: booleanType(), - expandedRowClassName: functionType(), - childrenColumnName: stringType(), - rowExpandable: functionType(), - sticky: someType([Boolean, Object]), - dropdownPrefixCls: String, - dataSource: arrayType(), - pagination: someType([Boolean, Object]), - loading: someType([Boolean, Object]), - size: stringType(), - bordered: booleanType(), - locale: objectType(), - onChange: functionType(), - onResizeColumn: functionType(), - rowSelection: objectType(), - getPopupContainer: functionType(), - scroll: objectType(), - sortDirections: arrayType(), - showSorterTooltip: someType([Boolean, Object], true), - transformCellText: functionType() - }; -}; -var InternalTable = defineComponent({ - name: "InternalTable", - inheritAttrs: false, - props: initDefaultProps_default(_extends(_extends({}, tableProps()), { - contextSlots: objectType() - }), { - rowKey: "key" - }), - setup(props4, _ref) { - let { - attrs, - slots, - expose, - emit - } = _ref; - devWarning_default(!(typeof props4.rowKey === "function" && props4.rowKey.length > 1), "Table", "`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected."); - useProvideSlots(computed(() => props4.contextSlots)); - useProvideTableContext({ - onResizeColumn: (w2, col) => { - emit("resizeColumn", w2, col); - } - }); - const screens = useBreakpoint_default(); - const mergedColumns = computed(() => { - const matched = new Set(Object.keys(screens.value).filter((m2) => screens.value[m2])); - return props4.columns.filter((c2) => !c2.responsive || c2.responsive.some((r3) => matched.has(r3))); - }); - const { - size: mergedSize, - renderEmpty: renderEmpty2, - direction, - prefixCls, - configProvider - } = useConfigInject_default("table", props4); - const [wrapSSR, hashId] = style_default55(prefixCls); - const transformCellText = computed(() => { - var _a2; - return props4.transformCellText || ((_a2 = configProvider.transformCellText) === null || _a2 === void 0 ? void 0 : _a2.value); - }); - const [tableLocale] = useLocaleReceiver("Table", en_US_default6.Table, toRef(props4, "locale")); - const rawData = computed(() => props4.dataSource || EMPTY_LIST3); - const dropdownPrefixCls = computed(() => configProvider.getPrefixCls("dropdown", props4.dropdownPrefixCls)); - const childrenColumnName = computed(() => props4.childrenColumnName || "children"); - const expandType = computed(() => { - if (rawData.value.some((item) => item === null || item === void 0 ? void 0 : item[childrenColumnName.value])) { - return "nest"; - } - if (props4.expandedRowRender) { - return "row"; - } - return null; - }); - const internalRefs = reactive({ - body: null - }); - const updateInternalRefs = (refs) => { - _extends(internalRefs, refs); - }; - const getRowKey = computed(() => { - if (typeof props4.rowKey === "function") { - return props4.rowKey; - } - return (record) => record === null || record === void 0 ? void 0 : record[props4.rowKey]; - }); - const [getRecordByKey] = useLazyKVMap(rawData, childrenColumnName, getRowKey); - const changeEventInfo = {}; - const triggerOnChange = function(info, action) { - let reset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - const { - pagination, - scroll, - onChange - } = props4; - const changeInfo = _extends(_extends({}, changeEventInfo), info); - if (reset) { - changeEventInfo.resetPagination(); - if (changeInfo.pagination.current) { - changeInfo.pagination.current = 1; - } - if (pagination && pagination.onChange) { - pagination.onChange(1, changeInfo.pagination.pageSize); - } - } - if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body) { - scrollTo(0, { - getContainer: () => internalRefs.body - }); - } - onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, { - currentDataSource: getFilterData(getSortData(rawData.value, changeInfo.sorterStates, childrenColumnName.value), changeInfo.filterStates), - action - }); - }; - const onSorterChange = (sorter, sorterStates) => { - triggerOnChange({ - sorter, - sorterStates - }, "sort", false); - }; - const [transformSorterColumns, sortStates, sorterTitleProps, sorters] = useFilterSorter({ - prefixCls, - mergedColumns, - onSorterChange, - sortDirections: computed(() => props4.sortDirections || ["ascend", "descend"]), - tableLocale, - showSorterTooltip: toRef(props4, "showSorterTooltip") - }); - const sortedData = computed(() => getSortData(rawData.value, sortStates.value, childrenColumnName.value)); - const onFilterChange = (filters2, filterStates2) => { - triggerOnChange({ - filters: filters2, - filterStates: filterStates2 - }, "filter", true); - }; - const [transformFilterColumns, filterStates, filters] = useFilter_default({ - prefixCls, - locale: tableLocale, - dropdownPrefixCls, - mergedColumns, - onFilterChange, - getPopupContainer: toRef(props4, "getPopupContainer") - }); - const mergedData = computed(() => getFilterData(sortedData.value, filterStates.value)); - const [transformBasicColumns] = useColumns2(toRef(props4, "contextSlots")); - const columnTitleProps = computed(() => { - const mergedFilters = {}; - const filtersValue = filters.value; - Object.keys(filtersValue).forEach((filterKey) => { - if (filtersValue[filterKey] !== null) { - mergedFilters[filterKey] = filtersValue[filterKey]; - } - }); - return _extends(_extends({}, sorterTitleProps.value), { - filters: mergedFilters - }); - }); - const [transformTitleColumns] = useTitleColumns(columnTitleProps); - const onPaginationChange = (current, pageSize) => { - triggerOnChange({ - pagination: _extends(_extends({}, changeEventInfo.pagination), { - current, - pageSize - }) - }, "paginate"); - }; - const [mergedPagination, resetPagination] = usePagination(computed(() => mergedData.value.length), toRef(props4, "pagination"), onPaginationChange); - watchEffect(() => { - changeEventInfo.sorter = sorters.value; - changeEventInfo.sorterStates = sortStates.value; - changeEventInfo.filters = filters.value; - changeEventInfo.filterStates = filterStates.value; - changeEventInfo.pagination = props4.pagination === false ? {} : getPaginationParam(mergedPagination.value, props4.pagination); - changeEventInfo.resetPagination = resetPagination; - }); - const pageData = computed(() => { - if (props4.pagination === false || !mergedPagination.value.pageSize) { - return mergedData.value; - } - const { - current = 1, - total, - pageSize = DEFAULT_PAGE_SIZE - } = mergedPagination.value; - devWarning_default(current > 0, "Table", "`current` should be positive number."); - if (mergedData.value.length < total) { - if (mergedData.value.length > pageSize) { - return mergedData.value.slice((current - 1) * pageSize, current * pageSize); - } - return mergedData.value; - } - return mergedData.value.slice((current - 1) * pageSize, current * pageSize); - }); - watchEffect(() => { - nextTick(() => { - const { - total, - pageSize = DEFAULT_PAGE_SIZE - } = mergedPagination.value; - if (mergedData.value.length < total) { - if (mergedData.value.length > pageSize) { - devWarning_default(false, "Table", "`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode."); - } - } - }); - }, { - flush: "post" - }); - const expandIconColumnIndex = computed(() => { - if (props4.showExpandColumn === false) return -1; - if (expandType.value === "nest" && props4.expandIconColumnIndex === void 0) { - return props4.rowSelection ? 1 : 0; - } else if (props4.expandIconColumnIndex > 0 && props4.rowSelection) { - return props4.expandIconColumnIndex - 1; - } - return props4.expandIconColumnIndex; - }); - const rowSelection = ref(); - watch(() => props4.rowSelection, () => { - rowSelection.value = props4.rowSelection ? _extends({}, props4.rowSelection) : props4.rowSelection; - }, { - deep: true, - immediate: true - }); - const [transformSelectionColumns, selectedKeySet] = useSelection(rowSelection, { - prefixCls, - data: mergedData, - pageData, - getRowKey, - getRecordByKey, - expandType, - childrenColumnName, - locale: tableLocale, - getPopupContainer: computed(() => props4.getPopupContainer) - }); - const internalRowClassName = (record, index3, indent) => { - let mergedRowClassName; - const { - rowClassName - } = props4; - if (typeof rowClassName === "function") { - mergedRowClassName = classNames_default(rowClassName(record, index3, indent)); - } else { - mergedRowClassName = classNames_default(rowClassName); - } - return classNames_default({ - [`${prefixCls.value}-row-selected`]: selectedKeySet.value.has(getRowKey.value(record, index3)) - }, mergedRowClassName); - }; - expose({ - selectedKeySet - }); - const indentSize = computed(() => { - return typeof props4.indentSize === "number" ? props4.indentSize : 15; - }); - const transformColumns = (innerColumns) => { - const res = transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(transformBasicColumns(innerColumns))))); - return res; - }; - return () => { - var _a2; - const { - expandIcon = slots.expandIcon || ExpandIcon_default(tableLocale.value), - pagination, - loading, - bordered - } = props4; - let topPaginationNode; - let bottomPaginationNode; - if (pagination !== false && ((_a2 = mergedPagination.value) === null || _a2 === void 0 ? void 0 : _a2.total)) { - let paginationSize; - if (mergedPagination.value.size) { - paginationSize = mergedPagination.value.size; - } else { - paginationSize = mergedSize.value === "small" || mergedSize.value === "middle" ? "small" : void 0; - } - const renderPagination = (position3) => createVNode(pagination_default, _objectSpread2(_objectSpread2({}, mergedPagination.value), {}, { - "class": [`${prefixCls.value}-pagination ${prefixCls.value}-pagination-${position3}`, mergedPagination.value.class], - "size": paginationSize - }), null); - const defaultPosition = direction.value === "rtl" ? "left" : "right"; - const { - position: position2 - } = mergedPagination.value; - if (position2 !== null && Array.isArray(position2)) { - const topPos = position2.find((p) => p.includes("top")); - const bottomPos = position2.find((p) => p.includes("bottom")); - const isDisable = position2.every((p) => `${p}` === "none"); - if (!topPos && !bottomPos && !isDisable) { - bottomPaginationNode = renderPagination(defaultPosition); - } - if (topPos) { - topPaginationNode = renderPagination(topPos.toLowerCase().replace("top", "")); - } - if (bottomPos) { - bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace("bottom", "")); - } - } else { - bottomPaginationNode = renderPagination(defaultPosition); - } - } - let spinProps2; - if (typeof loading === "boolean") { - spinProps2 = { - spinning: loading - }; - } else if (typeof loading === "object") { - spinProps2 = _extends({ - spinning: true - }, loading); - } - const wrapperClassNames = classNames_default(`${prefixCls.value}-wrapper`, { - [`${prefixCls.value}-wrapper-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - const tableProps2 = omit_default(props4, ["columns"]); - return wrapSSR(createVNode("div", { - "class": wrapperClassNames, - "style": attrs.style - }, [createVNode(spin_default, _objectSpread2({ - "spinning": false - }, spinProps2), { - default: () => [topPaginationNode, createVNode(vc_table_default, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), tableProps2), {}, { - "expandedRowKeys": props4.expandedRowKeys, - "defaultExpandedRowKeys": props4.defaultExpandedRowKeys, - "expandIconColumnIndex": expandIconColumnIndex.value, - "indentSize": indentSize.value, - "expandIcon": expandIcon, - "columns": mergedColumns.value, - "direction": direction.value, - "prefixCls": prefixCls.value, - "class": classNames_default({ - [`${prefixCls.value}-middle`]: mergedSize.value === "middle", - [`${prefixCls.value}-small`]: mergedSize.value === "small", - [`${prefixCls.value}-bordered`]: bordered, - [`${prefixCls.value}-empty`]: rawData.value.length === 0 - }), - "data": pageData.value, - "rowKey": getRowKey.value, - "rowClassName": internalRowClassName, - "internalHooks": INTERNAL_HOOKS, - "internalRefs": internalRefs, - "onUpdateInternalRefs": updateInternalRefs, - "transformColumns": transformColumns, - "transformCellText": transformCellText.value - }), _extends(_extends({}, slots), { - emptyText: () => { - var _a3, _b; - return ((_a3 = slots.emptyText) === null || _a3 === void 0 ? void 0 : _a3.call(slots)) || ((_b = props4.locale) === null || _b === void 0 ? void 0 : _b.emptyText) || renderEmpty2("Table"); - } - })), bottomPaginationNode] - })])); - }; - } -}); -var Table = defineComponent({ - name: "ATable", - inheritAttrs: false, - props: initDefaultProps_default(tableProps(), { - rowKey: "key" - }), - slots: Object, - setup(props4, _ref2) { - let { - attrs, - slots, - expose - } = _ref2; - const table = ref(); - expose({ - table - }); - return () => { - var _a2; - const columns = props4.columns || convertChildrenToColumns((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)); - return createVNode(InternalTable, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": table - }, attrs), props4), {}, { - "columns": columns || [], - "expandedRowRender": slots.expandedRowRender || props4.expandedRowRender, - "contextSlots": _extends({}, slots) - }), slots); - }; - } -}); -var Table_default2 = Table; - -// node_modules/ant-design-vue/es/table/Column.js -var Column_default2 = defineComponent({ - name: "ATableColumn", - slots: Object, - render() { - return null; - } -}); - -// node_modules/ant-design-vue/es/table/ColumnGroup.js -var ColumnGroup_default2 = defineComponent({ - name: "ATableColumnGroup", - slots: Object, - __ANT_TABLE_COLUMN_GROUP: true, - render() { - return null; - } -}); - -// node_modules/ant-design-vue/es/table/index.js -var TableSummaryRow = Row_default3; -var TableSummaryCell = Cell_default3; -var TableSummary = _extends(FooterComponents, { - Cell: TableSummaryCell, - Row: TableSummaryRow, - name: "ATableSummary" -}); -var table_default = _extends(Table_default2, { - SELECTION_ALL, - SELECTION_INVERT, - SELECTION_NONE, - SELECTION_COLUMN, - EXPAND_COLUMN, - Column: Column_default2, - ColumnGroup: ColumnGroup_default2, - Summary: TableSummary, - install: (app) => { - app.component(TableSummary.name, TableSummary); - app.component(TableSummaryCell.name, TableSummaryCell); - app.component(TableSummaryRow.name, TableSummaryRow); - app.component(Table_default2.name, Table_default2); - app.component(Column_default2.name, Column_default2); - app.component(ColumnGroup_default2.name, ColumnGroup_default2); - return app; - } -}); - -// node_modules/ant-design-vue/es/transfer/search.js -var transferSearchProps = { - prefixCls: String, - placeholder: String, - value: String, - handleClear: Function, - disabled: { - type: Boolean, - default: void 0 - }, - onChange: Function -}; -var search_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Search", - inheritAttrs: false, - props: initDefaultProps_default(transferSearchProps, { - placeholder: "" - }), - emits: ["change"], - setup(props4, _ref) { - let { - emit - } = _ref; - const handleChange = (e3) => { - var _a2; - emit("change", e3); - if (e3.target.value === "") { - (_a2 = props4.handleClear) === null || _a2 === void 0 ? void 0 : _a2.call(props4); - } - }; - return () => { - const { - placeholder, - value, - prefixCls, - disabled - } = props4; - return createVNode(input_default, { - "placeholder": placeholder, - "class": prefixCls, - "value": value, - "onChange": handleChange, - "disabled": disabled, - "allowClear": true - }, { - prefix: () => createVNode(SearchOutlined_default, null, null) - }); - }; - } -}); - -// node_modules/ant-design-vue/es/transfer/ListItem.js -function noop14() { -} -var transferListItemProps = { - renderedText: vue_types_default.any, - renderedEl: vue_types_default.any, - item: vue_types_default.any, - checked: booleanType(), - prefixCls: String, - disabled: booleanType(), - showRemove: booleanType(), - onClick: Function, - onRemove: Function -}; -var ListItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ListItem", - inheritAttrs: false, - props: transferListItemProps, - emits: ["click", "remove"], - setup(props4, _ref) { - let { - emit - } = _ref; - return () => { - const { - renderedText, - renderedEl, - item, - checked, - disabled, - prefixCls, - showRemove - } = props4; - const className = classNames_default({ - [`${prefixCls}-content-item`]: true, - [`${prefixCls}-content-item-disabled`]: disabled || item.disabled - }); - let title; - if (typeof renderedText === "string" || typeof renderedText === "number") { - title = String(renderedText); - } - return createVNode(LocaleReceiver_default2, { - "componentName": "Transfer", - "defaultLocale": en_US_default6.Transfer - }, { - default: (transferLocale) => { - const labelNode = createVNode("span", { - "class": `${prefixCls}-content-item-text` - }, [renderedEl]); - if (showRemove) { - return createVNode("li", { - "class": className, - "title": title - }, [labelNode, createVNode(transButton_default, { - "disabled": disabled || item.disabled, - "class": `${prefixCls}-content-item-remove`, - "aria-label": transferLocale.remove, - "onClick": () => { - emit("remove", item); - } - }, { - default: () => [createVNode(DeleteOutlined_default, null, null)] - })]); - } - return createVNode("li", { - "class": className, - "title": title, - "onClick": disabled || item.disabled ? noop14 : () => { - emit("click", item); - } - }, [createVNode(checkbox_default, { - "class": `${prefixCls}-checkbox`, - "checked": checked, - "disabled": disabled || item.disabled - }, null), labelNode]); - } - }); - }; - } -}); - -// node_modules/ant-design-vue/es/transfer/ListBody.js -var transferListBodyProps = { - prefixCls: String, - filteredRenderItems: vue_types_default.array.def([]), - selectedKeys: vue_types_default.array, - disabled: booleanType(), - showRemove: booleanType(), - pagination: vue_types_default.any, - onItemSelect: Function, - onScroll: Function, - onItemRemove: Function -}; -function parsePagination(pagination) { - if (!pagination) { - return null; - } - const defaultPagination = { - pageSize: 10, - simple: true, - showSizeChanger: false, - showLessItems: false - }; - if (typeof pagination === "object") { - return _extends(_extends({}, defaultPagination), pagination); - } - return defaultPagination; -} -var ListBody = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ListBody", - inheritAttrs: false, - props: transferListBodyProps, - emits: ["itemSelect", "itemRemove", "scroll"], - setup(props4, _ref) { - let { - emit, - expose - } = _ref; - const current = ref(1); - const handleItemSelect = (item) => { - const { - selectedKeys - } = props4; - const checked = selectedKeys.indexOf(item.key) >= 0; - emit("itemSelect", item.key, !checked); - }; - const handleItemRemove = (item) => { - emit("itemRemove", [item.key]); - }; - const handleScroll = (e3) => { - emit("scroll", e3); - }; - const mergedPagination = computed(() => parsePagination(props4.pagination)); - watch([mergedPagination, () => props4.filteredRenderItems], () => { - if (mergedPagination.value) { - const maxPageCount = Math.ceil(props4.filteredRenderItems.length / mergedPagination.value.pageSize); - current.value = Math.min(current.value, maxPageCount); - } - }, { - immediate: true - }); - const items = computed(() => { - const { - filteredRenderItems - } = props4; - let displayItems = filteredRenderItems; - if (mergedPagination.value) { - displayItems = filteredRenderItems.slice((current.value - 1) * mergedPagination.value.pageSize, current.value * mergedPagination.value.pageSize); - } - return displayItems; - }); - const onPageChange = (cur) => { - current.value = cur; - }; - expose({ - items - }); - return () => { - const { - prefixCls, - filteredRenderItems, - selectedKeys, - disabled: globalDisabled, - showRemove - } = props4; - let paginationNode = null; - if (mergedPagination.value) { - paginationNode = createVNode(pagination_default, { - "simple": mergedPagination.value.simple, - "showSizeChanger": mergedPagination.value.showSizeChanger, - "showLessItems": mergedPagination.value.showLessItems, - "size": "small", - "disabled": globalDisabled, - "class": `${prefixCls}-pagination`, - "total": filteredRenderItems.length, - "pageSize": mergedPagination.value.pageSize, - "current": current.value, - "onChange": onPageChange - }, null); - } - const itemsList = items.value.map((_ref2) => { - let { - renderedEl, - renderedText, - item - } = _ref2; - const { - disabled - } = item; - const checked = selectedKeys.indexOf(item.key) >= 0; - return createVNode(ListItem_default, { - "disabled": globalDisabled || disabled, - "key": item.key, - "item": item, - "renderedText": renderedText, - "renderedEl": renderedEl, - "checked": checked, - "prefixCls": prefixCls, - "onClick": handleItemSelect, - "onRemove": handleItemRemove, - "showRemove": showRemove - }, null); - }); - return createVNode(Fragment, null, [createVNode("ul", { - "class": classNames_default(`${prefixCls}-content`, { - [`${prefixCls}-content-show-remove`]: showRemove - }), - "onScroll": handleScroll - }, [itemsList]), paginationNode]); - }; - } -}); -var ListBody_default = ListBody; - -// node_modules/ant-design-vue/es/_util/transKeys.js -var groupKeysMap = (keys2) => { - const map2 = /* @__PURE__ */ new Map(); - keys2.forEach((key2, index3) => { - map2.set(key2, index3); - }); - return map2; -}; -var groupDisabledKeysMap = (dataSource) => { - const map2 = /* @__PURE__ */ new Map(); - dataSource.forEach((_ref, index3) => { - let { - disabled, - key: key2 - } = _ref; - if (disabled) { - map2.set(key2, index3); - } - }); - return map2; -}; - -// node_modules/ant-design-vue/es/transfer/list.js -var defaultRender2 = () => null; -function isRenderResultPlainObject(result2) { - return !!(result2 && !isValidElement(result2) && Object.prototype.toString.call(result2) === "[object Object]"); -} -function getEnabledItemKeys(items) { - return items.filter((data) => !data.disabled).map((data) => data.key); -} -var transferListProps = { - prefixCls: String, - dataSource: arrayType([]), - filter: String, - filterOption: Function, - checkedKeys: vue_types_default.arrayOf(vue_types_default.string), - handleFilter: Function, - handleClear: Function, - renderItem: Function, - showSearch: booleanType(false), - searchPlaceholder: String, - notFoundContent: vue_types_default.any, - itemUnit: String, - itemsUnit: String, - renderList: vue_types_default.any, - disabled: booleanType(), - direction: stringType(), - showSelectAll: booleanType(), - remove: String, - selectAll: String, - selectCurrent: String, - selectInvert: String, - removeAll: String, - removeCurrent: String, - selectAllLabel: vue_types_default.any, - showRemove: booleanType(), - pagination: vue_types_default.any, - onItemSelect: Function, - onItemSelectAll: Function, - onItemRemove: Function, - onScroll: Function -}; -var list_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TransferList", - inheritAttrs: false, - props: transferListProps, - // emits: ['scroll', 'itemSelectAll', 'itemRemove', 'itemSelect'], - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const filterValue = ref(""); - const transferNode = ref(); - const defaultListBodyRef = ref(); - const renderListBody = (renderList, props5) => { - let bodyContent = renderList ? renderList(props5) : null; - const customize = !!bodyContent && filterEmpty(bodyContent).length > 0; - if (!customize) { - bodyContent = createVNode(ListBody_default, _objectSpread2(_objectSpread2({}, props5), {}, { - "ref": defaultListBodyRef - }), null); - } - return { - customize, - bodyContent - }; - }; - const renderItemHtml = (item) => { - const { - renderItem = defaultRender2 - } = props4; - const renderResult = renderItem(item); - const isRenderResultPlain = isRenderResultPlainObject(renderResult); - return { - renderedText: isRenderResultPlain ? renderResult.value : renderResult, - renderedEl: isRenderResultPlain ? renderResult.label : renderResult, - item - }; - }; - const filteredItems = ref([]); - const filteredRenderItems = ref([]); - watchEffect(() => { - const fItems = []; - const fRenderItems = []; - props4.dataSource.forEach((item) => { - const renderedItem = renderItemHtml(item); - const { - renderedText - } = renderedItem; - if (filterValue.value && filterValue.value.trim() && !matchFilter(renderedText, item)) { - return null; - } - fItems.push(item); - fRenderItems.push(renderedItem); - }); - filteredItems.value = fItems; - filteredRenderItems.value = fRenderItems; - }); - const checkStatus = computed(() => { - const { - checkedKeys - } = props4; - if (checkedKeys.length === 0) { - return "none"; - } - const checkedKeysMap = groupKeysMap(checkedKeys); - if (filteredItems.value.every((item) => checkedKeysMap.has(item.key) || !!item.disabled)) { - return "all"; - } - return "part"; - }); - const enabledItemKeys = computed(() => { - return getEnabledItemKeys(filteredItems.value); - }); - const getNewSelectKeys = (keys2, unCheckedKeys) => { - return Array.from(/* @__PURE__ */ new Set([...keys2, ...props4.checkedKeys])).filter((key2) => unCheckedKeys.indexOf(key2) === -1); - }; - const getCheckBox = (_ref2) => { - let { - disabled, - prefixCls - } = _ref2; - var _a2; - const checkedAll = checkStatus.value === "all"; - const checkAllCheckbox = createVNode(checkbox_default, { - "disabled": ((_a2 = props4.dataSource) === null || _a2 === void 0 ? void 0 : _a2.length) === 0 || disabled, - "checked": checkedAll, - "indeterminate": checkStatus.value === "part", - "class": `${prefixCls}-checkbox`, - "onChange": () => { - const keys2 = enabledItemKeys.value; - props4.onItemSelectAll(getNewSelectKeys(!checkedAll ? keys2 : [], checkedAll ? props4.checkedKeys : [])); - } - }, null); - return checkAllCheckbox; - }; - const handleFilter = (e3) => { - var _a2; - const { - target: { - value: filter3 - } - } = e3; - filterValue.value = filter3; - (_a2 = props4.handleFilter) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }; - const handleClear = (e3) => { - var _a2; - filterValue.value = ""; - (_a2 = props4.handleClear) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - }; - const matchFilter = (text, item) => { - const { - filterOption: filterOption2 - } = props4; - if (filterOption2) { - return filterOption2(filterValue.value, item); - } - return text.includes(filterValue.value); - }; - const getSelectAllLabel = (selectedCount, totalCount) => { - const { - itemsUnit, - itemUnit, - selectAllLabel - } = props4; - if (selectAllLabel) { - return typeof selectAllLabel === "function" ? selectAllLabel({ - selectedCount, - totalCount - }) : selectAllLabel; - } - const unit = totalCount > 1 ? itemsUnit : itemUnit; - return createVNode(Fragment, null, [(selectedCount > 0 ? `${selectedCount}/` : "") + totalCount, createTextVNode(" "), unit]); - }; - const notFoundContentEle = computed(() => Array.isArray(props4.notFoundContent) ? props4.notFoundContent[props4.direction === "left" ? 0 : 1] : props4.notFoundContent); - const getListBody = (prefixCls, searchPlaceholder, checkedKeys, renderList, showSearch, disabled) => { - const search = showSearch ? createVNode("div", { - "class": `${prefixCls}-body-search-wrapper` - }, [createVNode(search_default, { - "prefixCls": `${prefixCls}-search`, - "onChange": handleFilter, - "handleClear": handleClear, - "placeholder": searchPlaceholder, - "value": filterValue.value, - "disabled": disabled - }, null)]) : null; - let bodyNode; - const { - onEvents - } = splitAttrs(attrs); - const { - bodyContent, - customize - } = renderListBody(renderList, _extends(_extends(_extends({}, props4), { - filteredItems: filteredItems.value, - filteredRenderItems: filteredRenderItems.value, - selectedKeys: checkedKeys - }), onEvents)); - if (customize) { - bodyNode = createVNode("div", { - "class": `${prefixCls}-body-customize-wrapper` - }, [bodyContent]); - } else { - bodyNode = filteredItems.value.length ? bodyContent : createVNode("div", { - "class": `${prefixCls}-body-not-found` - }, [notFoundContentEle.value]); - } - return createVNode("div", { - "class": showSearch ? `${prefixCls}-body ${prefixCls}-body-with-search` : `${prefixCls}-body`, - "ref": transferNode - }, [search, bodyNode]); - }; - return () => { - var _a2, _b; - const { - prefixCls, - checkedKeys, - disabled, - showSearch, - searchPlaceholder, - selectAll, - selectCurrent, - selectInvert, - removeAll, - removeCurrent, - renderList, - onItemSelectAll, - onItemRemove, - showSelectAll = true, - showRemove, - pagination - } = props4; - const footerDom = (_a2 = slots.footer) === null || _a2 === void 0 ? void 0 : _a2.call(slots, _extends({}, props4)); - const listCls = classNames_default(prefixCls, { - [`${prefixCls}-with-pagination`]: !!pagination, - [`${prefixCls}-with-footer`]: !!footerDom - }); - const listBody = getListBody(prefixCls, searchPlaceholder, checkedKeys, renderList, showSearch, disabled); - const listFooter = footerDom ? createVNode("div", { - "class": `${prefixCls}-footer` - }, [footerDom]) : null; - const checkAllCheckbox = !showRemove && !pagination && getCheckBox({ - disabled, - prefixCls - }); - let menu = null; - if (showRemove) { - menu = createVNode(menu_default, null, { - default: () => [pagination && createVNode(menu_default.Item, { - "key": "removeCurrent", - "onClick": () => { - const pageKeys = getEnabledItemKeys((defaultListBodyRef.value.items || []).map((entity) => entity.item)); - onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(pageKeys); - } - }, { - default: () => [removeCurrent] - }), createVNode(menu_default.Item, { - "key": "removeAll", - "onClick": () => { - onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(enabledItemKeys.value); - } - }, { - default: () => [removeAll] - })] - }); - } else { - menu = createVNode(menu_default, null, { - default: () => [createVNode(menu_default.Item, { - "key": "selectAll", - "onClick": () => { - const keys2 = enabledItemKeys.value; - onItemSelectAll(getNewSelectKeys(keys2, [])); - } - }, { - default: () => [selectAll] - }), pagination && createVNode(menu_default.Item, { - "onClick": () => { - const pageKeys = getEnabledItemKeys((defaultListBodyRef.value.items || []).map((entity) => entity.item)); - onItemSelectAll(getNewSelectKeys(pageKeys, [])); - } - }, { - default: () => [selectCurrent] - }), createVNode(menu_default.Item, { - "key": "selectInvert", - "onClick": () => { - let availableKeys; - if (pagination) { - availableKeys = getEnabledItemKeys((defaultListBodyRef.value.items || []).map((entity) => entity.item)); - } else { - availableKeys = enabledItemKeys.value; - } - const checkedKeySet = new Set(checkedKeys); - const newCheckedKeys = []; - const newUnCheckedKeys = []; - availableKeys.forEach((key2) => { - if (checkedKeySet.has(key2)) { - newUnCheckedKeys.push(key2); - } else { - newCheckedKeys.push(key2); - } - }); - onItemSelectAll(getNewSelectKeys(newCheckedKeys, newUnCheckedKeys)); - } - }, { - default: () => [selectInvert] - })] - }); - } - const dropdown = createVNode(dropdown_default3, { - "class": `${prefixCls}-header-dropdown`, - "overlay": menu, - "disabled": disabled - }, { - default: () => [createVNode(DownOutlined_default, null, null)] - }); - return createVNode("div", { - "class": listCls, - "style": attrs.style - }, [createVNode("div", { - "class": `${prefixCls}-header` - }, [showSelectAll ? createVNode(Fragment, null, [checkAllCheckbox, dropdown]) : null, createVNode("span", { - "class": `${prefixCls}-header-selected` - }, [createVNode("span", null, [getSelectAllLabel(checkedKeys.length, filteredItems.value.length)]), createVNode("span", { - "class": `${prefixCls}-header-title` - }, [(_b = slots.titleText) === null || _b === void 0 ? void 0 : _b.call(slots)])])]), listBody, listFooter]); - }; - } -}); - -// node_modules/ant-design-vue/es/transfer/operation.js -function noop15() { -} -var Operation = (props4) => { - const { - disabled, - moveToLeft = noop15, - moveToRight = noop15, - leftArrowText = "", - rightArrowText = "", - leftActive, - rightActive, - class: className, - style, - direction, - oneWay - } = props4; - return createVNode("div", { - "class": className, - "style": style - }, [createVNode(button_default2, { - "type": "primary", - "size": "small", - "disabled": disabled || !rightActive, - "onClick": moveToRight, - "icon": direction !== "rtl" ? createVNode(RightOutlined_default, null, null) : createVNode(LeftOutlined_default, null, null) - }, { - default: () => [rightArrowText] - }), !oneWay && createVNode(button_default2, { - "type": "primary", - "size": "small", - "disabled": disabled || !leftActive, - "onClick": moveToLeft, - "icon": direction !== "rtl" ? createVNode(LeftOutlined_default, null, null) : createVNode(RightOutlined_default, null, null) - }, { - default: () => [leftArrowText] - })]); -}; -Operation.displayName = "Operation"; -Operation.inheritAttrs = false; -var operation_default = Operation; - -// node_modules/ant-design-vue/es/transfer/style/index.js -var genTransferCustomizeStyle = (token2) => { - const { - antCls, - componentCls, - listHeight, - controlHeightLG, - marginXXS, - margin - } = token2; - const tableCls = `${antCls}-table`; - const inputCls = `${antCls}-input`; - return { - [`${componentCls}-customize-list`]: { - [`${componentCls}-list`]: { - flex: "1 1 50%", - width: "auto", - height: "auto", - minHeight: listHeight - }, - // =================== Hook Components =================== - [`${tableCls}-wrapper`]: { - [`${tableCls}-small`]: { - border: 0, - borderRadius: 0, - [`${tableCls}-selection-column`]: { - width: controlHeightLG, - minWidth: controlHeightLG - } - }, - [`${tableCls}-pagination${tableCls}-pagination`]: { - margin: `${margin}px 0 ${marginXXS}px` - } - }, - [`${inputCls}[disabled]`]: { - backgroundColor: "transparent" - } - } - }; -}; -var genTransferStatusColor = (token2, color) => { - const { - componentCls, - colorBorder - } = token2; - return { - [`${componentCls}-list`]: { - borderColor: color, - "&-search:not([disabled])": { - borderColor: colorBorder - } - } - }; -}; -var genTransferStatusStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-status-error`]: _extends({}, genTransferStatusColor(token2, token2.colorError)), - [`${componentCls}-status-warning`]: _extends({}, genTransferStatusColor(token2, token2.colorWarning)) - }; -}; -var genTransferListStyle = (token2) => { - const { - componentCls, - colorBorder, - colorSplit, - lineWidth, - transferItemHeight, - transferHeaderHeight, - transferHeaderVerticalPadding, - transferItemPaddingVertical, - controlItemBgActive, - controlItemBgActiveHover, - colorTextDisabled, - listHeight, - listWidth, - listWidthLG, - fontSizeIcon, - marginXS, - paddingSM, - lineType, - iconCls, - motionDurationSlow - } = token2; - return { - display: "flex", - flexDirection: "column", - width: listWidth, - height: listHeight, - border: `${lineWidth}px ${lineType} ${colorBorder}`, - borderRadius: token2.borderRadiusLG, - "&-with-pagination": { - width: listWidthLG, - height: "auto" - }, - "&-search": { - [`${iconCls}-search`]: { - color: colorTextDisabled - } - }, - "&-header": { - display: "flex", - flex: "none", - alignItems: "center", - height: transferHeaderHeight, - // border-top is on the transfer dom. We should minus 1px for this - padding: `${transferHeaderVerticalPadding - lineWidth}px ${paddingSM}px ${transferHeaderVerticalPadding}px`, - color: token2.colorText, - background: token2.colorBgContainer, - borderBottom: `${lineWidth}px ${lineType} ${colorSplit}`, - borderRadius: `${token2.borderRadiusLG}px ${token2.borderRadiusLG}px 0 0`, - "> *:not(:last-child)": { - marginInlineEnd: 4 - // This is magic and fixed number, DO NOT use token since it may change. - }, - "> *": { - flex: "none" - }, - "&-title": _extends(_extends({}, textEllipsis), { - flex: "auto", - textAlign: "end" - }), - "&-dropdown": _extends(_extends({}, resetIcon()), { - fontSize: fontSizeIcon, - transform: "translateY(10%)", - cursor: "pointer", - "&[disabled]": { - cursor: "not-allowed" - } - }) - }, - "&-body": { - display: "flex", - flex: "auto", - flexDirection: "column", - overflow: "hidden", - fontSize: token2.fontSize, - "&-search-wrapper": { - position: "relative", - flex: "none", - padding: paddingSM - } - }, - "&-content": { - flex: "auto", - margin: 0, - padding: 0, - overflow: "auto", - listStyle: "none", - "&-item": { - display: "flex", - alignItems: "center", - minHeight: transferItemHeight, - padding: `${transferItemPaddingVertical}px ${paddingSM}px`, - transition: `all ${motionDurationSlow}`, - "> *:not(:last-child)": { - marginInlineEnd: marginXS - }, - "> *": { - flex: "none" - }, - "&-text": _extends(_extends({}, textEllipsis), { - flex: "auto" - }), - "&-remove": { - position: "relative", - color: colorBorder, - cursor: "pointer", - transition: `all ${motionDurationSlow}`, - "&:hover": { - color: token2.colorLinkHover - }, - "&::after": { - position: "absolute", - insert: `-${transferItemPaddingVertical}px -50%`, - content: '""' - } - }, - [`&:not(${componentCls}-list-content-item-disabled)`]: { - "&:hover": { - backgroundColor: token2.controlItemBgHover, - cursor: "pointer" - }, - [`&${componentCls}-list-content-item-checked:hover`]: { - backgroundColor: controlItemBgActiveHover - } - }, - "&-checked": { - backgroundColor: controlItemBgActive - }, - "&-disabled": { - color: colorTextDisabled, - cursor: "not-allowed" - } - }, - // Do not change hover style when `oneWay` mode - [`&-show-remove ${componentCls}-list-content-item:not(${componentCls}-list-content-item-disabled):hover`]: { - background: "transparent", - cursor: "default" - } - }, - "&-pagination": { - padding: `${token2.paddingXS}px 0`, - textAlign: "end", - borderTop: `${lineWidth}px ${lineType} ${colorSplit}` - }, - "&-body-not-found": { - flex: "none", - width: "100%", - margin: "auto 0", - color: colorTextDisabled, - textAlign: "center" - }, - "&-footer": { - borderTop: `${lineWidth}px ${lineType} ${colorSplit}` - }, - "&-checkbox": { - lineHeight: 1 - } - }; -}; -var genTransferStyle = (token2) => { - const { - antCls, - iconCls, - componentCls, - transferHeaderHeight, - marginXS, - marginXXS, - fontSizeIcon, - fontSize, - lineHeight - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - position: "relative", - display: "flex", - alignItems: "stretch", - [`${componentCls}-disabled`]: { - [`${componentCls}-list`]: { - background: token2.colorBgContainerDisabled - } - }, - [`${componentCls}-list`]: genTransferListStyle(token2), - [`${componentCls}-operation`]: { - display: "flex", - flex: "none", - flexDirection: "column", - alignSelf: "center", - margin: `0 ${marginXS}px`, - verticalAlign: "middle", - [`${antCls}-btn`]: { - display: "block", - "&:first-child": { - marginBottom: marginXXS - }, - [iconCls]: { - fontSize: fontSizeIcon - } - } - }, - [`${antCls}-empty-image`]: { - maxHeight: transferHeaderHeight / 2 - Math.round(fontSize * lineHeight) - } - }) - }; -}; -var genTransferRTLStyle = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-rtl`]: { - direction: "rtl" - } - }; -}; -var style_default56 = genComponentStyleHook("Transfer", (token2) => { - const { - fontSize, - lineHeight, - lineWidth, - controlHeightLG, - controlHeight - } = token2; - const fontHeight = Math.round(fontSize * lineHeight); - const transferHeaderHeight = controlHeightLG; - const transferItemHeight = controlHeight; - const transferToken = merge(token2, { - transferItemHeight, - transferHeaderHeight, - transferHeaderVerticalPadding: Math.ceil((transferHeaderHeight - lineWidth - fontHeight) / 2), - transferItemPaddingVertical: (transferItemHeight - fontHeight) / 2 - }); - return [genTransferStyle(transferToken), genTransferCustomizeStyle(transferToken), genTransferStatusStyle(transferToken), genTransferRTLStyle(transferToken)]; -}, { - listWidth: 180, - listHeight: 200, - listWidthLG: 250 -}); - -// node_modules/ant-design-vue/es/transfer/index.js -var transferProps = () => ({ - id: String, - prefixCls: String, - dataSource: arrayType([]), - disabled: booleanType(), - targetKeys: arrayType(), - selectedKeys: arrayType(), - render: functionType(), - listStyle: someType([Function, Object], () => ({})), - operationStyle: objectType(void 0), - titles: arrayType(), - operations: arrayType(), - showSearch: booleanType(false), - filterOption: functionType(), - searchPlaceholder: String, - notFoundContent: vue_types_default.any, - locale: objectType(), - rowKey: functionType(), - showSelectAll: booleanType(), - selectAllLabels: arrayType(), - children: functionType(), - oneWay: booleanType(), - pagination: someType([Object, Boolean]), - status: stringType(), - onChange: functionType(), - onSelectChange: functionType(), - onSearch: functionType(), - onScroll: functionType(), - "onUpdate:targetKeys": functionType(), - "onUpdate:selectedKeys": functionType() -}); -var Transfer = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATransfer", - inheritAttrs: false, - props: transferProps(), - slots: Object, - // emits: ['update:targetKeys', 'update:selectedKeys', 'change', 'search', 'scroll', 'selectChange'], - setup(props4, _ref) { - let { - emit, - attrs, - slots, - expose - } = _ref; - const { - configProvider, - prefixCls, - direction - } = useConfigInject_default("transfer", props4); - const [wrapSSR, hashId] = style_default56(prefixCls); - const sourceSelectedKeys = ref([]); - const targetSelectedKeys = ref([]); - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - watch(() => props4.selectedKeys, () => { - var _a2, _b; - sourceSelectedKeys.value = ((_a2 = props4.selectedKeys) === null || _a2 === void 0 ? void 0 : _a2.filter((key2) => props4.targetKeys.indexOf(key2) === -1)) || []; - targetSelectedKeys.value = ((_b = props4.selectedKeys) === null || _b === void 0 ? void 0 : _b.filter((key2) => props4.targetKeys.indexOf(key2) > -1)) || []; - }, { - immediate: true - }); - const getLocale = (transferLocale, renderEmpty2) => { - const oldLocale = { - notFoundContent: renderEmpty2("Transfer") - }; - const notFoundContent = getPropsSlot(slots, props4, "notFoundContent"); - if (notFoundContent) { - oldLocale.notFoundContent = notFoundContent; - } - if (props4.searchPlaceholder !== void 0) { - oldLocale.searchPlaceholder = props4.searchPlaceholder; - } - return _extends(_extends(_extends({}, transferLocale), oldLocale), props4.locale); - }; - const moveTo = (direction2) => { - const { - targetKeys = [], - dataSource = [] - } = props4; - const moveKeys = direction2 === "right" ? sourceSelectedKeys.value : targetSelectedKeys.value; - const dataSourceDisabledKeysMap = groupDisabledKeysMap(dataSource); - const newMoveKeys = moveKeys.filter((key2) => !dataSourceDisabledKeysMap.has(key2)); - const newMoveKeysMap = groupKeysMap(newMoveKeys); - const newTargetKeys = direction2 === "right" ? newMoveKeys.concat(targetKeys) : targetKeys.filter((targetKey) => !newMoveKeysMap.has(targetKey)); - const oppositeDirection = direction2 === "right" ? "left" : "right"; - direction2 === "right" ? sourceSelectedKeys.value = [] : targetSelectedKeys.value = []; - emit("update:targetKeys", newTargetKeys); - handleSelectChange(oppositeDirection, []); - emit("change", newTargetKeys, direction2, newMoveKeys); - formItemContext.onFieldChange(); - }; - const moveToLeft = () => { - moveTo("left"); - }; - const moveToRight = () => { - moveTo("right"); - }; - const onItemSelectAll = (direction2, selectedKeys) => { - handleSelectChange(direction2, selectedKeys); - }; - const onLeftItemSelectAll = (selectedKeys) => { - return onItemSelectAll("left", selectedKeys); - }; - const onRightItemSelectAll = (selectedKeys) => { - return onItemSelectAll("right", selectedKeys); - }; - const handleSelectChange = (direction2, holder) => { - if (direction2 === "left") { - if (!props4.selectedKeys) { - sourceSelectedKeys.value = holder; - } - emit("update:selectedKeys", [...holder, ...targetSelectedKeys.value]); - emit("selectChange", holder, toRaw(targetSelectedKeys.value)); - } else { - if (!props4.selectedKeys) { - targetSelectedKeys.value = holder; - } - emit("update:selectedKeys", [...holder, ...sourceSelectedKeys.value]); - emit("selectChange", toRaw(sourceSelectedKeys.value), holder); - } - }; - const handleFilter = (direction2, e3) => { - const value = e3.target.value; - emit("search", direction2, value); - }; - const handleLeftFilter = (e3) => { - handleFilter("left", e3); - }; - const handleRightFilter = (e3) => { - handleFilter("right", e3); - }; - const handleClear = (direction2) => { - emit("search", direction2, ""); - }; - const handleLeftClear = () => { - handleClear("left"); - }; - const handleRightClear = () => { - handleClear("right"); - }; - const onItemSelect = (direction2, selectedKey, checked) => { - const holder = direction2 === "left" ? [...sourceSelectedKeys.value] : [...targetSelectedKeys.value]; - const index3 = holder.indexOf(selectedKey); - if (index3 > -1) { - holder.splice(index3, 1); - } - if (checked) { - holder.push(selectedKey); - } - handleSelectChange(direction2, holder); - }; - const onLeftItemSelect = (selectedKey, checked) => { - return onItemSelect("left", selectedKey, checked); - }; - const onRightItemSelect = (selectedKey, checked) => { - return onItemSelect("right", selectedKey, checked); - }; - const onRightItemRemove = (targetedKeys) => { - const { - targetKeys = [] - } = props4; - const newTargetKeys = targetKeys.filter((key2) => !targetedKeys.includes(key2)); - emit("update:targetKeys", newTargetKeys); - emit("change", newTargetKeys, "left", [...targetedKeys]); - }; - const handleScroll = (direction2, e3) => { - emit("scroll", direction2, e3); - }; - const handleLeftScroll = (e3) => { - handleScroll("left", e3); - }; - const handleRightScroll = (e3) => { - handleScroll("right", e3); - }; - const handleListStyle = (listStyle, direction2) => { - if (typeof listStyle === "function") { - return listStyle({ - direction: direction2 - }); - } - return listStyle; - }; - const leftDataSource = ref([]); - const rightDataSource = ref([]); - watchEffect(() => { - const { - dataSource, - rowKey, - targetKeys = [] - } = props4; - const ld = []; - const rd = new Array(targetKeys.length); - const targetKeysMap = groupKeysMap(targetKeys); - dataSource.forEach((record) => { - if (rowKey) { - record.key = rowKey(record); - } - if (targetKeysMap.has(record.key)) { - rd[targetKeysMap.get(record.key)] = record; - } else { - ld.push(record); - } - }); - leftDataSource.value = ld; - rightDataSource.value = rd; - }); - expose({ - handleSelectChange - }); - const renderTransfer = (transferLocale) => { - var _a2, _b, _c, _d, _e, _f; - const { - disabled, - operations = [], - showSearch, - listStyle, - operationStyle, - filterOption: filterOption2, - showSelectAll, - selectAllLabels = [], - oneWay, - pagination, - id = formItemContext.id.value - } = props4; - const { - class: className, - style - } = attrs; - const children = slots.children; - const mergedPagination = !children && pagination; - const renderEmpty2 = configProvider.renderEmpty; - const locale4 = getLocale(transferLocale, renderEmpty2); - const { - footer - } = slots; - const renderItem = props4.render || slots.render; - const leftActive = targetSelectedKeys.value.length > 0; - const rightActive = sourceSelectedKeys.value.length > 0; - const cls = classNames_default(prefixCls.value, className, { - [`${prefixCls.value}-disabled`]: disabled, - [`${prefixCls.value}-customize-list`]: !!children, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, getStatusClassNames(prefixCls.value, mergedStatus.value, formItemInputContext.hasFeedback), hashId.value); - const titles = props4.titles; - const leftTitle = (_c = (_a2 = titles && titles[0]) !== null && _a2 !== void 0 ? _a2 : (_b = slots.leftTitle) === null || _b === void 0 ? void 0 : _b.call(slots)) !== null && _c !== void 0 ? _c : (locale4.titles || ["", ""])[0]; - const rightTitle = (_f = (_d = titles && titles[1]) !== null && _d !== void 0 ? _d : (_e = slots.rightTitle) === null || _e === void 0 ? void 0 : _e.call(slots)) !== null && _f !== void 0 ? _f : (locale4.titles || ["", ""])[1]; - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": cls, - "style": style, - "id": id - }), [createVNode(list_default2, _objectSpread2({ - "key": "leftList", - "prefixCls": `${prefixCls.value}-list`, - "dataSource": leftDataSource.value, - "filterOption": filterOption2, - "style": handleListStyle(listStyle, "left"), - "checkedKeys": sourceSelectedKeys.value, - "handleFilter": handleLeftFilter, - "handleClear": handleLeftClear, - "onItemSelect": onLeftItemSelect, - "onItemSelectAll": onLeftItemSelectAll, - "renderItem": renderItem, - "showSearch": showSearch, - "renderList": children, - "onScroll": handleLeftScroll, - "disabled": disabled, - "direction": direction.value === "rtl" ? "right" : "left", - "showSelectAll": showSelectAll, - "selectAllLabel": selectAllLabels[0] || slots.leftSelectAllLabel, - "pagination": mergedPagination - }, locale4), { - titleText: () => leftTitle, - footer - }), createVNode(operation_default, { - "key": "operation", - "class": `${prefixCls.value}-operation`, - "rightActive": rightActive, - "rightArrowText": operations[0], - "moveToRight": moveToRight, - "leftActive": leftActive, - "leftArrowText": operations[1], - "moveToLeft": moveToLeft, - "style": operationStyle, - "disabled": disabled, - "direction": direction.value, - "oneWay": oneWay - }, null), createVNode(list_default2, _objectSpread2({ - "key": "rightList", - "prefixCls": `${prefixCls.value}-list`, - "dataSource": rightDataSource.value, - "filterOption": filterOption2, - "style": handleListStyle(listStyle, "right"), - "checkedKeys": targetSelectedKeys.value, - "handleFilter": handleRightFilter, - "handleClear": handleRightClear, - "onItemSelect": onRightItemSelect, - "onItemSelectAll": onRightItemSelectAll, - "onItemRemove": onRightItemRemove, - "renderItem": renderItem, - "showSearch": showSearch, - "renderList": children, - "onScroll": handleRightScroll, - "disabled": disabled, - "direction": direction.value === "rtl" ? "left" : "right", - "showSelectAll": showSelectAll, - "selectAllLabel": selectAllLabels[1] || slots.rightSelectAllLabel, - "showRemove": oneWay, - "pagination": mergedPagination - }, locale4), { - titleText: () => rightTitle, - footer - })]); - }; - return () => wrapSSR(createVNode(LocaleReceiver_default2, { - "componentName": "Transfer", - "defaultLocale": en_US_default6.Transfer, - "children": renderTransfer - }, null)); - } -}); -var transfer_default = withInstall(Transfer); - -// node_modules/ant-design-vue/es/vc-tree-select/utils/valueUtil.js -function toArray9(value) { - if (Array.isArray(value)) { - return value; - } - return value !== void 0 ? [value] : []; -} -function fillFieldNames4(fieldNames) { - const { - label, - value, - children - } = fieldNames || {}; - const mergedValue = value || "value"; - return { - _title: label ? [label] : ["title", "label"], - value: mergedValue, - key: mergedValue, - children: children || "children" - }; -} -function isCheckDisabled2(node2) { - return node2.disabled || node2.disableCheckbox || node2.checkable === false; -} -function getAllKeys2(treeData, fieldNames) { - const keys2 = []; - function dig(list) { - list.forEach((item) => { - keys2.push(item[fieldNames.value]); - const children = item[fieldNames.children]; - if (children) { - dig(children); - } - }); - } - dig(treeData); - return keys2; -} -function isNil2(val) { - return val === null || val === void 0; -} - -// node_modules/ant-design-vue/es/vc-tree-select/TreeSelectContext.js -var TreeSelectContextPropsKey = Symbol("TreeSelectContextPropsKey"); -function useProvideSelectContext(props4) { - return provide(TreeSelectContextPropsKey, props4); -} -function useInjectSelectContext() { - return inject(TreeSelectContextPropsKey, {}); -} - -// node_modules/ant-design-vue/es/vc-tree-select/OptionList.js -var HIDDEN_STYLE3 = { - width: 0, - height: 0, - display: "flex", - overflow: "hidden", - opacity: 0, - border: 0, - padding: 0, - margin: 0 -}; -var OptionList_default3 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "OptionList", - inheritAttrs: false, - setup(_2, _ref) { - let { - slots, - expose - } = _ref; - const baseProps3 = useBaseProps(); - const legacyContext = useInjectLegacySelectContext(); - const context2 = useInjectSelectContext(); - const treeRef = ref(); - const memoTreeData = useMemo(() => context2.treeData, [() => baseProps3.open, () => context2.treeData], (next2) => next2[0]); - const mergedCheckedKeys = computed(() => { - const { - checkable, - halfCheckedKeys, - checkedKeys - } = legacyContext; - if (!checkable) { - return null; - } - return { - checked: checkedKeys, - halfChecked: halfCheckedKeys - }; - }); - watch(() => baseProps3.open, () => { - nextTick(() => { - var _a2; - if (baseProps3.open && !baseProps3.multiple && legacyContext.checkedKeys.length) { - (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo({ - key: legacyContext.checkedKeys[0] - }); - } - }); - }, { - immediate: true, - flush: "post" - }); - const lowerSearchValue = computed(() => String(baseProps3.searchValue).toLowerCase()); - const filterTreeNode = (treeNode) => { - if (!lowerSearchValue.value) { - return false; - } - return String(treeNode[legacyContext.treeNodeFilterProp]).toLowerCase().includes(lowerSearchValue.value); - }; - const expandedKeys = shallowRef(legacyContext.treeDefaultExpandedKeys); - const searchExpandedKeys = shallowRef(null); - watch(() => baseProps3.searchValue, () => { - if (baseProps3.searchValue) { - searchExpandedKeys.value = getAllKeys2(toRaw(context2.treeData), toRaw(context2.fieldNames)); - } - }, { - immediate: true - }); - const mergedExpandedKeys = computed(() => { - if (legacyContext.treeExpandedKeys) { - return legacyContext.treeExpandedKeys.slice(); - } - return baseProps3.searchValue ? searchExpandedKeys.value : expandedKeys.value; - }); - const onInternalExpand = (keys2) => { - var _a2; - expandedKeys.value = keys2; - searchExpandedKeys.value = keys2; - (_a2 = legacyContext.onTreeExpand) === null || _a2 === void 0 ? void 0 : _a2.call(legacyContext, keys2); - }; - const onListMouseDown = (event) => { - event.preventDefault(); - }; - const onInternalSelect = (_3, _ref2) => { - let { - node: node2 - } = _ref2; - var _a2, _b; - const { - checkable, - checkedKeys - } = legacyContext; - if (checkable && isCheckDisabled2(node2)) { - return; - } - (_a2 = context2.onSelect) === null || _a2 === void 0 ? void 0 : _a2.call(context2, node2.key, { - selected: !checkedKeys.includes(node2.key) - }); - if (!baseProps3.multiple) { - (_b = baseProps3.toggleOpen) === null || _b === void 0 ? void 0 : _b.call(baseProps3, false); - } - }; - const activeKey = ref(null); - const activeEntity = computed(() => legacyContext.keyEntities[activeKey.value]); - const setActiveKey = (key2) => { - activeKey.value = key2; - }; - expose({ - scrollTo: function() { - var _a2, _b; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return (_b = (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo) === null || _b === void 0 ? void 0 : _b.call(_a2, ...args); - }, - onKeydown: (event) => { - var _a2; - const { - which - } = event; - switch (which) { - case KeyCode_default.UP: - case KeyCode_default.DOWN: - case KeyCode_default.LEFT: - case KeyCode_default.RIGHT: - (_a2 = treeRef.value) === null || _a2 === void 0 ? void 0 : _a2.onKeydown(event); - break; - case KeyCode_default.ENTER: { - if (activeEntity.value) { - const { - selectable, - value - } = activeEntity.value.node || {}; - if (selectable !== false) { - onInternalSelect(null, { - node: { - key: activeKey.value - }, - selected: !legacyContext.checkedKeys.includes(value) - }); - } - } - break; - } - case KeyCode_default.ESC: { - baseProps3.toggleOpen(false); - } - } - }, - onKeyup: () => { - } - }); - return () => { - var _a2; - const { - prefixCls, - multiple, - searchValue, - open: open2, - notFoundContent = (_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots) - } = baseProps3; - const { - listHeight, - listItemHeight, - virtual, - dropdownMatchSelectWidth, - treeExpandAction - } = context2; - const { - checkable, - treeDefaultExpandAll, - treeIcon, - showTreeIcon, - switcherIcon, - treeLine, - loadData, - treeLoadedKeys, - treeMotion, - onTreeLoad, - checkedKeys - } = legacyContext; - if (memoTreeData.value.length === 0) { - return createVNode("div", { - "role": "listbox", - "class": `${prefixCls}-empty`, - "onMousedown": onListMouseDown - }, [notFoundContent]); - } - const treeProps3 = { - fieldNames: context2.fieldNames - }; - if (treeLoadedKeys) { - treeProps3.loadedKeys = treeLoadedKeys; - } - if (mergedExpandedKeys.value) { - treeProps3.expandedKeys = mergedExpandedKeys.value; - } - return createVNode("div", { - "onMousedown": onListMouseDown - }, [activeEntity.value && open2 && createVNode("span", { - "style": HIDDEN_STYLE3, - "aria-live": "assertive" - }, [activeEntity.value.node.value]), createVNode(Tree_default, _objectSpread2(_objectSpread2({ - "ref": treeRef, - "focusable": false, - "prefixCls": `${prefixCls}-tree`, - "treeData": memoTreeData.value, - "height": listHeight, - "itemHeight": listItemHeight, - "virtual": virtual !== false && dropdownMatchSelectWidth !== false, - "multiple": multiple, - "icon": treeIcon, - "showIcon": showTreeIcon, - "switcherIcon": switcherIcon, - "showLine": treeLine, - "loadData": searchValue ? null : loadData, - "motion": treeMotion, - "activeKey": activeKey.value, - "checkable": checkable, - "checkStrictly": true, - "checkedKeys": mergedCheckedKeys.value, - "selectedKeys": !checkable ? checkedKeys : [], - "defaultExpandAll": treeDefaultExpandAll - }, treeProps3), {}, { - "onActiveChange": setActiveKey, - "onSelect": onInternalSelect, - "onCheck": onInternalSelect, - "onExpand": onInternalExpand, - "onLoad": onTreeLoad, - "filterTreeNode": filterTreeNode, - "expandAction": treeExpandAction - }), _extends(_extends({}, slots), { - checkable: legacyContext.customSlots.treeCheckable - }))]); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree-select/utils/strategyUtil.js -var SHOW_ALL = "SHOW_ALL"; -var SHOW_PARENT2 = "SHOW_PARENT"; -var SHOW_CHILD2 = "SHOW_CHILD"; -function formatStrategyValues2(values2, strategy, keyEntities, fieldNames) { - const valueSet = new Set(values2); - if (strategy === SHOW_CHILD2) { - return values2.filter((key2) => { - const entity = keyEntities[key2]; - if (entity && entity.children && entity.children.some((_ref) => { - let { - node: node2 - } = _ref; - return valueSet.has(node2[fieldNames.value]); - }) && entity.children.every((_ref2) => { - let { - node: node2 - } = _ref2; - return isCheckDisabled2(node2) || valueSet.has(node2[fieldNames.value]); - })) { - return false; - } - return true; - }); - } - if (strategy === SHOW_PARENT2) { - return values2.filter((key2) => { - const entity = keyEntities[key2]; - const parent2 = entity ? entity.parent : null; - if (parent2 && !isCheckDisabled2(parent2.node) && valueSet.has(parent2.key)) { - return false; - } - return true; - }); - } - return values2; -} - -// node_modules/ant-design-vue/es/vc-tree-select/TreeNode.js -var TreeNode2 = () => null; -TreeNode2.inheritAttrs = false; -TreeNode2.displayName = "ATreeSelectNode"; -TreeNode2.isTreeSelectNode = true; -var TreeNode_default2 = TreeNode2; - -// node_modules/ant-design-vue/es/vc-tree-select/utils/legacyUtil.js -var __rest70 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function isTreeSelectNode(node2) { - return node2 && node2.type && node2.type.isTreeSelectNode; -} -function convertChildrenToData2(rootNodes) { - function dig() { - let treeNodes = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - return filterEmpty(treeNodes).map((treeNode) => { - var _a2, _b, _c; - if (!isTreeSelectNode(treeNode)) { - warning(!treeNode, "TreeSelect/TreeSelectNode can only accept TreeSelectNode as children."); - return null; - } - const slots = treeNode.children || {}; - const key2 = treeNode.key; - const props4 = {}; - for (const [k2, v2] of Object.entries(treeNode.props)) { - props4[camelize(k2)] = v2; - } - const { - isLeaf: isLeaf2, - checkable, - selectable, - disabled, - disableCheckbox - } = props4; - const newProps = { - isLeaf: isLeaf2 || isLeaf2 === "" || void 0, - checkable: checkable || checkable === "" || void 0, - selectable: selectable || selectable === "" || void 0, - disabled: disabled || disabled === "" || void 0, - disableCheckbox: disableCheckbox || disableCheckbox === "" || void 0 - }; - const slotsProps = _extends(_extends({}, props4), newProps); - const { - title = (_a2 = slots.title) === null || _a2 === void 0 ? void 0 : _a2.call(slots, slotsProps), - switcherIcon = (_b = slots.switcherIcon) === null || _b === void 0 ? void 0 : _b.call(slots, slotsProps) - } = props4, rest2 = __rest70(props4, ["title", "switcherIcon"]); - const children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots); - const dataNode = _extends(_extends(_extends({}, rest2), { - title, - switcherIcon, - key: key2, - isLeaf: isLeaf2 - }), newProps); - const parsedChildren = dig(children); - if (parsedChildren.length) { - dataNode.children = parsedChildren; - } - return dataNode; - }); - } - return dig(rootNodes); -} -function fillLegacyProps(dataNode) { - if (!dataNode) { - return dataNode; - } - const cloneNode = _extends({}, dataNode); - if (!("props" in cloneNode)) { - Object.defineProperty(cloneNode, "props", { - get() { - warning(false, "New `vc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access."); - return cloneNode; - } - }); - } - return cloneNode; -} -function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition, fieldNames) { - let triggerNode = null; - let nodeList = null; - function generateMap() { - function dig(list) { - let level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "0"; - let parentIncluded = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false; - return list.map((option, index3) => { - const pos = `${level}-${index3}`; - const value = option[fieldNames.value]; - const included = checkedValues.includes(value); - const children = dig(option[fieldNames.children] || [], pos, included); - const node2 = createVNode(TreeNode_default2, option, { - default: () => [children.map((child) => child.node)] - }); - if (triggerValue === value) { - triggerNode = node2; - } - if (included) { - const checkedNode = { - pos, - node: node2, - children - }; - if (!parentIncluded) { - nodeList.push(checkedNode); - } - return checkedNode; - } - return null; - }).filter((node2) => node2); - } - if (!nodeList) { - nodeList = []; - dig(treeData); - nodeList.sort((_ref, _ref2) => { - let { - node: { - props: { - value: val1 - } - } - } = _ref; - let { - node: { - props: { - value: val2 - } - } - } = _ref2; - const index1 = checkedValues.indexOf(val1); - const index22 = checkedValues.indexOf(val2); - return index1 - index22; - }); - } - } - Object.defineProperty(extra, "triggerNode", { - get() { - warning(false, "`triggerNode` is deprecated. Please consider decoupling data with node."); - generateMap(); - return triggerNode; - } - }); - Object.defineProperty(extra, "allCheckedNodes", { - get() { - warning(false, "`allCheckedNodes` is deprecated. Please consider decoupling data with node."); - generateMap(); - if (showPosition) { - return nodeList; - } - return nodeList.map((_ref3) => { - let { - node: node2 - } = _ref3; - return node2; - }); - } - }); -} - -// node_modules/ant-design-vue/es/vc-tree-select/hooks/useTreeData.js -function parseSimpleTreeData(treeData, _ref) { - let { - id, - pId, - rootPId - } = _ref; - const keyNodes = {}; - const rootNodeList = []; - const nodeList = treeData.map((node2) => { - const clone3 = _extends({}, node2); - const key2 = clone3[id]; - keyNodes[key2] = clone3; - clone3.key = clone3.key || key2; - return clone3; - }); - nodeList.forEach((node2) => { - const parentKey = node2[pId]; - const parent2 = keyNodes[parentKey]; - if (parent2) { - parent2.children = parent2.children || []; - parent2.children.push(node2); - } - if (parentKey === rootPId || !parent2 && rootPId === null) { - rootNodeList.push(node2); - } - }); - return rootNodeList; -} -function useTreeData(treeData, children, simpleMode) { - const mergedTreeData = shallowRef(); - watch([simpleMode, treeData, children], () => { - const simpleModeValue = simpleMode.value; - if (treeData.value) { - mergedTreeData.value = simpleMode.value ? parseSimpleTreeData(toRaw(treeData.value), _extends({ - id: "id", - pId: "pId", - rootPId: null - }, simpleModeValue !== true ? simpleModeValue : {})) : toRaw(treeData.value).slice(); - } else { - mergedTreeData.value = convertChildrenToData2(toRaw(children.value)); - } - }, { - immediate: true, - deep: true - }); - return mergedTreeData; -} - -// node_modules/ant-design-vue/es/vc-tree-select/hooks/useCache.js -var useCache_default2 = (values2) => { - const cacheRef = shallowRef({ - valueLabels: /* @__PURE__ */ new Map() - }); - const mergedValues = shallowRef(); - watch(values2, () => { - mergedValues.value = toRaw(values2.value); - }, { - immediate: true - }); - const newFilledValues = computed(() => { - const { - valueLabels - } = cacheRef.value; - const valueLabelsCache = /* @__PURE__ */ new Map(); - const filledValues = mergedValues.value.map((item) => { - var _a2; - const { - value - } = item; - const mergedLabel = (_a2 = item.label) !== null && _a2 !== void 0 ? _a2 : valueLabels.get(value); - valueLabelsCache.set(value, mergedLabel); - return _extends(_extends({}, item), { - label: mergedLabel - }); - }); - cacheRef.value.valueLabels = valueLabelsCache; - return filledValues; - }); - return [newFilledValues]; -}; - -// node_modules/ant-design-vue/es/vc-tree-select/hooks/useDataEntities.js -var useDataEntities_default = (treeData, fieldNames) => { - const valueEntities = shallowRef(/* @__PURE__ */ new Map()); - const keyEntities = shallowRef({}); - watchEffect(() => { - const fieldNamesValue = fieldNames.value; - const collection = convertDataToEntities(treeData.value, { - fieldNames: fieldNamesValue, - initWrapper: (wrapper) => _extends(_extends({}, wrapper), { - valueEntities: /* @__PURE__ */ new Map() - }), - processEntity: (entity, wrapper) => { - const val = entity.node[fieldNamesValue.value]; - if (true) { - const key2 = entity.node.key; - warning(!isNil2(val), "TreeNode `value` is invalidate: undefined"); - warning(!wrapper.valueEntities.has(val), `Same \`value\` exist in the tree: ${val}`); - warning(!key2 || String(key2) === String(val), `\`key\` or \`value\` with TreeNode must be the same or you can remove one of them. key: ${key2}, value: ${val}.`); - } - wrapper.valueEntities.set(val, entity); - } - }); - valueEntities.value = collection.valueEntities; - keyEntities.value = collection.keyEntities; - }); - return { - valueEntities, - keyEntities - }; -}; - -// node_modules/ant-design-vue/es/vc-tree-select/hooks/useCheckedKeys.js -var useCheckedKeys_default = (rawLabeledValues, rawHalfCheckedValues, treeConduction, keyEntities, maxLevel, levelEntities) => { - const newRawCheckedValues = shallowRef([]); - const newRawHalfCheckedValues = shallowRef([]); - watchEffect(() => { - let checkedKeys = rawLabeledValues.value.map((_ref) => { - let { - value - } = _ref; - return value; - }); - let halfCheckedKeys = rawHalfCheckedValues.value.map((_ref2) => { - let { - value - } = _ref2; - return value; - }); - const missingValues = checkedKeys.filter((key2) => !keyEntities.value[key2]); - if (treeConduction.value) { - ({ - checkedKeys, - halfCheckedKeys - } = conductCheck(checkedKeys, true, keyEntities.value, maxLevel.value, levelEntities.value)); - } - newRawCheckedValues.value = Array.from(/* @__PURE__ */ new Set([...missingValues, ...checkedKeys])); - newRawHalfCheckedValues.value = halfCheckedKeys; - }); - return [newRawCheckedValues, newRawHalfCheckedValues]; -}; - -// node_modules/ant-design-vue/es/vc-tree-select/hooks/useFilterTreeData.js -var useFilterTreeData_default = (treeData, searchValue, _ref) => { - let { - treeNodeFilterProp, - filterTreeNode, - fieldNames - } = _ref; - return computed(() => { - const { - children: fieldChildren - } = fieldNames.value; - const searchValueVal = searchValue.value; - const treeNodeFilterPropValue = treeNodeFilterProp === null || treeNodeFilterProp === void 0 ? void 0 : treeNodeFilterProp.value; - if (!searchValueVal || filterTreeNode.value === false) { - return treeData.value; - } - let filterOptionFunc; - if (typeof filterTreeNode.value === "function") { - filterOptionFunc = filterTreeNode.value; - } else { - const upperStr = searchValueVal.toUpperCase(); - filterOptionFunc = (_2, dataNode) => { - const value = dataNode[treeNodeFilterPropValue]; - return String(value).toUpperCase().includes(upperStr); - }; - } - function dig(list) { - let keepAll = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; - const res = []; - for (let index3 = 0, len = list.length; index3 < len; index3++) { - const dataNode = list[index3]; - const children = dataNode[fieldChildren]; - const match3 = keepAll || filterOptionFunc(searchValueVal, fillLegacyProps(dataNode)); - const childList = dig(children || [], match3); - if (match3 || childList.length) { - res.push(_extends(_extends({}, dataNode), { - [fieldChildren]: childList - })); - } - } - return res; - } - return dig(treeData.value); - }); -}; - -// node_modules/ant-design-vue/es/vc-tree-select/utils/warningPropsUtil.js -function warningProps2(props4) { - const { - searchPlaceholder, - treeCheckStrictly, - treeCheckable, - labelInValue, - value, - multiple - } = props4; - warning(!searchPlaceholder, "`searchPlaceholder` has been removed, please use `placeholder` instead"); - if (treeCheckStrictly && labelInValue === false) { - warning(false, "`treeCheckStrictly` will force set `labelInValue` to `true`."); - } - if (labelInValue || treeCheckStrictly) { - warning(toArray9(value).every((val) => val && typeof val === "object" && "value" in val), "Invalid prop `value` supplied to `TreeSelect`. You should use { label: string, value: string | number } or [{ label: string, value: string | number }] instead."); - } - if (treeCheckStrictly || multiple || treeCheckable) { - warning(!value || Array.isArray(value), "`value` should be an array when `TreeSelect` is checkable or multiple."); - } else { - warning(!Array.isArray(value), "`value` should not be array when `TreeSelect` is single mode."); - } -} -var warningPropsUtil_default2 = warningProps2; - -// node_modules/ant-design-vue/es/vc-tree-select/TreeSelect.js -function treeSelectProps() { - return _extends(_extends({}, omit_default(baseSelectPropsWithoutPrivate(), ["mode"])), { - prefixCls: String, - id: String, - value: { - type: [String, Number, Object, Array] - }, - defaultValue: { - type: [String, Number, Object, Array] - }, - onChange: { - type: Function - }, - searchValue: String, - /** @deprecated Use `searchValue` instead */ - inputValue: String, - onSearch: { - type: Function - }, - autoClearSearchValue: { - type: Boolean, - default: void 0 - }, - filterTreeNode: { - type: [Boolean, Function], - default: void 0 - }, - treeNodeFilterProp: String, - // >>> Select - onSelect: Function, - onDeselect: Function, - showCheckedStrategy: { - type: String - }, - treeNodeLabelProp: String, - fieldNames: { - type: Object - }, - // >>> Mode - multiple: { - type: Boolean, - default: void 0 - }, - treeCheckable: { - type: Boolean, - default: void 0 - }, - treeCheckStrictly: { - type: Boolean, - default: void 0 - }, - labelInValue: { - type: Boolean, - default: void 0 - }, - // >>> Data - treeData: { - type: Array - }, - treeDataSimpleMode: { - type: [Boolean, Object], - default: void 0 - }, - loadData: { - type: Function - }, - treeLoadedKeys: { - type: Array - }, - onTreeLoad: { - type: Function - }, - // >>> Expanded - treeDefaultExpandAll: { - type: Boolean, - default: void 0 - }, - treeExpandedKeys: { - type: Array - }, - treeDefaultExpandedKeys: { - type: Array - }, - onTreeExpand: { - type: Function - }, - // >>> Options - virtual: { - type: Boolean, - default: void 0 - }, - listHeight: Number, - listItemHeight: Number, - onDropdownVisibleChange: { - type: Function - }, - // >>> Tree - treeLine: { - type: [Boolean, Object], - default: void 0 - }, - treeIcon: vue_types_default.any, - showTreeIcon: { - type: Boolean, - default: void 0 - }, - switcherIcon: vue_types_default.any, - treeMotion: vue_types_default.any, - children: Array, - treeExpandAction: String, - showArrow: { - type: Boolean, - default: void 0 - }, - showSearch: { - type: Boolean, - default: void 0 - }, - open: { - type: Boolean, - default: void 0 - }, - defaultOpen: { - type: Boolean, - default: void 0 - }, - disabled: { - type: Boolean, - default: void 0 - }, - placeholder: vue_types_default.any, - maxTagPlaceholder: { - type: Function - }, - dropdownPopupAlign: vue_types_default.any, - customSlots: Object - }); -} -function isRawValue2(value) { - return !value || typeof value !== "object"; -} -var TreeSelect_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TreeSelect", - inheritAttrs: false, - props: initDefaultProps_default(treeSelectProps(), { - treeNodeFilterProp: "value", - autoClearSearchValue: true, - showCheckedStrategy: SHOW_CHILD2, - listHeight: 200, - listItemHeight: 20, - prefixCls: "vc-tree-select" - }), - setup(props4, _ref) { - let { - attrs, - expose, - slots - } = _ref; - const mergedId = useId(toRef(props4, "id")); - const treeConduction = computed(() => props4.treeCheckable && !props4.treeCheckStrictly); - const mergedCheckable = computed(() => props4.treeCheckable || props4.treeCheckStrictly); - const mergedLabelInValue = computed(() => props4.treeCheckStrictly || props4.labelInValue); - const mergedMultiple = computed(() => mergedCheckable.value || props4.multiple); - if (true) { - watchEffect(() => { - warningPropsUtil_default2(props4); - }); - } - const mergedFieldNames = computed(() => fillFieldNames4(props4.fieldNames)); - const [mergedSearchValue, setSearchValue] = useMergedState("", { - value: computed(() => props4.searchValue !== void 0 ? props4.searchValue : props4.inputValue), - postState: (search) => search || "" - }); - const onInternalSearch = (searchText) => { - var _a2; - setSearchValue(searchText); - (_a2 = props4.onSearch) === null || _a2 === void 0 ? void 0 : _a2.call(props4, searchText); - }; - const mergedTreeData = useTreeData(toRef(props4, "treeData"), toRef(props4, "children"), toRef(props4, "treeDataSimpleMode")); - const { - keyEntities, - valueEntities - } = useDataEntities_default(mergedTreeData, mergedFieldNames); - const splitRawValues = (newRawValues) => { - const missingRawValues = []; - const existRawValues = []; - newRawValues.forEach((val) => { - if (valueEntities.value.has(val)) { - existRawValues.push(val); - } else { - missingRawValues.push(val); - } - }); - return { - missingRawValues, - existRawValues - }; - }; - const filteredTreeData = useFilterTreeData_default(mergedTreeData, mergedSearchValue, { - fieldNames: mergedFieldNames, - treeNodeFilterProp: toRef(props4, "treeNodeFilterProp"), - filterTreeNode: toRef(props4, "filterTreeNode") - }); - const getLabel = (item) => { - if (item) { - if (props4.treeNodeLabelProp) { - return item[props4.treeNodeLabelProp]; - } - const { - _title: titleList - } = mergedFieldNames.value; - for (let i3 = 0; i3 < titleList.length; i3 += 1) { - const title = item[titleList[i3]]; - if (title !== void 0) { - return title; - } - } - } - }; - const toLabeledValues = (draftValues) => { - const values2 = toArray9(draftValues); - return values2.map((val) => { - if (isRawValue2(val)) { - return { - value: val - }; - } - return val; - }); - }; - const convert2LabelValues = (draftValues) => { - const values2 = toLabeledValues(draftValues); - return values2.map((item) => { - let { - label: rawLabel - } = item; - const { - value: rawValue, - halfChecked: rawHalfChecked - } = item; - let rawDisabled; - const entity = valueEntities.value.get(rawValue); - if (entity) { - rawLabel = rawLabel !== null && rawLabel !== void 0 ? rawLabel : getLabel(entity.node); - rawDisabled = entity.node.disabled; - } - return { - label: rawLabel, - value: rawValue, - halfChecked: rawHalfChecked, - disabled: rawDisabled - }; - }); - }; - const [internalValue, setInternalValue] = useMergedState(props4.defaultValue, { - value: toRef(props4, "value") - }); - const rawMixedLabeledValues = computed(() => toLabeledValues(internalValue.value)); - const rawLabeledValues = shallowRef([]); - const rawHalfLabeledValues = shallowRef([]); - watchEffect(() => { - const fullCheckValues = []; - const halfCheckValues = []; - rawMixedLabeledValues.value.forEach((item) => { - if (item.halfChecked) { - halfCheckValues.push(item); - } else { - fullCheckValues.push(item); - } - }); - rawLabeledValues.value = fullCheckValues; - rawHalfLabeledValues.value = halfCheckValues; - }); - const rawValues = computed(() => rawLabeledValues.value.map((item) => item.value)); - const { - maxLevel, - levelEntities - } = useMaxLevel(keyEntities); - const [rawCheckedValues, rawHalfCheckedValues] = useCheckedKeys_default(rawLabeledValues, rawHalfLabeledValues, treeConduction, keyEntities, maxLevel, levelEntities); - const displayValues = computed(() => { - const displayKeys = formatStrategyValues2(rawCheckedValues.value, props4.showCheckedStrategy, keyEntities.value, mergedFieldNames.value); - const values2 = displayKeys.map((key2) => { - var _a2, _b, _c; - return (_c = (_b = (_a2 = keyEntities.value[key2]) === null || _a2 === void 0 ? void 0 : _a2.node) === null || _b === void 0 ? void 0 : _b[mergedFieldNames.value.value]) !== null && _c !== void 0 ? _c : key2; - }); - const labeledValues = values2.map((val) => { - const targetItem = rawLabeledValues.value.find((item) => item.value === val); - return { - value: val, - label: targetItem === null || targetItem === void 0 ? void 0 : targetItem.label - }; - }); - const rawDisplayValues = convert2LabelValues(labeledValues); - const firstVal = rawDisplayValues[0]; - if (!mergedMultiple.value && firstVal && isNil2(firstVal.value) && isNil2(firstVal.label)) { - return []; - } - return rawDisplayValues.map((item) => { - var _a2; - return _extends(_extends({}, item), { - label: (_a2 = item.label) !== null && _a2 !== void 0 ? _a2 : item.value - }); - }); - }); - const [cachedDisplayValues] = useCache_default2(displayValues); - const triggerChange = (newRawValues, extra, source) => { - const labeledValues = convert2LabelValues(newRawValues); - setInternalValue(labeledValues); - if (props4.autoClearSearchValue) { - setSearchValue(""); - } - if (props4.onChange) { - let eventValues = newRawValues; - if (treeConduction.value) { - const formattedKeyList = formatStrategyValues2(newRawValues, props4.showCheckedStrategy, keyEntities.value, mergedFieldNames.value); - eventValues = formattedKeyList.map((key2) => { - const entity = valueEntities.value.get(key2); - return entity ? entity.node[mergedFieldNames.value.value] : key2; - }); - } - const { - triggerValue, - selected - } = extra || { - triggerValue: void 0, - selected: void 0 - }; - let returnRawValues = eventValues; - if (props4.treeCheckStrictly) { - const halfValues = rawHalfLabeledValues.value.filter((item) => !eventValues.includes(item.value)); - returnRawValues = [...returnRawValues, ...halfValues]; - } - const returnLabeledValues = convert2LabelValues(returnRawValues); - const additionalInfo = { - // [Legacy] Always return as array contains label & value - preValue: rawLabeledValues.value, - triggerValue - }; - let showPosition = true; - if (props4.treeCheckStrictly || source === "selection" && !selected) { - showPosition = false; - } - fillAdditionalInfo(additionalInfo, triggerValue, newRawValues, mergedTreeData.value, showPosition, mergedFieldNames.value); - if (mergedCheckable.value) { - additionalInfo.checked = selected; - } else { - additionalInfo.selected = selected; - } - const returnValues = mergedLabelInValue.value ? returnLabeledValues : returnLabeledValues.map((item) => item.value); - props4.onChange(mergedMultiple.value ? returnValues : returnValues[0], mergedLabelInValue.value ? null : returnLabeledValues.map((item) => item.label), additionalInfo); - } - }; - const onOptionSelect = (selectedKey, _ref2) => { - let { - selected, - source - } = _ref2; - var _a2, _b, _c; - const keyEntitiesValue = toRaw(keyEntities.value); - const valueEntitiesValue = toRaw(valueEntities.value); - const entity = keyEntitiesValue[selectedKey]; - const node2 = entity === null || entity === void 0 ? void 0 : entity.node; - const selectedValue = (_a2 = node2 === null || node2 === void 0 ? void 0 : node2[mergedFieldNames.value.value]) !== null && _a2 !== void 0 ? _a2 : selectedKey; - if (!mergedMultiple.value) { - triggerChange([selectedValue], { - selected: true, - triggerValue: selectedValue - }, "option"); - } else { - let newRawValues = selected ? [...rawValues.value, selectedValue] : rawCheckedValues.value.filter((v2) => v2 !== selectedValue); - if (treeConduction.value) { - const { - missingRawValues, - existRawValues - } = splitRawValues(newRawValues); - const keyList = existRawValues.map((val) => valueEntitiesValue.get(val).key); - let checkedKeys; - if (selected) { - ({ - checkedKeys - } = conductCheck(keyList, true, keyEntitiesValue, maxLevel.value, levelEntities.value)); - } else { - ({ - checkedKeys - } = conductCheck(keyList, { - checked: false, - halfCheckedKeys: rawHalfCheckedValues.value - }, keyEntitiesValue, maxLevel.value, levelEntities.value)); - } - newRawValues = [...missingRawValues, ...checkedKeys.map((key2) => keyEntitiesValue[key2].node[mergedFieldNames.value.value])]; - } - triggerChange(newRawValues, { - selected, - triggerValue: selectedValue - }, source || "option"); - } - if (selected || !mergedMultiple.value) { - (_b = props4.onSelect) === null || _b === void 0 ? void 0 : _b.call(props4, selectedValue, fillLegacyProps(node2)); - } else { - (_c = props4.onDeselect) === null || _c === void 0 ? void 0 : _c.call(props4, selectedValue, fillLegacyProps(node2)); - } - }; - const onInternalDropdownVisibleChange = (open2) => { - if (props4.onDropdownVisibleChange) { - const legacyParam = {}; - Object.defineProperty(legacyParam, "documentClickClose", { - get() { - warning(false, "Second param of `onDropdownVisibleChange` has been removed."); - return false; - } - }); - props4.onDropdownVisibleChange(open2, legacyParam); - } - }; - const onDisplayValuesChange = (newValues, info) => { - const newRawValues = newValues.map((item) => item.value); - if (info.type === "clear") { - triggerChange(newRawValues, {}, "selection"); - return; - } - if (info.values.length) { - onOptionSelect(info.values[0].value, { - selected: false, - source: "selection" - }); - } - }; - const { - treeNodeFilterProp, - // Data - loadData, - treeLoadedKeys, - onTreeLoad, - // Expanded - treeDefaultExpandAll, - treeExpandedKeys, - treeDefaultExpandedKeys, - onTreeExpand, - // Options - virtual, - listHeight, - listItemHeight, - // Tree - treeLine, - treeIcon, - showTreeIcon, - switcherIcon, - treeMotion, - customSlots, - dropdownMatchSelectWidth, - treeExpandAction - } = toRefs(props4); - useProvideLegacySelectContext(toReactive({ - checkable: mergedCheckable, - loadData, - treeLoadedKeys, - onTreeLoad, - checkedKeys: rawCheckedValues, - halfCheckedKeys: rawHalfCheckedValues, - treeDefaultExpandAll, - treeExpandedKeys, - treeDefaultExpandedKeys, - onTreeExpand, - treeIcon, - treeMotion, - showTreeIcon, - switcherIcon, - treeLine, - treeNodeFilterProp, - keyEntities, - customSlots - })); - useProvideSelectContext(toReactive({ - virtual, - listHeight, - listItemHeight, - treeData: filteredTreeData, - fieldNames: mergedFieldNames, - onSelect: onOptionSelect, - dropdownMatchSelectWidth, - treeExpandAction - })); - const selectRef = ref(); - expose({ - focus() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur() { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - }, - scrollTo(arg) { - var _a2; - (_a2 = selectRef.value) === null || _a2 === void 0 ? void 0 : _a2.scrollTo(arg); - } - }); - return () => { - var _a2; - const restProps = omit_default(props4, [ - "id", - "prefixCls", - "customSlots", - // Value - "value", - "defaultValue", - "onChange", - "onSelect", - "onDeselect", - // Search - "searchValue", - "inputValue", - "onSearch", - "autoClearSearchValue", - "filterTreeNode", - "treeNodeFilterProp", - // Selector - "showCheckedStrategy", - "treeNodeLabelProp", - // Mode - "multiple", - "treeCheckable", - "treeCheckStrictly", - "labelInValue", - // FieldNames - "fieldNames", - // Data - "treeDataSimpleMode", - "treeData", - "children", - "loadData", - "treeLoadedKeys", - "onTreeLoad", - // Expanded - "treeDefaultExpandAll", - "treeExpandedKeys", - "treeDefaultExpandedKeys", - "onTreeExpand", - // Options - "virtual", - "listHeight", - "listItemHeight", - "onDropdownVisibleChange", - // Tree - "treeLine", - "treeIcon", - "showTreeIcon", - "switcherIcon", - "treeMotion" - ]); - return createVNode(BaseSelect_default, _objectSpread2(_objectSpread2(_objectSpread2({ - "ref": selectRef - }, attrs), restProps), {}, { - "id": mergedId, - "prefixCls": props4.prefixCls, - "mode": mergedMultiple.value ? "multiple" : void 0, - "displayValues": cachedDisplayValues.value, - "onDisplayValuesChange": onDisplayValuesChange, - "searchValue": mergedSearchValue.value, - "onSearch": onInternalSearch, - "OptionList": OptionList_default3, - "emptyOptions": !mergedTreeData.value.length, - "onDropdownVisibleChange": onInternalDropdownVisibleChange, - "tagRender": props4.tagRender || slots.tagRender, - "dropdownMatchSelectWidth": (_a2 = props4.dropdownMatchSelectWidth) !== null && _a2 !== void 0 ? _a2 : true - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-tree-select/index.js -var vc_tree_select_default = TreeSelect_default; - -// node_modules/ant-design-vue/es/tree-select/style/index.js -var genBaseStyle17 = (token2) => { - const { - componentCls, - treePrefixCls, - colorBgElevated - } = token2; - const treeCls = `.${treePrefixCls}`; - return [ - // ====================================================== - // == Dropdown == - // ====================================================== - { - [`${componentCls}-dropdown`]: [ - { - padding: `${token2.paddingXS}px ${token2.paddingXS / 2}px` - }, - // ====================== Tree ====================== - genTreeStyle(treePrefixCls, merge(token2, { - colorBgContainer: colorBgElevated - })), - { - [treeCls]: { - borderRadius: 0, - "&-list-holder-inner": { - alignItems: "stretch", - [`${treeCls}-treenode`]: { - [`${treeCls}-node-content-wrapper`]: { - flex: "auto" - } - } - } - } - }, - // ==================== Checkbox ==================== - getStyle2(`${treePrefixCls}-checkbox`, token2), - // ====================== RTL ======================= - { - "&-rtl": { - direction: "rtl", - [`${treeCls}-switcher${treeCls}-switcher_close`]: { - [`${treeCls}-switcher-icon svg`]: { - transform: "rotate(90deg)" - } - } - } - } - ] - } - ]; -}; -function useTreeSelectStyle(prefixCls, treePrefixCls) { - return genComponentStyleHook("TreeSelect", (token2) => { - const treeSelectToken = merge(token2, { - treePrefixCls: treePrefixCls.value - }); - return [genBaseStyle17(treeSelectToken)]; - })(prefixCls); -} - -// node_modules/ant-design-vue/es/tree-select/index.js -var getTransitionName3 = (rootPrefixCls, motion, transitionName2) => { - if (transitionName2 !== void 0) { - return transitionName2; - } - return `${rootPrefixCls}-${motion}`; -}; -function treeSelectProps2() { - return _extends(_extends({}, omit_default(treeSelectProps(), ["showTreeIcon", "treeMotion", "inputIcon", "getInputElement", "treeLine", "customSlots"])), { - suffixIcon: vue_types_default.any, - size: stringType(), - bordered: booleanType(), - treeLine: someType([Boolean, Object]), - replaceFields: objectType(), - placement: stringType(), - status: stringType(), - popupClassName: String, - /** @deprecated Please use `popupClassName` instead */ - dropdownClassName: String, - "onUpdate:value": functionType(), - "onUpdate:treeExpandedKeys": functionType(), - "onUpdate:searchValue": functionType() - }); -} -var TreeSelect = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATreeSelect", - inheritAttrs: false, - props: initDefaultProps_default(treeSelectProps2(), { - choiceTransitionName: "", - listHeight: 256, - treeIcon: false, - listItemHeight: 26, - bordered: true - }), - slots: Object, - setup(props4, _ref) { - let { - attrs, - slots, - expose, - emit - } = _ref; - warning(!(props4.treeData === void 0 && slots.default), "`children` of TreeSelect is deprecated. Please use `treeData` instead."); - devWarning_default(props4.multiple !== false || !props4.treeCheckable, "TreeSelect", "`multiple` will always be `true` when `treeCheckable` is true"); - devWarning_default(props4.replaceFields === void 0, "TreeSelect", "`replaceFields` is deprecated, please use fieldNames instead"); - devWarning_default(!props4.dropdownClassName, "TreeSelect", "`dropdownClassName` is deprecated. Please use `popupClassName` instead."); - const formItemContext = useInjectFormItemContext(); - const formItemInputContext = FormItemInputContext.useInject(); - const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props4.status)); - const { - prefixCls, - renderEmpty: renderEmpty2, - direction, - virtual, - dropdownMatchSelectWidth, - size: contextSize, - getPopupContainer, - getPrefixCls, - disabled - } = useConfigInject_default("select", props4); - const { - compactSize, - compactItemClassnames - } = useCompactItemContext(prefixCls, direction); - const mergedSize = computed(() => compactSize.value || contextSize.value); - const contextDisabled = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : contextDisabled.value; - }); - const rootPrefixCls = computed(() => getPrefixCls()); - const placement = computed(() => { - if (props4.placement !== void 0) { - return props4.placement; - } - return direction.value === "rtl" ? "bottomRight" : "bottomLeft"; - }); - const transitionName2 = computed(() => getTransitionName3(rootPrefixCls.value, getTransitionDirection(placement.value), props4.transitionName)); - const choiceTransitionName = computed(() => getTransitionName3(rootPrefixCls.value, "", props4.choiceTransitionName)); - const treePrefixCls = computed(() => getPrefixCls("select-tree", props4.prefixCls)); - const treeSelectPrefixCls = computed(() => getPrefixCls("tree-select", props4.prefixCls)); - const [wrapSelectSSR, hashId] = style_default5(prefixCls); - const [wrapTreeSelectSSR] = useTreeSelectStyle(treeSelectPrefixCls, treePrefixCls); - const mergedDropdownClassName = computed(() => classNames_default(props4.popupClassName || props4.dropdownClassName, `${treeSelectPrefixCls.value}-dropdown`, { - [`${treeSelectPrefixCls.value}-dropdown-rtl`]: direction.value === "rtl" - }, hashId.value)); - const isMultiple2 = computed(() => !!(props4.treeCheckable || props4.multiple)); - const mergedShowArrow = computed(() => props4.showArrow !== void 0 ? props4.showArrow : props4.loading || !isMultiple2.value); - const treeSelectRef = ref(); - expose({ - focus() { - var _a2, _b; - (_b = (_a2 = treeSelectRef.value).focus) === null || _b === void 0 ? void 0 : _b.call(_a2); - }, - blur() { - var _a2, _b; - (_b = (_a2 = treeSelectRef.value).blur) === null || _b === void 0 ? void 0 : _b.call(_a2); - } - }); - const handleChange = function() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - emit("update:value", args[0]); - emit("change", ...args); - formItemContext.onFieldChange(); - }; - const handleTreeExpand = (keys2) => { - emit("update:treeExpandedKeys", keys2); - emit("treeExpand", keys2); - }; - const handleSearch = (value) => { - emit("update:searchValue", value); - emit("search", value); - }; - const handleBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - return () => { - var _a2, _b; - const { - notFoundContent = (_a2 = slots.notFoundContent) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - prefixCls: customizePrefixCls, - bordered, - listHeight, - listItemHeight, - multiple, - treeIcon, - treeLine, - showArrow, - switcherIcon = (_b = slots.switcherIcon) === null || _b === void 0 ? void 0 : _b.call(slots), - fieldNames = props4.replaceFields, - id = formItemContext.id.value - } = props4; - const { - isFormItemInput, - hasFeedback, - feedbackIcon - } = formItemInputContext; - const { - suffixIcon, - removeIcon, - clearIcon - } = getIcons(_extends(_extends({}, props4), { - multiple: isMultiple2.value, - showArrow: mergedShowArrow.value, - hasFeedback, - feedbackIcon, - prefixCls: prefixCls.value - }), slots); - let mergedNotFound; - if (notFoundContent !== void 0) { - mergedNotFound = notFoundContent; - } else { - mergedNotFound = renderEmpty2("Select"); - } - const selectProps3 = omit_default(props4, ["suffixIcon", "itemIcon", "removeIcon", "clearIcon", "switcherIcon", "bordered", "status", "onUpdate:value", "onUpdate:treeExpandedKeys", "onUpdate:searchValue"]); - const mergedClassName = classNames_default(!customizePrefixCls && treeSelectPrefixCls.value, { - [`${prefixCls.value}-lg`]: mergedSize.value === "large", - [`${prefixCls.value}-sm`]: mergedSize.value === "small", - [`${prefixCls.value}-rtl`]: direction.value === "rtl", - [`${prefixCls.value}-borderless`]: !bordered, - [`${prefixCls.value}-in-form-item`]: isFormItemInput - }, getStatusClassNames(prefixCls.value, mergedStatus.value, hasFeedback), compactItemClassnames.value, attrs.class, hashId.value); - const otherProps = {}; - if (props4.treeData === void 0 && slots.default) { - otherProps.children = flattenChildren(slots.default()); - } - return wrapSelectSSR(wrapTreeSelectSSR(createVNode(vc_tree_select_default, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, attrs), selectProps3), {}, { - "disabled": mergedDisabled.value, - "virtual": virtual.value, - "dropdownMatchSelectWidth": dropdownMatchSelectWidth.value, - "id": id, - "fieldNames": fieldNames, - "ref": treeSelectRef, - "prefixCls": prefixCls.value, - "class": mergedClassName, - "listHeight": listHeight, - "listItemHeight": listItemHeight, - "treeLine": !!treeLine, - "inputIcon": suffixIcon, - "multiple": multiple, - "removeIcon": removeIcon, - "clearIcon": clearIcon, - "switcherIcon": (nodeProps) => renderSwitcherIcon(treePrefixCls.value, switcherIcon, nodeProps, slots.leafIcon, treeLine), - "showTreeIcon": treeIcon, - "notFoundContent": mergedNotFound, - "getPopupContainer": getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.value, - "treeMotion": null, - "dropdownClassName": mergedDropdownClassName.value, - "choiceTransitionName": choiceTransitionName.value, - "onChange": handleChange, - "onBlur": handleBlur, - "onSearch": handleSearch, - "onTreeExpand": handleTreeExpand - }, otherProps), {}, { - "transitionName": transitionName2.value, - "customSlots": _extends(_extends({}, slots), { - treeCheckable: () => createVNode("span", { - "class": `${prefixCls.value}-tree-checkbox-inner` - }, null) - }), - "maxTagPlaceholder": props4.maxTagPlaceholder || slots.maxTagPlaceholder, - "placement": placement.value, - "showArrow": hasFeedback || showArrow - }), _extends(_extends({}, slots), { - treeCheckable: () => createVNode("span", { - "class": `${prefixCls.value}-tree-checkbox-inner` - }, null) - })))); - }; - } -}); -var TreeSelectNode = TreeNode_default2; -var tree_select_default = _extends(TreeSelect, { - TreeNode: TreeNode_default2, - SHOW_ALL, - SHOW_PARENT: SHOW_PARENT2, - SHOW_CHILD: SHOW_CHILD2, - install: (app) => { - app.component(TreeSelect.name, TreeSelect); - app.component(TreeSelectNode.displayName, TreeSelectNode); - return app; - } -}); - -// node_modules/ant-design-vue/es/time-picker/time-picker.js -var timePickerProps = () => ({ - format: String, - showNow: booleanType(), - showHour: booleanType(), - showMinute: booleanType(), - showSecond: booleanType(), - use12Hours: booleanType(), - hourStep: Number, - minuteStep: Number, - secondStep: Number, - hideDisabledOptions: booleanType(), - popupClassName: String, - status: stringType() -}); -function createTimePicker(generateConfig2) { - const DatePicker2 = generatePicker_default(generateConfig2, _extends(_extends({}, timePickerProps()), { - order: { - type: Boolean, - default: true - } - })); - const { - TimePicker: InternalTimePicker, - RangePicker: InternalRangePicker - } = DatePicker2; - const TimePicker3 = defineComponent({ - name: "ATimePicker", - inheritAttrs: false, - props: _extends(_extends(_extends(_extends({}, commonProps()), datePickerProps()), timePickerProps()), { - addon: { - type: Function - } - }), - slots: Object, - setup(p, _ref) { - let { - slots, - expose, - emit, - attrs - } = _ref; - const props4 = p; - const formItemContext = useInjectFormItemContext(); - devWarning_default(!(slots.addon || props4.addon), "TimePicker", "`addon` is deprecated. Please use `v-slot:renderExtraFooter` instead."); - const pickerRef = ref(); - expose({ - focus: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const onChange = (value, dateString) => { - emit("update:value", value); - emit("change", value, dateString); - formItemContext.onFieldChange(); - }; - const onOpenChange = (open2) => { - emit("update:open", open2); - emit("openChange", open2); - }; - const onFocus = (e3) => { - emit("focus", e3); - }; - const onBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const onOk = (value) => { - emit("ok", value); - }; - return () => { - const { - id = formItemContext.id.value - } = props4; - return createVNode(InternalTimePicker, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), omit_default(props4, ["onUpdate:value", "onUpdate:open"])), {}, { - "id": id, - "dropdownClassName": props4.popupClassName, - "mode": void 0, - "ref": pickerRef, - "renderExtraFooter": props4.addon || slots.addon || props4.renderExtraFooter || slots.renderExtraFooter, - "onChange": onChange, - "onOpenChange": onOpenChange, - "onFocus": onFocus, - "onBlur": onBlur, - "onOk": onOk - }), slots); - }; - } - }); - const TimeRangePicker2 = defineComponent({ - name: "ATimeRangePicker", - inheritAttrs: false, - props: _extends(_extends(_extends(_extends({}, commonProps()), rangePickerProps()), timePickerProps()), { - order: { - type: Boolean, - default: true - } - }), - slots: Object, - setup(p, _ref2) { - let { - slots, - expose, - emit, - attrs - } = _ref2; - const props4 = p; - const pickerRef = ref(); - const formItemContext = useInjectFormItemContext(); - expose({ - focus: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - }, - blur: () => { - var _a2; - (_a2 = pickerRef.value) === null || _a2 === void 0 ? void 0 : _a2.blur(); - } - }); - const onChange = (values2, dateStrings) => { - emit("update:value", values2); - emit("change", values2, dateStrings); - formItemContext.onFieldChange(); - }; - const onOpenChange = (open2) => { - emit("update:open", open2); - emit("openChange", open2); - }; - const onFocus = (e3) => { - emit("focus", e3); - }; - const onBlur = (e3) => { - emit("blur", e3); - formItemContext.onFieldBlur(); - }; - const onPanelChange = (values2, modes) => { - emit("panelChange", values2, modes); - }; - const onOk = (values2) => { - emit("ok", values2); - }; - const onCalendarChange = (values2, dateStrings, info) => { - emit("calendarChange", values2, dateStrings, info); - }; - return () => { - const { - id = formItemContext.id.value - } = props4; - return createVNode(InternalRangePicker, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), omit_default(props4, ["onUpdate:open", "onUpdate:value"])), {}, { - "id": id, - "dropdownClassName": props4.popupClassName, - "picker": "time", - "mode": void 0, - "ref": pickerRef, - "onChange": onChange, - "onOpenChange": onOpenChange, - "onFocus": onFocus, - "onBlur": onBlur, - "onPanelChange": onPanelChange, - "onOk": onOk, - "onCalendarChange": onCalendarChange - }), slots); - }; - } - }); - return { - TimePicker: TimePicker3, - TimeRangePicker: TimeRangePicker2 - }; -} -var time_picker_default = createTimePicker; - -// node_modules/ant-design-vue/es/time-picker/dayjs.js -var { - TimePicker: TimePicker2, - TimeRangePicker -} = time_picker_default(dayjs_default); -var dayjs_default4 = _extends(TimePicker2, { - TimePicker: TimePicker2, - TimeRangePicker, - install: (app) => { - app.component(TimePicker2.name, TimePicker2); - app.component(TimeRangePicker.name, TimeRangePicker); - return app; - } -}); - -// node_modules/ant-design-vue/es/time-picker/index.js -var time_picker_default2 = dayjs_default4; - -// node_modules/ant-design-vue/es/timeline/TimelineItem.js -var timelineItemProps = () => ({ - prefixCls: String, - color: String, - dot: vue_types_default.any, - pending: booleanType(), - position: vue_types_default.oneOf(tuple("left", "right", "")).def(""), - label: vue_types_default.any -}); -var TimelineItem_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATimelineItem", - props: initDefaultProps_default(timelineItemProps(), { - color: "blue", - pending: false - }), - slots: Object, - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("timeline", props4); - const itemClassName = computed(() => ({ - [`${prefixCls.value}-item`]: true, - [`${prefixCls.value}-item-pending`]: props4.pending - })); - const customColor = computed(() => /blue|red|green|gray/.test(props4.color || "") ? void 0 : props4.color || "blue"); - const dotClassName = computed(() => ({ - [`${prefixCls.value}-item-head`]: true, - [`${prefixCls.value}-item-head-${props4.color || "blue"}`]: !customColor.value - })); - return () => { - var _a2, _b, _c; - const { - label = (_a2 = slots.label) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - dot = (_b = slots.dot) === null || _b === void 0 ? void 0 : _b.call(slots) - } = props4; - return createVNode("li", { - "class": itemClassName.value - }, [label && createVNode("div", { - "class": `${prefixCls.value}-item-label` - }, [label]), createVNode("div", { - "class": `${prefixCls.value}-item-tail` - }, null), createVNode("div", { - "class": [dotClassName.value, !!dot && `${prefixCls.value}-item-head-custom`], - "style": { - borderColor: customColor.value, - color: customColor.value - } - }, [dot]), createVNode("div", { - "class": `${prefixCls.value}-item-content` - }, [(_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots)])]); - }; - } -}); - -// node_modules/ant-design-vue/es/timeline/style/index.js -var genTimelineStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - margin: 0, - padding: 0, - listStyle: "none", - [`${componentCls}-item`]: { - position: "relative", - margin: 0, - paddingBottom: token2.timeLineItemPaddingBottom, - fontSize: token2.fontSize, - listStyle: "none", - "&-tail": { - position: "absolute", - insetBlockStart: token2.timeLineItemHeadSize, - insetInlineStart: (token2.timeLineItemHeadSize - token2.timeLineItemTailWidth) / 2, - height: `calc(100% - ${token2.timeLineItemHeadSize}px)`, - borderInlineStart: `${token2.timeLineItemTailWidth}px ${token2.lineType} ${token2.colorSplit}` - }, - "&-pending": { - [`${componentCls}-item-head`]: { - fontSize: token2.fontSizeSM, - backgroundColor: "transparent" - }, - [`${componentCls}-item-tail`]: { - display: "none" - } - }, - "&-head": { - position: "absolute", - width: token2.timeLineItemHeadSize, - height: token2.timeLineItemHeadSize, - backgroundColor: token2.colorBgContainer, - border: `${token2.timeLineHeadBorderWidth}px ${token2.lineType} transparent`, - borderRadius: "50%", - "&-blue": { - color: token2.colorPrimary, - borderColor: token2.colorPrimary - }, - "&-red": { - color: token2.colorError, - borderColor: token2.colorError - }, - "&-green": { - color: token2.colorSuccess, - borderColor: token2.colorSuccess - }, - "&-gray": { - color: token2.colorTextDisabled, - borderColor: token2.colorTextDisabled - } - }, - "&-head-custom": { - position: "absolute", - insetBlockStart: token2.timeLineItemHeadSize / 2, - insetInlineStart: token2.timeLineItemHeadSize / 2, - width: "auto", - height: "auto", - marginBlockStart: 0, - paddingBlock: token2.timeLineItemCustomHeadPaddingVertical, - lineHeight: 1, - textAlign: "center", - border: 0, - borderRadius: 0, - transform: `translate(-50%, -50%)` - }, - "&-content": { - position: "relative", - insetBlockStart: -(token2.fontSize * token2.lineHeight - token2.fontSize) + token2.lineWidth, - marginInlineStart: token2.margin + token2.timeLineItemHeadSize, - marginInlineEnd: 0, - marginBlockStart: 0, - marginBlockEnd: 0, - wordBreak: "break-word" - }, - "&-last": { - [`> ${componentCls}-item-tail`]: { - display: "none" - }, - [`> ${componentCls}-item-content`]: { - minHeight: token2.controlHeightLG * 1.2 - } - } - }, - [`&${componentCls}-alternate, - &${componentCls}-right, - &${componentCls}-label`]: { - [`${componentCls}-item`]: { - "&-tail, &-head, &-head-custom": { - insetInlineStart: "50%" - }, - "&-head": { - marginInlineStart: `-${token2.marginXXS}px`, - "&-custom": { - marginInlineStart: token2.timeLineItemTailWidth / 2 - } - }, - "&-left": { - [`${componentCls}-item-content`]: { - insetInlineStart: `calc(50% - ${token2.marginXXS}px)`, - width: `calc(50% - ${token2.marginSM}px)`, - textAlign: "start" - } - }, - "&-right": { - [`${componentCls}-item-content`]: { - width: `calc(50% - ${token2.marginSM}px)`, - margin: 0, - textAlign: "end" - } - } - } - }, - [`&${componentCls}-right`]: { - [`${componentCls}-item-right`]: { - [`${componentCls}-item-tail, - ${componentCls}-item-head, - ${componentCls}-item-head-custom`]: { - insetInlineStart: `calc(100% - ${(token2.timeLineItemHeadSize + token2.timeLineItemTailWidth) / 2}px)` - }, - [`${componentCls}-item-content`]: { - width: `calc(100% - ${token2.timeLineItemHeadSize + token2.marginXS}px)` - } - } - }, - [`&${componentCls}-pending - ${componentCls}-item-last - ${componentCls}-item-tail`]: { - display: "block", - height: `calc(100% - ${token2.margin}px)`, - borderInlineStart: `${token2.timeLineItemTailWidth}px dotted ${token2.colorSplit}` - }, - [`&${componentCls}-reverse - ${componentCls}-item-last - ${componentCls}-item-tail`]: { - display: "none" - }, - [`&${componentCls}-reverse ${componentCls}-item-pending`]: { - [`${componentCls}-item-tail`]: { - insetBlockStart: token2.margin, - display: "block", - height: `calc(100% - ${token2.margin}px)`, - borderInlineStart: `${token2.timeLineItemTailWidth}px dotted ${token2.colorSplit}` - }, - [`${componentCls}-item-content`]: { - minHeight: token2.controlHeightLG * 1.2 - } - }, - [`&${componentCls}-label`]: { - [`${componentCls}-item-label`]: { - position: "absolute", - insetBlockStart: -(token2.fontSize * token2.lineHeight - token2.fontSize) + token2.timeLineItemTailWidth, - width: `calc(50% - ${token2.marginSM}px)`, - textAlign: "end" - }, - [`${componentCls}-item-right`]: { - [`${componentCls}-item-label`]: { - insetInlineStart: `calc(50% + ${token2.marginSM}px)`, - width: `calc(50% - ${token2.marginSM}px)`, - textAlign: "start" - } - } - }, - // ====================== RTL ======================= - "&-rtl": { - direction: "rtl", - [`${componentCls}-item-head-custom`]: { - transform: `translate(50%, -50%)` - } - } - }) - }; -}; -var style_default57 = genComponentStyleHook("Timeline", (token2) => { - const timeLineToken = merge(token2, { - timeLineItemPaddingBottom: token2.padding * 1.25, - timeLineItemHeadSize: 10, - timeLineItemCustomHeadPaddingVertical: token2.paddingXXS, - timeLinePaddingInlineEnd: 2, - timeLineItemTailWidth: token2.lineWidthBold, - timeLineHeadBorderWidth: token2.wireframe ? token2.lineWidthBold : token2.lineWidth * 3 - }); - return [genTimelineStyle(timeLineToken)]; -}); - -// node_modules/ant-design-vue/es/timeline/Timeline.js -var timelineProps = () => ({ - prefixCls: String, - /** 指定最后一个幽灵节点是否存在或内容 */ - pending: vue_types_default.any, - pendingDot: vue_types_default.any, - reverse: booleanType(), - mode: vue_types_default.oneOf(tuple("left", "alternate", "right", "")) -}); -var Timeline_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ATimeline", - inheritAttrs: false, - props: initDefaultProps_default(timelineProps(), { - reverse: false, - mode: "" - }), - slots: Object, - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("timeline", props4); - const [wrapSSR, hashId] = style_default57(prefixCls); - const getPositionCls = (ele, idx) => { - const eleProps = ele.props || {}; - if (props4.mode === "alternate") { - if (eleProps.position === "right") return `${prefixCls.value}-item-right`; - if (eleProps.position === "left") return `${prefixCls.value}-item-left`; - return idx % 2 === 0 ? `${prefixCls.value}-item-left` : `${prefixCls.value}-item-right`; - } - if (props4.mode === "left") return `${prefixCls.value}-item-left`; - if (props4.mode === "right") return `${prefixCls.value}-item-right`; - if (eleProps.position === "right") return `${prefixCls.value}-item-right`; - return ""; - }; - return () => { - var _a2, _b, _c; - const { - pending = (_a2 = slots.pending) === null || _a2 === void 0 ? void 0 : _a2.call(slots), - pendingDot = (_b = slots.pendingDot) === null || _b === void 0 ? void 0 : _b.call(slots), - reverse: reverse2, - mode - } = props4; - const pendingNode = typeof pending === "boolean" ? null : pending; - const children = filterEmpty((_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots)); - const pendingItem = pending ? createVNode(TimelineItem_default, { - "pending": !!pending, - "dot": pendingDot || createVNode(LoadingOutlined_default, null, null) - }, { - default: () => [pendingNode] - }) : null; - if (pendingItem) { - children.push(pendingItem); - } - const timeLineItems = reverse2 ? children.reverse() : children; - const itemsCount = timeLineItems.length; - const lastCls = `${prefixCls.value}-item-last`; - const items = timeLineItems.map((ele, idx) => { - const pendingClass = idx === itemsCount - 2 ? lastCls : ""; - const readyClass = idx === itemsCount - 1 ? lastCls : ""; - return cloneVNode(ele, { - class: classNames_default([!reverse2 && !!pending ? pendingClass : readyClass, getPositionCls(ele, idx)]) - }); - }); - const hasLabelItem = timeLineItems.some((item) => { - var _a3, _b2; - return !!(((_a3 = item.props) === null || _a3 === void 0 ? void 0 : _a3.label) || ((_b2 = item.children) === null || _b2 === void 0 ? void 0 : _b2.label)); - }); - const classString = classNames_default(prefixCls.value, { - [`${prefixCls.value}-pending`]: !!pending, - [`${prefixCls.value}-reverse`]: !!reverse2, - [`${prefixCls.value}-${mode}`]: !!mode && !hasLabelItem, - [`${prefixCls.value}-label`]: hasLabelItem, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - return wrapSSR(createVNode("ul", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classString - }), [items])); - }; - } -}); - -// node_modules/ant-design-vue/es/timeline/index.js -Timeline_default.Item = TimelineItem_default; -Timeline_default.install = function(app) { - app.component(Timeline_default.name, Timeline_default); - app.component(TimelineItem_default.name, TimelineItem_default); - return app; -}; -var timeline_default = Timeline_default; - -// node_modules/ant-design-vue/es/typography/style/mixins.js -var getTitleStyle = (fontSize, lineHeight, color, token2) => { - const { - sizeMarginHeadingVerticalEnd, - fontWeightStrong - } = token2; - return { - marginBottom: sizeMarginHeadingVerticalEnd, - color, - fontWeight: fontWeightStrong, - fontSize, - lineHeight - }; -}; -var getTitleStyles = (token2) => { - const headings = [1, 2, 3, 4, 5]; - const styles = {}; - headings.forEach((headingLevel) => { - styles[` - h${headingLevel}&, - div&-h${headingLevel}, - div&-h${headingLevel} > textarea, - h${headingLevel} - `] = getTitleStyle(token2[`fontSizeHeading${headingLevel}`], token2[`lineHeightHeading${headingLevel}`], token2.colorTextHeading, token2); - }); - return styles; -}; -var getLinkStyles = (token2) => { - const { - componentCls - } = token2; - return { - "a&, a": _extends(_extends({}, operationUnit(token2)), { - textDecoration: token2.linkDecoration, - "&:active, &:hover": { - textDecoration: token2.linkHoverDecoration - }, - [`&[disabled], &${componentCls}-disabled`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed", - "&:active, &:hover": { - color: token2.colorTextDisabled - }, - "&:active": { - pointerEvents: "none" - } - } - }) - }; -}; -var getResetStyles = () => ({ - code: { - margin: "0 0.2em", - paddingInline: "0.4em", - paddingBlock: "0.2em 0.1em", - fontSize: "85%", - background: "rgba(150, 150, 150, 0.1)", - border: "1px solid rgba(100, 100, 100, 0.2)", - borderRadius: 3 - }, - kbd: { - margin: "0 0.2em", - paddingInline: "0.4em", - paddingBlock: "0.15em 0.1em", - fontSize: "90%", - background: "rgba(150, 150, 150, 0.06)", - border: "1px solid rgba(100, 100, 100, 0.2)", - borderBottomWidth: 2, - borderRadius: 3 - }, - mark: { - padding: 0, - // FIXME hardcode in v4 - backgroundColor: gold[2] - }, - "u, ins": { - textDecoration: "underline", - textDecorationSkipInk: "auto" - }, - "s, del": { - textDecoration: "line-through" - }, - strong: { - fontWeight: 600 - }, - // list - "ul, ol": { - marginInline: 0, - marginBlock: "0 1em", - padding: 0, - li: { - marginInline: "20px 0", - marginBlock: 0, - paddingInline: "4px 0", - paddingBlock: 0 - } - }, - ul: { - listStyleType: "circle", - ul: { - listStyleType: "disc" - } - }, - ol: { - listStyleType: "decimal" - }, - // pre & block - "pre, blockquote": { - margin: "1em 0" - }, - pre: { - padding: "0.4em 0.6em", - whiteSpace: "pre-wrap", - wordWrap: "break-word", - background: "rgba(150, 150, 150, 0.1)", - border: "1px solid rgba(100, 100, 100, 0.2)", - borderRadius: 3, - // Compatible for marked - code: { - display: "inline", - margin: 0, - padding: 0, - fontSize: "inherit", - fontFamily: "inherit", - background: "transparent", - border: 0 - } - }, - blockquote: { - paddingInline: "0.6em 0", - paddingBlock: 0, - borderInlineStart: "4px solid rgba(100, 100, 100, 0.2)", - opacity: 0.85 - } -}); -var getEditableStyles = (token2) => { - const { - componentCls - } = token2; - const inputToken = initInputToken(token2); - const inputShift = inputToken.inputPaddingVertical + 1; - return { - "&-edit-content": { - position: "relative", - "div&": { - insetInlineStart: -token2.paddingSM, - marginTop: -inputShift, - marginBottom: `calc(1em - ${inputShift}px)` - }, - [`${componentCls}-edit-content-confirm`]: { - position: "absolute", - insetInlineEnd: token2.marginXS + 2, - insetBlockEnd: token2.marginXS, - color: token2.colorTextDescription, - // default style - fontWeight: "normal", - fontSize: token2.fontSize, - fontStyle: "normal", - pointerEvents: "none" - }, - textarea: { - margin: "0!important", - // Fix Editable Textarea flash in Firefox - MozTransition: "none", - height: "1em" - } - } - }; -}; -var getCopiableStyles = (token2) => ({ - "&-copy-success": { - [` - &, - &:hover, - &:focus`]: { - color: token2.colorSuccess - } - } -}); -var getEllipsisStyles = () => ({ - [` - a&-ellipsis, - span&-ellipsis - `]: { - display: "inline-block", - maxWidth: "100%" - }, - "&-single-line": { - whiteSpace: "nowrap" - }, - "&-ellipsis-single-line": { - overflow: "hidden", - textOverflow: "ellipsis", - // https://blog.csdn.net/iefreer/article/details/50421025 - "a&, span&": { - verticalAlign: "bottom" - } - }, - "&-ellipsis-multiple-line": { - display: "-webkit-box", - overflow: "hidden", - WebkitLineClamp: 3, - WebkitBoxOrient: "vertical" - } -}); - -// node_modules/ant-design-vue/es/typography/style/index.js -var genTypographyStyle = (token2) => { - const { - componentCls, - sizeMarginHeadingVerticalStart - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends(_extends({ - color: token2.colorText, - wordBreak: "break-word", - lineHeight: token2.lineHeight, - [`&${componentCls}-secondary`]: { - color: token2.colorTextDescription - }, - [`&${componentCls}-success`]: { - color: token2.colorSuccess - }, - [`&${componentCls}-warning`]: { - color: token2.colorWarning - }, - [`&${componentCls}-danger`]: { - color: token2.colorError, - "a&:active, a&:focus": { - color: token2.colorErrorActive - }, - "a&:hover": { - color: token2.colorErrorHover - } - }, - [`&${componentCls}-disabled`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed", - userSelect: "none" - }, - [` - div&, - p - `]: { - marginBottom: "1em" - } - }, getTitleStyles(token2)), { - [` - & + h1${componentCls}, - & + h2${componentCls}, - & + h3${componentCls}, - & + h4${componentCls}, - & + h5${componentCls} - `]: { - marginTop: sizeMarginHeadingVerticalStart - }, - [` - div, - ul, - li, - p, - h1, - h2, - h3, - h4, - h5`]: { - [` - + h1, - + h2, - + h3, - + h4, - + h5 - `]: { - marginTop: sizeMarginHeadingVerticalStart - } - } - }), getResetStyles()), getLinkStyles(token2)), { - // Operation - [` - ${componentCls}-expand, - ${componentCls}-edit, - ${componentCls}-copy - `]: _extends(_extends({}, operationUnit(token2)), { - marginInlineStart: token2.marginXXS - }) - }), getEditableStyles(token2)), getCopiableStyles(token2)), getEllipsisStyles()), { - "&-rtl": { - direction: "rtl" - } - }) - }; -}; -var style_default58 = genComponentStyleHook("Typography", (token2) => [genTypographyStyle(token2)], { - sizeMarginHeadingVerticalStart: "1.2em", - sizeMarginHeadingVerticalEnd: "0.5em" -}); - -// node_modules/ant-design-vue/es/typography/Editable.js -var editableProps = () => ({ - prefixCls: String, - value: String, - maxlength: Number, - autoSize: { - type: [Boolean, Object] - }, - onSave: Function, - onCancel: Function, - onEnd: Function, - onChange: Function, - originContent: String, - direction: String, - component: String -}); -var Editable = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Editable", - inheritAttrs: false, - props: editableProps(), - // emits: ['save', 'cancel', 'end', 'change'], - setup(props4, _ref) { - let { - emit, - slots, - attrs - } = _ref; - const { - prefixCls - } = toRefs(props4); - const state = reactive({ - current: props4.value || "", - lastKeyCode: void 0, - inComposition: false, - cancelFlag: false - }); - watch(() => props4.value, (current) => { - state.current = current; - }); - const textArea = ref(); - onMounted(() => { - var _a2; - if (textArea.value) { - const resizableTextArea = (_a2 = textArea.value) === null || _a2 === void 0 ? void 0 : _a2.resizableTextArea; - const innerTextArea = resizableTextArea === null || resizableTextArea === void 0 ? void 0 : resizableTextArea.textArea; - innerTextArea.focus(); - const { - length: length2 - } = innerTextArea.value; - innerTextArea.setSelectionRange(length2, length2); - } - }); - function saveTextAreaRef(node2) { - textArea.value = node2; - } - function onChange(_ref2) { - let { - target: { - value - } - } = _ref2; - state.current = value.replace(/[\r\n]/g, ""); - emit("change", state.current); - } - function onCompositionStart2() { - state.inComposition = true; - } - function onCompositionEnd2() { - state.inComposition = false; - } - function onKeyDown2(e3) { - const { - keyCode - } = e3; - if (keyCode === KeyCode_default.ENTER) { - e3.preventDefault(); - } - if (state.inComposition) return; - state.lastKeyCode = keyCode; - } - function onKeyUp(e3) { - const { - keyCode, - ctrlKey, - altKey, - metaKey, - shiftKey - } = e3; - if (state.lastKeyCode === keyCode && !state.inComposition && !ctrlKey && !altKey && !metaKey && !shiftKey) { - if (keyCode === KeyCode_default.ENTER) { - confirmChange(); - emit("end"); - } else if (keyCode === KeyCode_default.ESC) { - state.current = props4.originContent; - emit("cancel"); - } - } - } - function onBlur() { - confirmChange(); - } - function confirmChange() { - emit("save", state.current.trim()); - } - const [wrapSSR, hashId] = style_default58(prefixCls); - return () => { - const textAreaClassName = classNames_default({ - [`${prefixCls.value}`]: true, - [`${prefixCls.value}-edit-content`]: true, - [`${prefixCls.value}-rtl`]: props4.direction === "rtl", - [props4.component ? `${prefixCls.value}-${props4.component}` : ""]: true - }, attrs.class, hashId.value); - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": textAreaClassName - }), [createVNode(TextArea_default, { - "ref": saveTextAreaRef, - "maxlength": props4.maxlength, - "value": state.current, - "onChange": onChange, - "onKeydown": onKeyDown2, - "onKeyup": onKeyUp, - "onCompositionstart": onCompositionStart2, - "onCompositionend": onCompositionEnd2, - "onBlur": onBlur, - "rows": 1, - "autoSize": props4.autoSize === void 0 || props4.autoSize - }, null), slots.enterIcon ? slots.enterIcon({ - className: `${props4.prefixCls}-edit-content-confirm` - }) : createVNode(EnterOutlined_default, { - "class": `${props4.prefixCls}-edit-content-confirm` - }, null)])); - }; - } -}); -var Editable_default = Editable; - -// node_modules/ant-design-vue/es/typography/util.js -var TEXT_NODE = 3; -var COMMENT_NODE = 8; -var ellipsisContainer; -var wrapperStyle = { - padding: 0, - margin: 0, - display: "inline", - lineHeight: "inherit" -}; -function styleToString(style) { - const styleNames = Array.prototype.slice.apply(style); - return styleNames.map((name) => `${name}: ${style.getPropertyValue(name)};`).join(""); -} -function resetDomStyles(target, origin) { - target.setAttribute("aria-hidden", "true"); - const originStyle = window.getComputedStyle(origin); - const originCSS = styleToString(originStyle); - target.setAttribute("style", originCSS); - target.style.position = "fixed"; - target.style.left = "0"; - target.style.height = "auto"; - target.style.minHeight = "auto"; - target.style.maxHeight = "auto"; - target.style.paddingTop = "0"; - target.style.paddingBottom = "0"; - target.style.borderTopWidth = "0"; - target.style.borderBottomWidth = "0"; - target.style.top = "-999999px"; - target.style.zIndex = "-1000"; - target.style.textOverflow = "clip"; - target.style.whiteSpace = "normal"; - target.style.webkitLineClamp = "none"; -} -function getRealLineHeight(originElement) { - const heightContainer = document.createElement("div"); - resetDomStyles(heightContainer, originElement); - heightContainer.appendChild(document.createTextNode("text")); - document.body.appendChild(heightContainer); - const realHeight = heightContainer.getBoundingClientRect().height; - document.body.removeChild(heightContainer); - return realHeight; -} -var util_default2 = (originElement, option, content, fixedContent, ellipsisStr) => { - if (!ellipsisContainer) { - ellipsisContainer = document.createElement("div"); - ellipsisContainer.setAttribute("aria-hidden", "true"); - document.body.appendChild(ellipsisContainer); - } - const { - rows, - suffix = "" - } = option; - const lineHeight = getRealLineHeight(originElement); - const maxHeight = Math.round(lineHeight * rows * 100) / 100; - resetDomStyles(ellipsisContainer, originElement); - const vm = createApp({ - render() { - return createVNode("div", { - "style": wrapperStyle - }, [createVNode("span", { - "style": wrapperStyle - }, [content, suffix]), createVNode("span", { - "style": wrapperStyle - }, [fixedContent])]); - } - }); - vm.mount(ellipsisContainer); - function inRange2() { - const currentHeight = Math.round(ellipsisContainer.getBoundingClientRect().height * 100) / 100; - return currentHeight - 0.1 <= maxHeight; - } - if (inRange2()) { - vm.unmount(); - return { - content, - text: ellipsisContainer.innerHTML, - ellipsis: false - }; - } - const childNodes = Array.prototype.slice.apply(ellipsisContainer.childNodes[0].childNodes[0].cloneNode(true).childNodes).filter((_ref) => { - let { - nodeType, - data - } = _ref; - return nodeType !== COMMENT_NODE && data !== ""; - }); - const fixedNodes = Array.prototype.slice.apply(ellipsisContainer.childNodes[0].childNodes[1].cloneNode(true).childNodes); - vm.unmount(); - const ellipsisChildren = []; - ellipsisContainer.innerHTML = ""; - const ellipsisContentHolder = document.createElement("span"); - ellipsisContainer.appendChild(ellipsisContentHolder); - const ellipsisTextNode = document.createTextNode(ellipsisStr + suffix); - ellipsisContentHolder.appendChild(ellipsisTextNode); - fixedNodes.forEach((childNode) => { - ellipsisContainer.appendChild(childNode); - }); - function appendChildNode(node2) { - ellipsisContentHolder.insertBefore(node2, ellipsisTextNode); - } - function measureText(textNode, fullText) { - let startLoc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; - let endLoc = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : fullText.length; - let lastSuccessLoc = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0; - const midLoc = Math.floor((startLoc + endLoc) / 2); - const currentText = fullText.slice(0, midLoc); - textNode.textContent = currentText; - if (startLoc >= endLoc - 1) { - for (let step = endLoc; step >= startLoc; step -= 1) { - const currentStepText = fullText.slice(0, step); - textNode.textContent = currentStepText; - if (inRange2() || !currentStepText) { - return step === fullText.length ? { - finished: false, - vNode: fullText - } : { - finished: true, - vNode: currentStepText - }; - } - } - } - if (inRange2()) { - return measureText(textNode, fullText, midLoc, endLoc, midLoc); - } - return measureText(textNode, fullText, startLoc, midLoc, lastSuccessLoc); - } - function measureNode(childNode) { - const type4 = childNode.nodeType; - if (type4 === TEXT_NODE) { - const fullText = childNode.textContent || ""; - const textNode = document.createTextNode(fullText); - appendChildNode(textNode); - return measureText(textNode, fullText); - } - return { - finished: false, - vNode: null - }; - } - childNodes.some((childNode) => { - const { - finished, - vNode - } = measureNode(childNode); - if (vNode) { - ellipsisChildren.push(vNode); - } - return finished; - }); - return { - content: ellipsisChildren, - text: ellipsisContainer.innerHTML, - ellipsis: true - }; -}; - -// node_modules/ant-design-vue/es/typography/Typography.js -var __rest71 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var typographyProps = () => ({ - prefixCls: String, - direction: String, - // Form Internal use - component: String -}); -var Typography = defineComponent({ - name: "ATypography", - inheritAttrs: false, - props: typographyProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("typography", props4); - const [wrapSSR, hashId] = style_default58(prefixCls); - return () => { - var _a2; - const _b = _extends(_extends({}, props4), attrs), { - prefixCls: _prefixCls, - direction: _direction, - component: Component = "article" - } = _b, restProps = __rest71(_b, ["prefixCls", "direction", "component"]); - return wrapSSR(createVNode(Component, _objectSpread2(_objectSpread2({}, restProps), {}, { - "class": classNames_default(prefixCls.value, { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value) - }), { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - })); - }; - } -}); -var Typography_default = Typography; - -// node_modules/ant-design-vue/es/_util/copy-to-clipboard/toggle-selection.js -var deselectCurrent = () => { - const selection = document.getSelection(); - if (!selection.rangeCount) { - return function() { - }; - } - let active = document.activeElement; - const ranges = []; - for (let i3 = 0; i3 < selection.rangeCount; i3++) { - ranges.push(selection.getRangeAt(i3)); - } - switch (active.tagName.toUpperCase()) { - case "INPUT": - case "TEXTAREA": - active.blur(); - break; - default: - active = null; - break; - } - selection.removeAllRanges(); - return function() { - selection.type === "Caret" && selection.removeAllRanges(); - if (!selection.rangeCount) { - ranges.forEach(function(range4) { - selection.addRange(range4); - }); - } - active && active.focus(); - }; -}; -var toggle_selection_default = deselectCurrent; - -// node_modules/ant-design-vue/es/_util/copy-to-clipboard/index.js -var clipboardToIE11Formatting = { - "text/plain": "Text", - "text/html": "Url", - default: "Text" -}; -var defaultMessage = "Copy to clipboard: #{key}, Enter"; -function format2(message) { - const copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; - return message.replace(/#{\s*key\s*}/g, copyKey); -} -function copy2(text, options) { - let message, reselectPrevious, range4, selection, mark, success = false; - if (!options) { - options = {}; - } - const debug = options.debug || false; - try { - reselectPrevious = toggle_selection_default(); - range4 = document.createRange(); - selection = document.getSelection(); - mark = document.createElement("span"); - mark.textContent = text; - mark.style.all = "unset"; - mark.style.position = "fixed"; - mark.style.top = 0; - mark.style.clip = "rect(0, 0, 0, 0)"; - mark.style.whiteSpace = "pre"; - mark.style.webkitUserSelect = "text"; - mark.style.MozUserSelect = "text"; - mark.style.msUserSelect = "text"; - mark.style.userSelect = "text"; - mark.addEventListener("copy", function(e3) { - e3.stopPropagation(); - if (options.format) { - e3.preventDefault(); - if (typeof e3.clipboardData === "undefined") { - debug && console.warn("unable to use e.clipboardData"); - debug && console.warn("trying IE specific stuff"); - window.clipboardData.clearData(); - const format3 = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]; - window.clipboardData.setData(format3, text); - } else { - e3.clipboardData.clearData(); - e3.clipboardData.setData(options.format, text); - } - } - if (options.onCopy) { - e3.preventDefault(); - options.onCopy(e3.clipboardData); - } - }); - document.body.appendChild(mark); - range4.selectNodeContents(mark); - selection.addRange(range4); - const successful = document.execCommand("copy"); - if (!successful) { - throw new Error("copy command was unsuccessful"); - } - success = true; - } catch (err) { - debug && console.error("unable to copy using execCommand: ", err); - debug && console.warn("trying IE specific stuff"); - try { - window.clipboardData.setData(options.format || "text", text); - options.onCopy && options.onCopy(window.clipboardData); - success = true; - } catch (err2) { - debug && console.error("unable to copy using clipboardData: ", err2); - debug && console.error("falling back to prompt"); - message = format2("message" in options ? options.message : defaultMessage); - window.prompt(message, text); - } - } finally { - if (selection) { - if (typeof selection.removeRange == "function") { - selection.removeRange(range4); - } else { - selection.removeAllRanges(); - } - } - if (mark) { - document.body.removeChild(mark); - } - reselectPrevious(); - } - return success; -} -var copy_to_clipboard_default = copy2; - -// node_modules/ant-design-vue/es/typography/Base.js -var __rest72 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var isLineClampSupport = isStyleSupport("webkitLineClamp"); -var isTextOverflowSupport = isStyleSupport("textOverflow"); -var ELLIPSIS_STR = "..."; -var baseProps2 = () => ({ - editable: { - type: [Boolean, Object], - default: void 0 - }, - copyable: { - type: [Boolean, Object], - default: void 0 - }, - prefixCls: String, - component: String, - type: String, - disabled: { - type: Boolean, - default: void 0 - }, - ellipsis: { - type: [Boolean, Object], - default: void 0 - }, - code: { - type: Boolean, - default: void 0 - }, - mark: { - type: Boolean, - default: void 0 - }, - underline: { - type: Boolean, - default: void 0 - }, - delete: { - type: Boolean, - default: void 0 - }, - strong: { - type: Boolean, - default: void 0 - }, - keyboard: { - type: Boolean, - default: void 0 - }, - content: String, - "onUpdate:content": Function -}); -var Base = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "TypographyBase", - inheritAttrs: false, - props: baseProps2(), - // emits: ['update:content'], - setup(props4, _ref) { - let { - slots, - attrs, - emit - } = _ref; - const { - prefixCls, - direction - } = useConfigInject_default("typography", props4); - const state = reactive({ - copied: false, - ellipsisText: "", - ellipsisContent: null, - isEllipsis: false, - expanded: false, - clientRendered: false, - //locale - expandStr: "", - copyStr: "", - copiedStr: "", - editStr: "", - copyId: void 0, - rafId: void 0, - prevProps: void 0, - originContent: "" - }); - const contentRef = ref(); - const editIcon = ref(); - const ellipsis = computed(() => { - const ellipsis2 = props4.ellipsis; - if (!ellipsis2) return {}; - return _extends({ - rows: 1, - expandable: false - }, typeof ellipsis2 === "object" ? ellipsis2 : null); - }); - onMounted(() => { - state.clientRendered = true; - syncEllipsis(); - }); - onBeforeUnmount(() => { - clearTimeout(state.copyId); - wrapperRaf.cancel(state.rafId); - }); - watch([() => ellipsis.value.rows, () => props4.content], () => { - nextTick(() => { - resizeOnNextFrame(); - }); - }, { - flush: "post", - deep: true - }); - watchEffect(() => { - if (props4.content === void 0) { - warning_default2(!props4.editable, "Typography", "When `editable` is enabled, please use `content` instead of children"); - warning_default2(!props4.ellipsis, "Typography", "When `ellipsis` is enabled, please use `content` instead of children"); - } - }); - function getChildrenText() { - var _a2; - return props4.ellipsis || props4.editable ? props4.content : (_a2 = findDOMNode(contentRef.value)) === null || _a2 === void 0 ? void 0 : _a2.innerText; - } - function onExpandClick(e3) { - const { - onExpand - } = ellipsis.value; - state.expanded = true; - onExpand === null || onExpand === void 0 ? void 0 : onExpand(e3); - } - function onEditClick(e3) { - e3.preventDefault(); - state.originContent = props4.content; - triggerEdit(true); - } - function onEditChange(value) { - onContentChange(value); - triggerEdit(false); - } - function onContentChange(value) { - const { - onChange - } = editable.value; - if (value !== props4.content) { - emit("update:content", value); - onChange === null || onChange === void 0 ? void 0 : onChange(value); - } - } - function onEditCancel() { - var _a2, _b; - (_b = (_a2 = editable.value).onCancel) === null || _b === void 0 ? void 0 : _b.call(_a2); - triggerEdit(false); - } - function onCopyClick(e3) { - e3.preventDefault(); - e3.stopPropagation(); - const { - copyable - } = props4; - const copyConfig = _extends({}, typeof copyable === "object" ? copyable : null); - if (copyConfig.text === void 0) { - copyConfig.text = getChildrenText(); - } - copy_to_clipboard_default(copyConfig.text || ""); - state.copied = true; - nextTick(() => { - if (copyConfig.onCopy) { - copyConfig.onCopy(e3); - } - state.copyId = setTimeout(() => { - state.copied = false; - }, 3e3); - }); - } - const editable = computed(() => { - const editable2 = props4.editable; - if (!editable2) return { - editing: false - }; - return _extends({}, typeof editable2 === "object" ? editable2 : null); - }); - const [editing, setEditing] = useMergedState(false, { - value: computed(() => { - return editable.value.editing; - }) - }); - function triggerEdit(edit) { - const { - onStart - } = editable.value; - if (edit && onStart) { - onStart(); - } - setEditing(edit); - } - watch(editing, (val) => { - var _a2; - if (!val) { - (_a2 = editIcon.value) === null || _a2 === void 0 ? void 0 : _a2.focus(); - } - }, { - flush: "post" - }); - function resizeOnNextFrame(sizeInfo) { - if (sizeInfo) { - const { - width, - height - } = sizeInfo; - if (!width || !height) return; - } - wrapperRaf.cancel(state.rafId); - state.rafId = wrapperRaf(() => { - syncEllipsis(); - }); - } - const canUseCSSEllipsis = computed(() => { - const { - rows, - expandable, - suffix, - onEllipsis, - tooltip - } = ellipsis.value; - if (suffix || tooltip) return false; - if (props4.editable || props4.copyable || expandable || onEllipsis) { - return false; - } - if (rows === 1) { - return isTextOverflowSupport; - } - return isLineClampSupport; - }); - const syncEllipsis = () => { - const { - ellipsisText, - isEllipsis - } = state; - const { - rows, - suffix, - onEllipsis - } = ellipsis.value; - if (!rows || rows < 0 || !findDOMNode(contentRef.value) || state.expanded || props4.content === void 0) return; - if (canUseCSSEllipsis.value) return; - const { - content, - text, - ellipsis: ell - } = util_default2(findDOMNode(contentRef.value), { - rows, - suffix - }, props4.content, renderOperations(true), ELLIPSIS_STR); - if (ellipsisText !== text || state.isEllipsis !== ell) { - state.ellipsisText = text; - state.ellipsisContent = content; - state.isEllipsis = ell; - if (isEllipsis !== ell && onEllipsis) { - onEllipsis(ell); - } - } - }; - function wrapperDecorations(_ref2, content) { - let { - mark, - code, - underline, - delete: del, - strong, - keyboard - } = _ref2; - let currentContent = content; - function wrap2(needed, Tag2) { - if (!needed) return; - const _currentContent = /* @__PURE__ */ function() { - return currentContent; - }(); - currentContent = createVNode(Tag2, null, { - default: () => [_currentContent] - }); - } - wrap2(strong, "strong"); - wrap2(underline, "u"); - wrap2(del, "del"); - wrap2(code, "code"); - wrap2(mark, "mark"); - wrap2(keyboard, "kbd"); - return currentContent; - } - function renderExpand(forceRender) { - const { - expandable, - symbol - } = ellipsis.value; - if (!expandable) return null; - if (!forceRender && (state.expanded || !state.isEllipsis)) return null; - const expandContent = (slots.ellipsisSymbol ? slots.ellipsisSymbol() : symbol) || state.expandStr; - return createVNode("a", { - "key": "expand", - "class": `${prefixCls.value}-expand`, - "onClick": onExpandClick, - "aria-label": state.expandStr - }, [expandContent]); - } - function renderEdit() { - if (!props4.editable) return; - const { - tooltip, - triggerType = ["icon"] - } = props4.editable; - const icon = slots.editableIcon ? slots.editableIcon() : createVNode(EditOutlined_default, { - "role": "button" - }, null); - const title = slots.editableTooltip ? slots.editableTooltip() : state.editStr; - const ariaLabel = typeof title === "string" ? title : ""; - return triggerType.indexOf("icon") !== -1 ? createVNode(tooltip_default, { - "key": "edit", - "title": tooltip === false ? "" : title - }, { - default: () => [createVNode(transButton_default, { - "ref": editIcon, - "class": `${prefixCls.value}-edit`, - "onClick": onEditClick, - "aria-label": ariaLabel - }, { - default: () => [icon] - })] - }) : null; - } - function renderCopy() { - if (!props4.copyable) return; - const { - tooltip - } = props4.copyable; - const defaultTitle2 = state.copied ? state.copiedStr : state.copyStr; - const title = slots.copyableTooltip ? slots.copyableTooltip({ - copied: state.copied - }) : defaultTitle2; - const ariaLabel = typeof title === "string" ? title : ""; - const defaultIcon = state.copied ? createVNode(CheckOutlined_default, null, null) : createVNode(CopyOutlined_default, null, null); - const icon = slots.copyableIcon ? slots.copyableIcon({ - copied: !!state.copied - }) : defaultIcon; - return createVNode(tooltip_default, { - "key": "copy", - "title": tooltip === false ? "" : title - }, { - default: () => [createVNode(transButton_default, { - "class": [`${prefixCls.value}-copy`, { - [`${prefixCls.value}-copy-success`]: state.copied - }], - "onClick": onCopyClick, - "aria-label": ariaLabel - }, { - default: () => [icon] - })] - }); - } - function renderEditInput() { - const { - class: className, - style - } = attrs; - const { - maxlength, - autoSize, - onEnd - } = editable.value; - return createVNode(Editable_default, { - "class": className, - "style": style, - "prefixCls": prefixCls.value, - "value": props4.content, - "originContent": state.originContent, - "maxlength": maxlength, - "autoSize": autoSize, - "onSave": onEditChange, - "onChange": onContentChange, - "onCancel": onEditCancel, - "onEnd": onEnd, - "direction": direction.value, - "component": props4.component - }, { - enterIcon: slots.editableEnterIcon - }); - } - function renderOperations(forceRenderExpanded) { - return [renderExpand(forceRenderExpanded), renderEdit(), renderCopy()].filter((node2) => node2); - } - return () => { - var _a2; - const { - triggerType = ["icon"] - } = editable.value; - const children = props4.ellipsis || props4.editable ? props4.content !== void 0 ? props4.content : (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots) : slots.default ? slots.default() : props4.content; - if (editing.value) { - return renderEditInput(); - } - return createVNode(LocaleReceiver_default2, { - "componentName": "Text", - "children": (locale4) => { - const _a3 = _extends(_extends({}, props4), attrs), { - type: type4, - disabled, - content, - class: className, - style - } = _a3, restProps = __rest72(_a3, ["type", "disabled", "content", "class", "style"]); - const { - rows, - suffix, - tooltip - } = ellipsis.value; - const { - edit, - copy: copyStr, - copied, - expand - } = locale4; - state.editStr = edit; - state.copyStr = copyStr; - state.copiedStr = copied; - state.expandStr = expand; - const textProps2 = omit_default(restProps, ["prefixCls", "editable", "copyable", "ellipsis", "mark", "code", "delete", "underline", "strong", "keyboard", "onUpdate:content"]); - const cssEllipsis = canUseCSSEllipsis.value; - const cssTextOverflow = rows === 1 && cssEllipsis; - const cssLineClamp = rows && rows > 1 && cssEllipsis; - let textNode = children; - let ariaLabel; - if (rows && state.isEllipsis && !state.expanded && !cssEllipsis) { - const { - title: title2 - } = restProps; - let restContent = title2 || ""; - if (!title2 && (typeof children === "string" || typeof children === "number")) { - restContent = String(children); - } - restContent = restContent === null || restContent === void 0 ? void 0 : restContent.slice(String(state.ellipsisContent || "").length); - textNode = createVNode(Fragment, null, [toRaw(state.ellipsisContent), createVNode("span", { - "title": restContent, - "aria-hidden": "true" - }, [ELLIPSIS_STR]), suffix]); - } else { - textNode = createVNode(Fragment, null, [children, suffix]); - } - textNode = wrapperDecorations(props4, textNode); - const showTooltip = tooltip && rows && state.isEllipsis && !state.expanded && !cssEllipsis; - const title = slots.ellipsisTooltip ? slots.ellipsisTooltip() : tooltip; - return createVNode(vc_resize_observer_default, { - "onResize": resizeOnNextFrame, - "disabled": !rows - }, { - default: () => [createVNode(Typography_default, _objectSpread2({ - "ref": contentRef, - "class": [{ - [`${prefixCls.value}-${type4}`]: type4, - [`${prefixCls.value}-disabled`]: disabled, - [`${prefixCls.value}-ellipsis`]: rows, - [`${prefixCls.value}-single-line`]: rows === 1 && !state.isEllipsis, - [`${prefixCls.value}-ellipsis-single-line`]: cssTextOverflow, - [`${prefixCls.value}-ellipsis-multiple-line`]: cssLineClamp - }, className], - "style": _extends(_extends({}, style), { - WebkitLineClamp: cssLineClamp ? rows : void 0 - }), - "aria-label": ariaLabel, - "direction": direction.value, - "onClick": triggerType.indexOf("text") !== -1 ? onEditClick : () => { - } - }, textProps2), { - default: () => [showTooltip ? createVNode(tooltip_default, { - "title": tooltip === true ? children : title - }, { - default: () => [createVNode("span", null, [textNode])] - }) : textNode, renderOperations()] - })] - }); - } - }, null); - }; - } -}); -var Base_default = Base; - -// node_modules/ant-design-vue/es/typography/Link.js -var __rest73 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var linkProps = () => omit_default(_extends(_extends({}, baseProps2()), { - ellipsis: { - type: Boolean, - default: void 0 - } -}), ["component"]); -var Link = (props4, _ref) => { - let { - slots, - attrs - } = _ref; - const _a2 = _extends(_extends({}, props4), attrs), { - ellipsis, - rel - } = _a2, restProps = __rest73(_a2, ["ellipsis", "rel"]); - warning_default2(typeof ellipsis !== "object", "Typography.Link", "`ellipsis` only supports boolean value."); - const mergedProps = _extends(_extends({}, restProps), { - rel: rel === void 0 && restProps.target === "_blank" ? "noopener noreferrer" : rel, - ellipsis: !!ellipsis, - component: "a" - }); - delete mergedProps.navigate; - return createVNode(Base_default, mergedProps, slots); -}; -Link.displayName = "ATypographyLink"; -Link.inheritAttrs = false; -Link.props = linkProps(); -var Link_default = Link; - -// node_modules/ant-design-vue/es/typography/Paragraph.js -var paragraphProps = () => omit_default(baseProps2(), ["component"]); -var Paragraph = (props4, _ref) => { - let { - slots, - attrs - } = _ref; - const paragraphProps2 = _extends(_extends(_extends({}, props4), { - component: "div" - }), attrs); - return createVNode(Base_default, paragraphProps2, slots); -}; -Paragraph.displayName = "ATypographyParagraph"; -Paragraph.inheritAttrs = false; -Paragraph.props = paragraphProps(); -var Paragraph_default2 = Paragraph; - -// node_modules/ant-design-vue/es/typography/Text.js -var textProps = () => _extends(_extends({}, omit_default(baseProps2(), ["component"])), { - ellipsis: { - type: [Boolean, Object], - default: void 0 - } -}); -var Text2 = (props4, _ref) => { - let { - slots, - attrs - } = _ref; - const { - ellipsis - } = props4; - warning_default2(typeof ellipsis !== "object" || !ellipsis || !("expandable" in ellipsis) && !("rows" in ellipsis), "Typography.Text", "`ellipsis` do not support `expandable` or `rows` props."); - const textProps2 = _extends(_extends(_extends({}, props4), { - ellipsis: ellipsis && typeof ellipsis === "object" ? omit_default(ellipsis, ["expandable", "rows"]) : ellipsis, - component: "span" - }), attrs); - return createVNode(Base_default, textProps2, slots); -}; -Text2.displayName = "ATypographyText"; -Text2.inheritAttrs = false; -Text2.props = textProps(); -var Text_default = Text2; - -// node_modules/ant-design-vue/es/typography/Title.js -var __rest74 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var TITLE_ELE_LIST = tupleNum(1, 2, 3, 4, 5); -var titleProps = () => _extends(_extends({}, omit_default(baseProps2(), ["component", "strong"])), { - level: Number -}); -var Title = (props4, _ref) => { - let { - slots, - attrs - } = _ref; - const { - level = 1 - } = props4, restProps = __rest74(props4, ["level"]); - let component; - if (TITLE_ELE_LIST.includes(level)) { - component = `h${level}`; - } else { - warning_default2(false, "Typography", "Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."); - component = "h1"; - } - const titleProps2 = _extends(_extends(_extends({}, restProps), { - component - }), attrs); - return createVNode(Base_default, titleProps2, slots); -}; -Title.displayName = "ATypographyTitle"; -Title.inheritAttrs = false; -Title.props = titleProps(); -var Title_default2 = Title; - -// node_modules/ant-design-vue/es/typography/index.js -Typography_default.Text = Text_default; -Typography_default.Title = Title_default2; -Typography_default.Paragraph = Paragraph_default2; -Typography_default.Link = Link_default; -Typography_default.Base = Base_default; -Typography_default.install = function(app) { - app.component(Typography_default.name, Typography_default); - app.component(Typography_default.Text.displayName, Text_default); - app.component(Typography_default.Title.displayName, Title_default2); - app.component(Typography_default.Paragraph.displayName, Paragraph_default2); - app.component(Typography_default.Link.displayName, Link_default); - return app; -}; -var typography_default = Typography_default; - -// node_modules/ant-design-vue/es/vc-upload/request.js -function getError(option, xhr) { - const msg = `cannot ${option.method} ${option.action} ${xhr.status}'`; - const err = new Error(msg); - err.status = xhr.status; - err.method = option.method; - err.url = option.action; - return err; -} -function getBody(xhr) { - const text = xhr.responseText || xhr.response; - if (!text) { - return text; - } - try { - return JSON.parse(text); - } catch (e3) { - return text; - } -} -function upload(option) { - const xhr = new XMLHttpRequest(); - if (option.onProgress && xhr.upload) { - xhr.upload.onprogress = function progress(e3) { - if (e3.total > 0) { - e3.percent = e3.loaded / e3.total * 100; - } - option.onProgress(e3); - }; - } - const formData = new FormData(); - if (option.data) { - Object.keys(option.data).forEach((key2) => { - const value = option.data[key2]; - if (Array.isArray(value)) { - value.forEach((item) => { - formData.append(`${key2}[]`, item); - }); - return; - } - formData.append(key2, value); - }); - } - if (option.file instanceof Blob) { - formData.append(option.filename, option.file, option.file.name); - } else { - formData.append(option.filename, option.file); - } - xhr.onerror = function error(e3) { - option.onError(e3); - }; - xhr.onload = function onload() { - if (xhr.status < 200 || xhr.status >= 300) { - return option.onError(getError(option, xhr), getBody(xhr)); - } - return option.onSuccess(getBody(xhr), xhr); - }; - xhr.open(option.method, option.action, true); - if (option.withCredentials && "withCredentials" in xhr) { - xhr.withCredentials = true; - } - const headers = option.headers || {}; - if (headers["X-Requested-With"] !== null) { - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - } - Object.keys(headers).forEach((h3) => { - if (headers[h3] !== null) { - xhr.setRequestHeader(h3, headers[h3]); - } - }); - xhr.send(formData); - return { - abort() { - xhr.abort(); - } - }; -} - -// node_modules/ant-design-vue/es/vc-upload/uid.js -var now4 = +/* @__PURE__ */ new Date(); -var index2 = 0; -function uid() { - return `vc-upload-${now4}-${++index2}`; -} - -// node_modules/ant-design-vue/es/vc-upload/attr-accept.js -var attr_accept_default = (file, acceptedFiles) => { - if (file && acceptedFiles) { - const acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(","); - const fileName = file.name || ""; - const mimeType = file.type || ""; - const baseMimeType = mimeType.replace(/\/.*$/, ""); - return acceptedFilesArray.some((type4) => { - const validType = type4.trim(); - if (/^\*(\/\*)?$/.test(type4)) { - return true; - } - if (validType.charAt(0) === ".") { - const lowerFileName = fileName.toLowerCase(); - const lowerType = validType.toLowerCase(); - let affixList = [lowerType]; - if (lowerType === ".jpg" || lowerType === ".jpeg") { - affixList = [".jpg", ".jpeg"]; - } - return affixList.some((affix) => lowerFileName.endsWith(affix)); - } - if (/\/\*$/.test(validType)) { - return baseMimeType === validType.replace(/\/.*$/, ""); - } - if (mimeType === validType) { - return true; - } - if (/^\w+$/.test(validType)) { - warning(false, `Upload takes an invalidate 'accept' type '${validType}'.Skip for check.`); - return true; - } - return false; - }); - } - return true; -}; - -// node_modules/ant-design-vue/es/vc-upload/traverseFileTree.js -function loopFiles(item, callback) { - const dirReader = item.createReader(); - let fileList = []; - function sequence() { - dirReader.readEntries((entries) => { - const entryList = Array.prototype.slice.apply(entries); - fileList = fileList.concat(entryList); - const isFinished = !entryList.length; - if (isFinished) { - callback(fileList); - } else { - sequence(); - } - }); - } - sequence(); -} -var traverseFileTree = (files, callback, isAccepted) => { - const _traverseFileTree = (item, path2) => { - item.path = path2 || ""; - if (item.isFile) { - item.file((file) => { - if (isAccepted(file)) { - if (item.fullPath && !file.webkitRelativePath) { - Object.defineProperties(file, { - webkitRelativePath: { - writable: true - } - }); - file.webkitRelativePath = item.fullPath.replace(/^\//, ""); - Object.defineProperties(file, { - webkitRelativePath: { - writable: false - } - }); - } - callback([file]); - } - }); - } else if (item.isDirectory) { - loopFiles(item, (entries) => { - entries.forEach((entryItem) => { - _traverseFileTree(entryItem, `${path2}${item.name}/`); - }); - }); - } - }; - files.forEach((file) => { - _traverseFileTree(file.webkitGetAsEntry()); - }); -}; -var traverseFileTree_default = traverseFileTree; - -// node_modules/ant-design-vue/es/vc-upload/interface.js -var uploadProps = () => { - return { - capture: [Boolean, String], - multipart: { - type: Boolean, - default: void 0 - }, - name: String, - disabled: { - type: Boolean, - default: void 0 - }, - componentTag: String, - action: [String, Function], - method: String, - directory: { - type: Boolean, - default: void 0 - }, - data: [Object, Function], - headers: Object, - accept: String, - multiple: { - type: Boolean, - default: void 0 - }, - onBatchStart: Function, - onReject: Function, - onStart: Function, - onError: Function, - onSuccess: Function, - onProgress: Function, - beforeUpload: Function, - customRequest: Function, - withCredentials: { - type: Boolean, - default: void 0 - }, - openFileDialogOnClick: { - type: Boolean, - default: void 0 - }, - prefixCls: String, - id: String, - onMouseenter: Function, - onMouseleave: Function, - onClick: Function - }; -}; - -// node_modules/ant-design-vue/es/vc-upload/AjaxUploader.js -var __awaiter3 = function(thisArg, _arguments, P2, generator2) { - function adopt(value) { - return value instanceof P2 ? value : new P2(function(resolve) { - resolve(value); - }); - } - return new (P2 || (P2 = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator2.next(value)); - } catch (e3) { - reject2(e3); - } - } - function rejected(value) { - try { - step(generator2["throw"](value)); - } catch (e3) { - reject2(e3); - } - } - function step(result2) { - result2.done ? resolve(result2.value) : adopt(result2.value).then(fulfilled, rejected); - } - step((generator2 = generator2.apply(thisArg, _arguments || [])).next()); - }); -}; -var __rest75 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var AjaxUploader_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AjaxUploader", - inheritAttrs: false, - props: uploadProps(), - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const uid2 = ref(uid()); - const reqs = {}; - const fileInput = ref(); - let isMounted = false; - const processFile = (file, fileList) => __awaiter3(this, void 0, void 0, function* () { - const { - beforeUpload - } = props4; - let transformedFile = file; - if (beforeUpload) { - try { - transformedFile = yield beforeUpload(file, fileList); - } catch (e3) { - transformedFile = false; - } - if (transformedFile === false) { - return { - origin: file, - parsedFile: null, - action: null, - data: null - }; - } - } - const { - action - } = props4; - let mergedAction; - if (typeof action === "function") { - mergedAction = yield action(file); - } else { - mergedAction = action; - } - const { - data - } = props4; - let mergedData; - if (typeof data === "function") { - mergedData = yield data(file); - } else { - mergedData = data; - } - const parsedData = ( - // string type is from legacy `transformFile`. - // Not sure if this will work since no related test case works with it - (typeof transformedFile === "object" || typeof transformedFile === "string") && transformedFile ? transformedFile : file - ); - let parsedFile; - if (parsedData instanceof File) { - parsedFile = parsedData; - } else { - parsedFile = new File([parsedData], file.name, { - type: file.type - }); - } - const mergedParsedFile = parsedFile; - mergedParsedFile.uid = file.uid; - return { - origin: file, - data: mergedData, - parsedFile: mergedParsedFile, - action: mergedAction - }; - }); - const post = (_ref2) => { - let { - data, - origin, - action, - parsedFile - } = _ref2; - if (!isMounted) { - return; - } - const { - onStart, - customRequest, - name, - headers, - withCredentials, - method: method5 - } = props4; - const { - uid: uid3 - } = origin; - const request = customRequest || upload; - const requestOption = { - action, - filename: name, - data, - file: parsedFile, - headers, - withCredentials, - method: method5 || "post", - onProgress: (e3) => { - const { - onProgress - } = props4; - onProgress === null || onProgress === void 0 ? void 0 : onProgress(e3, parsedFile); - }, - onSuccess: (ret, xhr) => { - const { - onSuccess - } = props4; - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(ret, parsedFile, xhr); - delete reqs[uid3]; - }, - onError: (err, ret) => { - const { - onError - } = props4; - onError === null || onError === void 0 ? void 0 : onError(err, ret, parsedFile); - delete reqs[uid3]; - } - }; - onStart(origin); - reqs[uid3] = request(requestOption); - }; - const reset = () => { - uid2.value = uid(); - }; - const abort = (file) => { - if (file) { - const uid3 = file.uid ? file.uid : file; - if (reqs[uid3] && reqs[uid3].abort) { - reqs[uid3].abort(); - } - delete reqs[uid3]; - } else { - Object.keys(reqs).forEach((uid3) => { - if (reqs[uid3] && reqs[uid3].abort) { - reqs[uid3].abort(); - } - delete reqs[uid3]; - }); - } - }; - onMounted(() => { - isMounted = true; - }); - onBeforeUnmount(() => { - isMounted = false; - abort(); - }); - const uploadFiles = (files) => { - const originFiles = [...files]; - const postFiles = originFiles.map((file) => { - file.uid = uid(); - return processFile(file, originFiles); - }); - Promise.all(postFiles).then((fileList) => { - const { - onBatchStart - } = props4; - onBatchStart === null || onBatchStart === void 0 ? void 0 : onBatchStart(fileList.map((_ref3) => { - let { - origin, - parsedFile - } = _ref3; - return { - file: origin, - parsedFile - }; - })); - fileList.filter((file) => file.parsedFile !== null).forEach((file) => { - post(file); - }); - }); - }; - const onChange = (e3) => { - const { - accept, - directory - } = props4; - const { - files - } = e3.target; - const acceptedFiles = [...files].filter((file) => !directory || attr_accept_default(file, accept)); - uploadFiles(acceptedFiles); - reset(); - }; - const onClick = (e3) => { - const el = fileInput.value; - if (!el) { - return; - } - const { - onClick: onClick2 - } = props4; - el.click(); - if (onClick2) { - onClick2(e3); - } - }; - const onKeyDown2 = (e3) => { - if (e3.key === "Enter") { - onClick(e3); - } - }; - const onFileDrop = (e3) => { - const { - multiple - } = props4; - e3.preventDefault(); - if (e3.type === "dragover") { - return; - } - if (props4.directory) { - traverseFileTree_default(Array.prototype.slice.call(e3.dataTransfer.items), uploadFiles, (_file) => attr_accept_default(_file, props4.accept)); - } else { - const files = partition_default(Array.prototype.slice.call(e3.dataTransfer.files), (file) => attr_accept_default(file, props4.accept)); - let successFiles = files[0]; - const errorFiles = files[1]; - if (multiple === false) { - successFiles = successFiles.slice(0, 1); - } - uploadFiles(successFiles); - if (errorFiles.length && props4.onReject) props4.onReject(errorFiles); - } - }; - expose({ - abort - }); - return () => { - var _a2; - const { - componentTag: Tag2, - prefixCls, - disabled, - id, - multiple, - accept, - capture, - directory, - openFileDialogOnClick, - onMouseenter, - onMouseleave - } = props4, otherProps = __rest75(props4, ["componentTag", "prefixCls", "disabled", "id", "multiple", "accept", "capture", "directory", "openFileDialogOnClick", "onMouseenter", "onMouseleave"]); - const cls = { - [prefixCls]: true, - [`${prefixCls}-disabled`]: disabled, - [attrs.class]: !!attrs.class - }; - const dirProps = directory ? { - directory: "directory", - webkitdirectory: "webkitdirectory" - } : {}; - const events2 = disabled ? {} : { - onClick: openFileDialogOnClick ? onClick : () => { - }, - onKeydown: openFileDialogOnClick ? onKeyDown2 : () => { - }, - onMouseenter, - onMouseleave, - onDrop: onFileDrop, - onDragover: onFileDrop, - tabindex: "0" - }; - return createVNode(Tag2, _objectSpread2(_objectSpread2({}, events2), {}, { - "class": cls, - "role": "button", - "style": attrs.style - }), { - default: () => [createVNode("input", _objectSpread2(_objectSpread2(_objectSpread2({}, pickAttrs(otherProps, { - aria: true, - data: true - })), {}, { - "id": id, - "type": "file", - "ref": fileInput, - "onClick": (e3) => e3.stopPropagation(), - "onCancel": (e3) => e3.stopPropagation(), - "key": uid2.value, - "style": { - display: "none" - }, - "accept": accept - }, dirProps), {}, { - "multiple": multiple, - "onChange": onChange - }, capture != null ? { - capture - } : {}), null), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-upload/Upload.js -function empty() { -} -var Upload_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "Upload", - inheritAttrs: false, - props: initDefaultProps_default(uploadProps(), { - componentTag: "span", - prefixCls: "rc-upload", - data: {}, - headers: {}, - name: "file", - multipart: false, - onStart: empty, - onError: empty, - onSuccess: empty, - multiple: false, - beforeUpload: null, - customRequest: null, - withCredentials: false, - openFileDialogOnClick: true - }), - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const uploader = ref(); - const abort = (file) => { - var _a2; - (_a2 = uploader.value) === null || _a2 === void 0 ? void 0 : _a2.abort(file); - }; - expose({ - abort - }); - return () => { - return createVNode(AjaxUploader_default, _objectSpread2(_objectSpread2(_objectSpread2({}, props4), attrs), {}, { - "ref": uploader - }), slots); - }; - } -}); - -// node_modules/ant-design-vue/es/vc-upload/index.js -var vc_upload_default = Upload_default; - -// node_modules/ant-design-vue/es/upload/interface.js -function uploadProps2() { - return { - capture: someType([Boolean, String]), - type: stringType(), - name: String, - defaultFileList: arrayType(), - fileList: arrayType(), - action: someType([String, Function]), - directory: booleanType(), - data: someType([Object, Function]), - method: stringType(), - headers: objectType(), - showUploadList: someType([Boolean, Object]), - multiple: booleanType(), - accept: String, - beforeUpload: functionType(), - onChange: functionType(), - "onUpdate:fileList": functionType(), - onDrop: functionType(), - listType: stringType(), - onPreview: functionType(), - onDownload: functionType(), - onReject: functionType(), - onRemove: functionType(), - /** @deprecated Please use `onRemove` directly */ - remove: functionType(), - supportServerRender: booleanType(), - disabled: booleanType(), - prefixCls: String, - customRequest: functionType(), - withCredentials: booleanType(), - openFileDialogOnClick: booleanType(), - locale: objectType(), - id: String, - previewFile: functionType(), - /** @deprecated Please use `beforeUpload` directly */ - transformFile: functionType(), - iconRender: functionType(), - isImageUrl: functionType(), - progress: objectType(), - itemRender: functionType(), - /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */ - maxCount: Number, - height: someType([Number, String]), - removeIcon: functionType(), - downloadIcon: functionType(), - previewIcon: functionType() - }; -} -function uploadListProps() { - return { - listType: stringType(), - onPreview: functionType(), - onDownload: functionType(), - onRemove: functionType(), - items: arrayType(), - progress: objectType(), - prefixCls: stringType(), - showRemoveIcon: booleanType(), - showDownloadIcon: booleanType(), - showPreviewIcon: booleanType(), - removeIcon: functionType(), - downloadIcon: functionType(), - previewIcon: functionType(), - locale: objectType(void 0), - previewFile: functionType(), - iconRender: functionType(), - isImageUrl: functionType(), - appendAction: functionType(), - appendActionVisible: booleanType(), - itemRender: functionType() - }; -} - -// node_modules/ant-design-vue/es/upload/utils.js -function file2Obj(file) { - return _extends(_extends({}, file), { - lastModified: file.lastModified, - lastModifiedDate: file.lastModifiedDate, - name: file.name, - size: file.size, - type: file.type, - uid: file.uid, - percent: 0, - originFileObj: file - }); -} -function updateFileList(file, fileList) { - const nextFileList = [...fileList]; - const fileIndex = nextFileList.findIndex((_ref) => { - let { - uid: uid2 - } = _ref; - return uid2 === file.uid; - }); - if (fileIndex === -1) { - nextFileList.push(file); - } else { - nextFileList[fileIndex] = file; - } - return nextFileList; -} -function getFileItem(file, fileList) { - const matchKey = file.uid !== void 0 ? "uid" : "name"; - return fileList.filter((item) => item[matchKey] === file[matchKey])[0]; -} -function removeFileItem(file, fileList) { - const matchKey = file.uid !== void 0 ? "uid" : "name"; - const removed = fileList.filter((item) => item[matchKey] !== file[matchKey]); - if (removed.length === fileList.length) { - return null; - } - return removed; -} -var extname = function() { - let url2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; - const temp = url2.split("/"); - const filename = temp[temp.length - 1]; - const filenameWithoutSuffix = filename.split(/#|\?/)[0]; - return (/\.[^./\\]*$/.exec(filenameWithoutSuffix) || [""])[0]; -}; -var isImageFileType = (type4) => type4.indexOf("image/") === 0; -var isImageUrl = (file) => { - if (file.type && !file.thumbUrl) { - return isImageFileType(file.type); - } - const url2 = file.thumbUrl || file.url || ""; - const extension = extname(url2); - if (/^data:image\//.test(url2) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(extension)) { - return true; - } - if (/^data:/.test(url2)) { - return false; - } - if (extension) { - return false; - } - return true; -}; -var MEASURE_SIZE = 200; -function previewImage(file) { - return new Promise((resolve) => { - if (!file.type || !isImageFileType(file.type)) { - resolve(""); - return; - } - const canvas = document.createElement("canvas"); - canvas.width = MEASURE_SIZE; - canvas.height = MEASURE_SIZE; - canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`; - document.body.appendChild(canvas); - const ctx = canvas.getContext("2d"); - const img = new Image(); - img.onload = () => { - const { - width, - height - } = img; - let drawWidth = MEASURE_SIZE; - let drawHeight = MEASURE_SIZE; - let offsetX = 0; - let offsetY = 0; - if (width > height) { - drawHeight = height * (MEASURE_SIZE / width); - offsetY = -(drawHeight - drawWidth) / 2; - } else { - drawWidth = width * (MEASURE_SIZE / height); - offsetX = -(drawWidth - drawHeight) / 2; - } - ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight); - const dataURL = canvas.toDataURL(); - document.body.removeChild(canvas); - resolve(dataURL); - }; - img.crossOrigin = "anonymous"; - if (file.type.startsWith("image/svg+xml")) { - const reader = new FileReader(); - reader.addEventListener("load", () => { - if (reader.result) img.src = reader.result; - }); - reader.readAsDataURL(file); - } else { - img.src = window.URL.createObjectURL(file); - } - }); -} - -// node_modules/ant-design-vue/es/upload/UploadList/ListItem.js -var listItemProps2 = () => { - return { - prefixCls: String, - locale: objectType(void 0), - file: objectType(), - items: arrayType(), - listType: stringType(), - isImgUrl: functionType(), - showRemoveIcon: booleanType(), - showDownloadIcon: booleanType(), - showPreviewIcon: booleanType(), - removeIcon: functionType(), - downloadIcon: functionType(), - previewIcon: functionType(), - iconRender: functionType(), - actionIconRender: functionType(), - itemRender: functionType(), - onPreview: functionType(), - onClose: functionType(), - onDownload: functionType(), - progress: objectType() - }; -}; -var ListItem_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "ListItem", - inheritAttrs: false, - props: listItemProps2(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - var _a2; - const showProgress = shallowRef(false); - const progressRafRef = shallowRef(); - onMounted(() => { - progressRafRef.value = setTimeout(() => { - showProgress.value = true; - }, 300); - }); - onBeforeUnmount(() => { - clearTimeout(progressRafRef.value); - }); - const mergedStatus = shallowRef((_a2 = props4.file) === null || _a2 === void 0 ? void 0 : _a2.status); - watch(() => { - var _a3; - return (_a3 = props4.file) === null || _a3 === void 0 ? void 0 : _a3.status; - }, (status) => { - if (status !== "removed") { - mergedStatus.value = status; - } - }); - const { - rootPrefixCls - } = useConfigInject_default("upload", props4); - const transitionProps = computed(() => getTransitionProps(`${rootPrefixCls.value}-fade`)); - return () => { - var _a3, _b; - const { - prefixCls, - locale: locale4, - listType, - file, - items, - progress: progressProps2, - iconRender = slots.iconRender, - actionIconRender = slots.actionIconRender, - itemRender = slots.itemRender, - isImgUrl, - showPreviewIcon, - showRemoveIcon, - showDownloadIcon, - previewIcon: customPreviewIcon = slots.previewIcon, - removeIcon: customRemoveIcon = slots.removeIcon, - downloadIcon: customDownloadIcon = slots.downloadIcon, - onPreview, - onDownload, - onClose - } = props4; - const { - class: className, - style - } = attrs; - const iconNode = iconRender({ - file - }); - let icon = createVNode("div", { - "class": `${prefixCls}-text-icon` - }, [iconNode]); - if (listType === "picture" || listType === "picture-card") { - if (mergedStatus.value === "uploading" || !file.thumbUrl && !file.url) { - const uploadingClassName = { - [`${prefixCls}-list-item-thumbnail`]: true, - [`${prefixCls}-list-item-file`]: mergedStatus.value !== "uploading" - }; - icon = createVNode("div", { - "class": uploadingClassName - }, [iconNode]); - } else { - const thumbnail = (isImgUrl === null || isImgUrl === void 0 ? void 0 : isImgUrl(file)) ? createVNode("img", { - "src": file.thumbUrl || file.url, - "alt": file.name, - "class": `${prefixCls}-list-item-image`, - "crossorigin": file.crossOrigin - }, null) : iconNode; - const aClassName = { - [`${prefixCls}-list-item-thumbnail`]: true, - [`${prefixCls}-list-item-file`]: isImgUrl && !isImgUrl(file) - }; - icon = createVNode("a", { - "class": aClassName, - "onClick": (e3) => onPreview(file, e3), - "href": file.url || file.thumbUrl, - "target": "_blank", - "rel": "noopener noreferrer" - }, [thumbnail]); - } - } - const infoUploadingClass = { - [`${prefixCls}-list-item`]: true, - [`${prefixCls}-list-item-${mergedStatus.value}`]: true - }; - const linkProps2 = typeof file.linkProps === "string" ? JSON.parse(file.linkProps) : file.linkProps; - const removeIcon = showRemoveIcon ? actionIconRender({ - customIcon: customRemoveIcon ? customRemoveIcon({ - file - }) : createVNode(DeleteOutlined_default, null, null), - callback: () => onClose(file), - prefixCls, - title: locale4.removeFile - }) : null; - const downloadIcon = showDownloadIcon && mergedStatus.value === "done" ? actionIconRender({ - customIcon: customDownloadIcon ? customDownloadIcon({ - file - }) : createVNode(DownloadOutlined_default, null, null), - callback: () => onDownload(file), - prefixCls, - title: locale4.downloadFile - }) : null; - const downloadOrDelete = listType !== "picture-card" && createVNode("span", { - "key": "download-delete", - "class": [`${prefixCls}-list-item-actions`, { - picture: listType === "picture" - }] - }, [downloadIcon, removeIcon]); - const listItemNameClass = `${prefixCls}-list-item-name`; - const fileName = file.url ? [createVNode("a", _objectSpread2(_objectSpread2({ - "key": "view", - "target": "_blank", - "rel": "noopener noreferrer", - "class": listItemNameClass, - "title": file.name - }, linkProps2), {}, { - "href": file.url, - "onClick": (e3) => onPreview(file, e3) - }), [file.name]), downloadOrDelete] : [createVNode("span", { - "key": "view", - "class": listItemNameClass, - "onClick": (e3) => onPreview(file, e3), - "title": file.name - }, [file.name]), downloadOrDelete]; - const previewStyle = { - pointerEvents: "none", - opacity: 0.5 - }; - const previewIcon = showPreviewIcon ? createVNode("a", { - "href": file.url || file.thumbUrl, - "target": "_blank", - "rel": "noopener noreferrer", - "style": file.url || file.thumbUrl ? void 0 : previewStyle, - "onClick": (e3) => onPreview(file, e3), - "title": locale4.previewFile - }, [customPreviewIcon ? customPreviewIcon({ - file - }) : createVNode(EyeOutlined_default, null, null)]) : null; - const pictureCardActions = listType === "picture-card" && mergedStatus.value !== "uploading" && createVNode("span", { - "class": `${prefixCls}-list-item-actions` - }, [previewIcon, mergedStatus.value === "done" && downloadIcon, removeIcon]); - const dom = createVNode("div", { - "class": infoUploadingClass - }, [icon, fileName, pictureCardActions, showProgress.value && createVNode(transition_default, transitionProps.value, { - default: () => [withDirectives(createVNode("div", { - "class": `${prefixCls}-list-item-progress` - }, ["percent" in file ? createVNode(progress_default2, _objectSpread2(_objectSpread2({}, progressProps2), {}, { - "type": "line", - "percent": file.percent - }), null) : null]), [[vShow, mergedStatus.value === "uploading"]])] - })]); - const listContainerNameClass = { - [`${prefixCls}-list-item-container`]: true, - [`${className}`]: !!className - }; - const message = file.response && typeof file.response === "string" ? file.response : ((_a3 = file.error) === null || _a3 === void 0 ? void 0 : _a3.statusText) || ((_b = file.error) === null || _b === void 0 ? void 0 : _b.message) || locale4.uploadError; - const item = mergedStatus.value === "error" ? createVNode(tooltip_default, { - "title": message, - "getPopupContainer": (node2) => node2.parentNode - }, { - default: () => [dom] - }) : dom; - return createVNode("div", { - "class": listContainerNameClass, - "style": style - }, [itemRender ? itemRender({ - originNode: item, - file, - fileList: items, - actions: { - download: onDownload.bind(null, file), - preview: onPreview.bind(null, file), - remove: onClose.bind(null, file) - } - }) : item]); - }; - } -}); - -// node_modules/ant-design-vue/es/upload/UploadList/index.js -var HackSlot = (_2, _ref) => { - let { - slots - } = _ref; - var _a2; - return filterEmpty((_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots))[0]; -}; -var UploadList_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AUploadList", - props: initDefaultProps_default(uploadListProps(), { - listType: "text", - progress: { - strokeWidth: 2, - showInfo: false - }, - showRemoveIcon: true, - showDownloadIcon: false, - showPreviewIcon: true, - previewFile: previewImage, - isImageUrl, - items: [], - appendActionVisible: true - }), - setup(props4, _ref2) { - let { - slots, - expose - } = _ref2; - const motionAppear = shallowRef(false); - onMounted(() => { - motionAppear.value == true; - }); - const mergedItems = shallowRef([]); - watch(() => props4.items, function() { - let val = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; - mergedItems.value = val.slice(); - }, { - immediate: true, - deep: true - }); - watchEffect(() => { - if (props4.listType !== "picture" && props4.listType !== "picture-card") { - return; - } - let hasUpdate = false; - (props4.items || []).forEach((file, index3) => { - if (typeof document === "undefined" || typeof window === "undefined" || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== void 0) { - return; - } - file.thumbUrl = ""; - if (props4.previewFile) { - props4.previewFile(file.originFileObj).then((previewDataUrl) => { - const thumbUrl = previewDataUrl || ""; - if (thumbUrl !== file.thumbUrl) { - mergedItems.value[index3].thumbUrl = thumbUrl; - hasUpdate = true; - } - }); - } - }); - if (hasUpdate) { - triggerRef(mergedItems); - } - }); - const onInternalPreview = (file, e3) => { - if (!props4.onPreview) { - return; - } - e3 === null || e3 === void 0 ? void 0 : e3.preventDefault(); - return props4.onPreview(file); - }; - const onInternalDownload = (file) => { - if (typeof props4.onDownload === "function") { - props4.onDownload(file); - } else if (file.url) { - window.open(file.url); - } - }; - const onInternalClose = (file) => { - var _a2; - (_a2 = props4.onRemove) === null || _a2 === void 0 ? void 0 : _a2.call(props4, file); - }; - const internalIconRender = (_ref3) => { - let { - file - } = _ref3; - const iconRender = props4.iconRender || slots.iconRender; - if (iconRender) { - return iconRender({ - file, - listType: props4.listType - }); - } - const isLoading = file.status === "uploading"; - const fileIcon = props4.isImageUrl && props4.isImageUrl(file) ? createVNode(PictureTwoTone_default, null, null) : createVNode(FileTwoTone_default, null, null); - let icon = isLoading ? createVNode(LoadingOutlined_default, null, null) : createVNode(PaperClipOutlined_default, null, null); - if (props4.listType === "picture") { - icon = isLoading ? createVNode(LoadingOutlined_default, null, null) : fileIcon; - } else if (props4.listType === "picture-card") { - icon = isLoading ? props4.locale.uploading : fileIcon; - } - return icon; - }; - const actionIconRender = (opt) => { - const { - customIcon, - callback, - prefixCls: prefixCls2, - title - } = opt; - const btnProps = { - type: "text", - size: "small", - title, - onClick: () => { - callback(); - }, - class: `${prefixCls2}-list-item-action` - }; - if (isValidElement(customIcon)) { - return createVNode(button_default2, btnProps, { - icon: () => customIcon - }); - } - return createVNode(button_default2, btnProps, { - default: () => [createVNode("span", null, [customIcon])] - }); - }; - expose({ - handlePreview: onInternalPreview, - handleDownload: onInternalDownload - }); - const { - prefixCls, - rootPrefixCls - } = useConfigInject_default("upload", props4); - const listClassNames = computed(() => ({ - [`${prefixCls.value}-list`]: true, - [`${prefixCls.value}-list-${props4.listType}`]: true - })); - const transitionGroupProps = computed(() => { - const motion = _extends({}, collapseMotion_default(`${rootPrefixCls.value}-motion-collapse`)); - delete motion.onAfterAppear; - delete motion.onAfterEnter; - delete motion.onAfterLeave; - const motionConfig = _extends(_extends({}, getTransitionGroupProps(`${prefixCls.value}-${props4.listType === "picture-card" ? "animate-inline" : "animate"}`)), { - class: listClassNames.value, - appear: motionAppear.value - }); - return props4.listType !== "picture-card" ? _extends(_extends({}, motion), motionConfig) : motionConfig; - }); - return () => { - const { - listType, - locale: locale4, - isImageUrl: isImgUrl, - showPreviewIcon, - showRemoveIcon, - showDownloadIcon, - removeIcon, - previewIcon, - downloadIcon, - progress, - appendAction, - itemRender, - appendActionVisible - } = props4; - const appendActionDom = appendAction === null || appendAction === void 0 ? void 0 : appendAction(); - const items = mergedItems.value; - return createVNode(TransitionGroup, _objectSpread2(_objectSpread2({}, transitionGroupProps.value), {}, { - "tag": "div" - }), { - default: () => [items.map((file) => { - const { - uid: key2 - } = file; - return createVNode(ListItem_default2, { - "key": key2, - "locale": locale4, - "prefixCls": prefixCls.value, - "file": file, - "items": items, - "progress": progress, - "listType": listType, - "isImgUrl": isImgUrl, - "showPreviewIcon": showPreviewIcon, - "showRemoveIcon": showRemoveIcon, - "showDownloadIcon": showDownloadIcon, - "onPreview": onInternalPreview, - "onDownload": onInternalDownload, - "onClose": onInternalClose, - "removeIcon": removeIcon, - "previewIcon": previewIcon, - "downloadIcon": downloadIcon, - "itemRender": itemRender - }, _extends(_extends({}, slots), { - iconRender: internalIconRender, - actionIconRender - })); - }), appendAction ? withDirectives(createVNode(HackSlot, { - "key": "__ant_upload_appendAction" - }, { - default: () => appendActionDom - }), [[vShow, !!appendActionVisible]]) : null] - }); - }; - } -}); - -// node_modules/ant-design-vue/es/upload/style/dragger.js -var genDraggerStyle = (token2) => { - const { - componentCls, - iconCls - } = token2; - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-drag`]: { - position: "relative", - width: "100%", - height: "100%", - textAlign: "center", - background: token2.colorFillAlter, - border: `${token2.lineWidth}px dashed ${token2.colorBorder}`, - borderRadius: token2.borderRadiusLG, - cursor: "pointer", - transition: `border-color ${token2.motionDurationSlow}`, - [componentCls]: { - padding: `${token2.padding}px 0` - }, - [`${componentCls}-btn`]: { - display: "table", - width: "100%", - height: "100%", - outline: "none" - }, - [`${componentCls}-drag-container`]: { - display: "table-cell", - verticalAlign: "middle" - }, - [`&:not(${componentCls}-disabled):hover`]: { - borderColor: token2.colorPrimaryHover - }, - [`p${componentCls}-drag-icon`]: { - marginBottom: token2.margin, - [iconCls]: { - color: token2.colorPrimary, - fontSize: token2.uploadThumbnailSize - } - }, - [`p${componentCls}-text`]: { - margin: `0 0 ${token2.marginXXS}px`, - color: token2.colorTextHeading, - fontSize: token2.fontSizeLG - }, - [`p${componentCls}-hint`]: { - color: token2.colorTextDescription, - fontSize: token2.fontSize - }, - // ===================== Disabled ===================== - [`&${componentCls}-disabled`]: { - cursor: "not-allowed", - [`p${componentCls}-drag-icon ${iconCls}, - p${componentCls}-text, - p${componentCls}-hint - `]: { - color: token2.colorTextDisabled - } - } - } - } - }; -}; -var dragger_default = genDraggerStyle; - -// node_modules/ant-design-vue/es/upload/style/list.js -var genListStyle = (token2) => { - const { - componentCls, - antCls, - iconCls, - fontSize, - lineHeight - } = token2; - const itemCls = `${componentCls}-list-item`; - const actionsCls = `${itemCls}-actions`; - const actionCls = `${itemCls}-action`; - const listItemHeightSM = Math.round(fontSize * lineHeight); - return { - [`${componentCls}-wrapper`]: { - [`${componentCls}-list`]: _extends(_extends({}, clearFix()), { - lineHeight: token2.lineHeight, - [itemCls]: { - position: "relative", - height: token2.lineHeight * fontSize, - marginTop: token2.marginXS, - fontSize, - display: "flex", - alignItems: "center", - transition: `background-color ${token2.motionDurationSlow}`, - "&:hover": { - backgroundColor: token2.controlItemBgHover - }, - [`${itemCls}-name`]: _extends(_extends({}, textEllipsis), { - padding: `0 ${token2.paddingXS}px`, - lineHeight, - flex: "auto", - transition: `all ${token2.motionDurationSlow}` - }), - [actionsCls]: { - [actionCls]: { - opacity: 0 - }, - [`${actionCls}${antCls}-btn-sm`]: { - height: listItemHeightSM, - border: 0, - lineHeight: 1, - // FIXME: should not override small button - "> span": { - transform: "scale(1)" - } - }, - [` - ${actionCls}:focus, - &.picture ${actionCls} - `]: { - opacity: 1 - }, - [iconCls]: { - color: token2.colorTextDescription, - transition: `all ${token2.motionDurationSlow}` - }, - [`&:hover ${iconCls}`]: { - color: token2.colorText - } - }, - [`${componentCls}-icon ${iconCls}`]: { - color: token2.colorTextDescription, - fontSize - }, - [`${itemCls}-progress`]: { - position: "absolute", - bottom: -token2.uploadProgressOffset, - width: "100%", - paddingInlineStart: fontSize + token2.paddingXS, - fontSize, - lineHeight: 0, - pointerEvents: "none", - "> div": { - margin: 0 - } - } - }, - [`${itemCls}:hover ${actionCls}`]: { - opacity: 1, - color: token2.colorText - }, - [`${itemCls}-error`]: { - color: token2.colorError, - [`${itemCls}-name, ${componentCls}-icon ${iconCls}`]: { - color: token2.colorError - }, - [actionsCls]: { - [`${iconCls}, ${iconCls}:hover`]: { - color: token2.colorError - }, - [actionCls]: { - opacity: 1 - } - } - }, - [`${componentCls}-list-item-container`]: { - transition: `opacity ${token2.motionDurationSlow}, height ${token2.motionDurationSlow}`, - // For smooth removing animation - "&::before": { - display: "table", - width: 0, - height: 0, - content: '""' - } - } - }) - } - }; -}; -var list_default3 = genListStyle; - -// node_modules/ant-design-vue/es/upload/style/motion.js -var uploadAnimateInlineIn = new Keyframes_default("uploadAnimateInlineIn", { - from: { - width: 0, - height: 0, - margin: 0, - padding: 0, - opacity: 0 - } -}); -var uploadAnimateInlineOut = new Keyframes_default("uploadAnimateInlineOut", { - to: { - width: 0, - height: 0, - margin: 0, - padding: 0, - opacity: 0 - } -}); -var genMotionStyle3 = (token2) => { - const { - componentCls - } = token2; - const inlineCls = `${componentCls}-animate-inline`; - return [{ - [`${componentCls}-wrapper`]: { - [`${inlineCls}-appear, ${inlineCls}-enter, ${inlineCls}-leave`]: { - animationDuration: token2.motionDurationSlow, - animationTimingFunction: token2.motionEaseInOutCirc, - animationFillMode: "forwards" - }, - [`${inlineCls}-appear, ${inlineCls}-enter`]: { - animationName: uploadAnimateInlineIn - }, - [`${inlineCls}-leave`]: { - animationName: uploadAnimateInlineOut - } - } - }, uploadAnimateInlineIn, uploadAnimateInlineOut]; -}; -var motion_default3 = genMotionStyle3; - -// node_modules/ant-design-vue/es/upload/style/picture.js -var genPictureStyle = (token2) => { - const { - componentCls, - iconCls, - uploadThumbnailSize, - uploadProgressOffset - } = token2; - const listCls = `${componentCls}-list`; - const itemCls = `${listCls}-item`; - return { - [`${componentCls}-wrapper`]: { - // ${listCls} 增加优先级 - [`${listCls}${listCls}-picture, ${listCls}${listCls}-picture-card`]: { - [itemCls]: { - position: "relative", - height: uploadThumbnailSize + token2.lineWidth * 2 + token2.paddingXS * 2, - padding: token2.paddingXS, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorBorder}`, - borderRadius: token2.borderRadiusLG, - "&:hover": { - background: "transparent" - }, - [`${itemCls}-thumbnail`]: _extends(_extends({}, textEllipsis), { - width: uploadThumbnailSize, - height: uploadThumbnailSize, - lineHeight: `${uploadThumbnailSize + token2.paddingSM}px`, - textAlign: "center", - flex: "none", - [iconCls]: { - fontSize: token2.fontSizeHeading2, - color: token2.colorPrimary - }, - img: { - display: "block", - width: "100%", - height: "100%", - overflow: "hidden" - } - }), - [`${itemCls}-progress`]: { - bottom: uploadProgressOffset, - width: `calc(100% - ${token2.paddingSM * 2}px)`, - marginTop: 0, - paddingInlineStart: uploadThumbnailSize + token2.paddingXS - } - }, - [`${itemCls}-error`]: { - borderColor: token2.colorError, - // Adjust the color of the error icon : https://github.com/ant-design/ant-design/pull/24160 - [`${itemCls}-thumbnail ${iconCls}`]: { - [`svg path[fill='#e6f7ff']`]: { - fill: token2.colorErrorBg - }, - [`svg path[fill='#1890ff']`]: { - fill: token2.colorError - } - } - }, - [`${itemCls}-uploading`]: { - borderStyle: "dashed", - [`${itemCls}-name`]: { - marginBottom: uploadProgressOffset - } - } - } - } - }; -}; -var genPictureCardStyle = (token2) => { - const { - componentCls, - iconCls, - fontSizeLG, - colorTextLightSolid - } = token2; - const listCls = `${componentCls}-list`; - const itemCls = `${listCls}-item`; - const uploadPictureCardSize = token2.uploadPicCardSize; - return { - [`${componentCls}-wrapper${componentCls}-picture-card-wrapper`]: _extends(_extends({}, clearFix()), { - display: "inline-block", - width: "100%", - [`${componentCls}${componentCls}-select`]: { - width: uploadPictureCardSize, - height: uploadPictureCardSize, - marginInlineEnd: token2.marginXS, - marginBottom: token2.marginXS, - textAlign: "center", - verticalAlign: "top", - backgroundColor: token2.colorFillAlter, - border: `${token2.lineWidth}px dashed ${token2.colorBorder}`, - borderRadius: token2.borderRadiusLG, - cursor: "pointer", - transition: `border-color ${token2.motionDurationSlow}`, - [`> ${componentCls}`]: { - display: "flex", - alignItems: "center", - justifyContent: "center", - height: "100%", - textAlign: "center" - }, - [`&:not(${componentCls}-disabled):hover`]: { - borderColor: token2.colorPrimary - } - }, - // list - [`${listCls}${listCls}-picture-card`]: { - [`${listCls}-item-container`]: { - display: "inline-block", - width: uploadPictureCardSize, - height: uploadPictureCardSize, - marginBlock: `0 ${token2.marginXS}px`, - marginInline: `0 ${token2.marginXS}px`, - verticalAlign: "top" - }, - "&::after": { - display: "none" - }, - [itemCls]: { - height: "100%", - margin: 0, - "&::before": { - position: "absolute", - zIndex: 1, - width: `calc(100% - ${token2.paddingXS * 2}px)`, - height: `calc(100% - ${token2.paddingXS * 2}px)`, - backgroundColor: token2.colorBgMask, - opacity: 0, - transition: `all ${token2.motionDurationSlow}`, - content: '" "' - } - }, - [`${itemCls}:hover`]: { - [`&::before, ${itemCls}-actions`]: { - opacity: 1 - } - }, - [`${itemCls}-actions`]: { - position: "absolute", - insetInlineStart: 0, - zIndex: 10, - width: "100%", - whiteSpace: "nowrap", - textAlign: "center", - opacity: 0, - transition: `all ${token2.motionDurationSlow}`, - [`${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: { - zIndex: 10, - width: fontSizeLG, - margin: `0 ${token2.marginXXS}px`, - fontSize: fontSizeLG, - cursor: "pointer", - transition: `all ${token2.motionDurationSlow}` - } - }, - [`${itemCls}-actions, ${itemCls}-actions:hover`]: { - [`${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: { - color: new TinyColor(colorTextLightSolid).setAlpha(0.65).toRgbString(), - "&:hover": { - color: colorTextLightSolid - } - } - }, - [`${itemCls}-thumbnail, ${itemCls}-thumbnail img`]: { - position: "static", - display: "block", - width: "100%", - height: "100%", - objectFit: "contain" - }, - [`${itemCls}-name`]: { - display: "none", - textAlign: "center" - }, - [`${itemCls}-file + ${itemCls}-name`]: { - position: "absolute", - bottom: token2.margin, - display: "block", - width: `calc(100% - ${token2.paddingXS * 2}px)` - }, - [`${itemCls}-uploading`]: { - [`&${itemCls}`]: { - backgroundColor: token2.colorFillAlter - }, - [`&::before, ${iconCls}-eye, ${iconCls}-download, ${iconCls}-delete`]: { - display: "none" - } - }, - [`${itemCls}-progress`]: { - bottom: token2.marginXL, - width: `calc(100% - ${token2.paddingXS * 2}px)`, - paddingInlineStart: 0 - } - } - }) - }; -}; - -// node_modules/ant-design-vue/es/upload/style/rtl.js -var genRtlStyle2 = (token2) => { - const { - componentCls - } = token2; - return { - [`${componentCls}-rtl`]: { - direction: "rtl" - } - }; -}; -var rtl_default4 = genRtlStyle2; - -// node_modules/ant-design-vue/es/upload/style/index.js -var genBaseStyle18 = (token2) => { - const { - componentCls, - colorTextDisabled - } = token2; - return { - [`${componentCls}-wrapper`]: _extends(_extends({}, resetComponent(token2)), { - [componentCls]: { - outline: 0, - "input[type='file']": { - cursor: "pointer" - } - }, - [`${componentCls}-select`]: { - display: "inline-block" - }, - [`${componentCls}-disabled`]: { - color: colorTextDisabled, - cursor: "not-allowed" - } - }) - }; -}; -var style_default59 = genComponentStyleHook("Upload", (token2) => { - const { - fontSizeHeading3, - fontSize, - lineHeight, - lineWidth, - controlHeightLG - } = token2; - const listItemHeightSM = Math.round(fontSize * lineHeight); - const uploadToken = merge(token2, { - uploadThumbnailSize: fontSizeHeading3 * 2, - uploadProgressOffset: listItemHeightSM / 2 + lineWidth, - uploadPicCardSize: controlHeightLG * 2.55 - }); - return [genBaseStyle18(uploadToken), dragger_default(uploadToken), genPictureStyle(uploadToken), genPictureCardStyle(uploadToken), list_default3(uploadToken), motion_default3(uploadToken), rtl_default4(uploadToken), collapse_default(uploadToken)]; -}); - -// node_modules/ant-design-vue/es/upload/Upload.js -var __awaiter4 = function(thisArg, _arguments, P2, generator2) { - function adopt(value) { - return value instanceof P2 ? value : new P2(function(resolve) { - resolve(value); - }); - } - return new (P2 || (P2 = Promise))(function(resolve, reject2) { - function fulfilled(value) { - try { - step(generator2.next(value)); - } catch (e3) { - reject2(e3); - } - } - function rejected(value) { - try { - step(generator2["throw"](value)); - } catch (e3) { - reject2(e3); - } - } - function step(result2) { - result2.done ? resolve(result2.value) : adopt(result2.value).then(fulfilled, rejected); - } - step((generator2 = generator2.apply(thisArg, _arguments || [])).next()); - }); -}; -var __rest76 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`; -var Upload_default2 = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AUpload", - inheritAttrs: false, - props: initDefaultProps_default(uploadProps2(), { - type: "select", - multiple: false, - action: "", - data: {}, - accept: "", - showUploadList: true, - listType: "text", - supportServerRender: true - }), - setup(props4, _ref) { - let { - slots, - attrs, - expose - } = _ref; - const formItemContext = useInjectFormItemContext(); - const { - prefixCls, - direction, - disabled - } = useConfigInject_default("upload", props4); - const [wrapSSR, hashId] = style_default59(prefixCls); - const disabledContext = useInjectDisabled(); - const mergedDisabled = computed(() => { - var _a2; - return (_a2 = disabled.value) !== null && _a2 !== void 0 ? _a2 : disabledContext.value; - }); - const [mergedFileList, setMergedFileList] = useMergedState(props4.defaultFileList || [], { - value: toRef(props4, "fileList"), - postState: (list) => { - const timestamp = Date.now(); - return (list !== null && list !== void 0 ? list : []).map((file, index3) => { - if (!file.uid && !Object.isFrozen(file)) { - file.uid = `__AUTO__${timestamp}_${index3}__`; - } - return file; - }); - } - }); - const dragState = ref("drop"); - const upload2 = ref(null); - onMounted(() => { - devWarning_default(props4.fileList !== void 0 || attrs.value === void 0, "Upload", "`value` is not a valid prop, do you mean `fileList`?"); - devWarning_default(props4.transformFile === void 0, "Upload", "`transformFile` is deprecated. Please use `beforeUpload` directly."); - devWarning_default(props4.remove === void 0, "Upload", "`remove` props is deprecated. Please use `remove` event."); - }); - const onInternalChange = (file, changedFileList, event) => { - var _a2, _b; - let cloneList = [...changedFileList]; - if (props4.maxCount === 1) { - cloneList = cloneList.slice(-1); - } else if (props4.maxCount) { - cloneList = cloneList.slice(0, props4.maxCount); - } - setMergedFileList(cloneList); - const changeInfo = { - file, - fileList: cloneList - }; - if (event) { - changeInfo.event = event; - } - (_a2 = props4["onUpdate:fileList"]) === null || _a2 === void 0 ? void 0 : _a2.call(props4, changeInfo.fileList); - (_b = props4.onChange) === null || _b === void 0 ? void 0 : _b.call(props4, changeInfo); - formItemContext.onFieldChange(); - }; - const mergedBeforeUpload = (file, fileListArgs) => __awaiter4(this, void 0, void 0, function* () { - const { - beforeUpload, - transformFile - } = props4; - let parsedFile = file; - if (beforeUpload) { - const result2 = yield beforeUpload(file, fileListArgs); - if (result2 === false) { - return false; - } - delete file[LIST_IGNORE]; - if (result2 === LIST_IGNORE) { - Object.defineProperty(file, LIST_IGNORE, { - value: true, - configurable: true - }); - return false; - } - if (typeof result2 === "object" && result2) { - parsedFile = result2; - } - } - if (transformFile) { - parsedFile = yield transformFile(parsedFile); - } - return parsedFile; - }); - const onBatchStart = (batchFileInfoList) => { - const filteredFileInfoList = batchFileInfoList.filter((info) => !info.file[LIST_IGNORE]); - if (!filteredFileInfoList.length) { - return; - } - const objectFileList = filteredFileInfoList.map((info) => file2Obj(info.file)); - let newFileList = [...mergedFileList.value]; - objectFileList.forEach((fileObj) => { - newFileList = updateFileList(fileObj, newFileList); - }); - objectFileList.forEach((fileObj, index3) => { - let triggerFileObj = fileObj; - if (!filteredFileInfoList[index3].parsedFile) { - const { - originFileObj - } = fileObj; - let clone3; - try { - clone3 = new File([originFileObj], originFileObj.name, { - type: originFileObj.type - }); - } catch (e3) { - clone3 = new Blob([originFileObj], { - type: originFileObj.type - }); - clone3.name = originFileObj.name; - clone3.lastModifiedDate = /* @__PURE__ */ new Date(); - clone3.lastModified = (/* @__PURE__ */ new Date()).getTime(); - } - clone3.uid = fileObj.uid; - triggerFileObj = clone3; - } else { - fileObj.status = "uploading"; - } - onInternalChange(triggerFileObj, newFileList); - }); - }; - const onSuccess = (response, file, xhr) => { - try { - if (typeof response === "string") { - response = JSON.parse(response); - } - } catch (e3) { - } - if (!getFileItem(file, mergedFileList.value)) { - return; - } - const targetItem = file2Obj(file); - targetItem.status = "done"; - targetItem.percent = 100; - targetItem.response = response; - targetItem.xhr = xhr; - const nextFileList = updateFileList(targetItem, mergedFileList.value); - onInternalChange(targetItem, nextFileList); - }; - const onProgress = (e3, file) => { - if (!getFileItem(file, mergedFileList.value)) { - return; - } - const targetItem = file2Obj(file); - targetItem.status = "uploading"; - targetItem.percent = e3.percent; - const nextFileList = updateFileList(targetItem, mergedFileList.value); - onInternalChange(targetItem, nextFileList, e3); - }; - const onError = (error, response, file) => { - if (!getFileItem(file, mergedFileList.value)) { - return; - } - const targetItem = file2Obj(file); - targetItem.error = error; - targetItem.response = response; - targetItem.status = "error"; - const nextFileList = updateFileList(targetItem, mergedFileList.value); - onInternalChange(targetItem, nextFileList); - }; - const handleRemove = (file) => { - let currentFile; - const mergedRemove = props4.onRemove || props4.remove; - Promise.resolve(typeof mergedRemove === "function" ? mergedRemove(file) : mergedRemove).then((ret) => { - var _a2, _b; - if (ret === false) { - return; - } - const removedFileList = removeFileItem(file, mergedFileList.value); - if (removedFileList) { - currentFile = _extends(_extends({}, file), { - status: "removed" - }); - (_a2 = mergedFileList.value) === null || _a2 === void 0 ? void 0 : _a2.forEach((item) => { - const matchKey = currentFile.uid !== void 0 ? "uid" : "name"; - if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) { - item.status = "removed"; - } - }); - (_b = upload2.value) === null || _b === void 0 ? void 0 : _b.abort(currentFile); - onInternalChange(currentFile, removedFileList); - } - }); - }; - const onFileDrop = (e3) => { - var _a2; - dragState.value = e3.type; - if (e3.type === "drop") { - (_a2 = props4.onDrop) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - } - }; - expose({ - onBatchStart, - onSuccess, - onProgress, - onError, - fileList: mergedFileList, - upload: upload2 - }); - const [locale4] = useLocaleReceiver("Upload", en_US_default6.Upload, computed(() => props4.locale)); - const renderUploadList = (button, buttonVisible) => { - const { - removeIcon, - previewIcon, - downloadIcon, - previewFile, - onPreview, - onDownload, - isImageUrl: isImageUrl2, - progress, - itemRender, - iconRender, - showUploadList - } = props4; - const { - showDownloadIcon, - showPreviewIcon, - showRemoveIcon - } = typeof showUploadList === "boolean" ? {} : showUploadList; - return showUploadList ? createVNode(UploadList_default, { - "prefixCls": prefixCls.value, - "listType": props4.listType, - "items": mergedFileList.value, - "previewFile": previewFile, - "onPreview": onPreview, - "onDownload": onDownload, - "onRemove": handleRemove, - "showRemoveIcon": !mergedDisabled.value && showRemoveIcon, - "showPreviewIcon": showPreviewIcon, - "showDownloadIcon": showDownloadIcon, - "removeIcon": removeIcon, - "previewIcon": previewIcon, - "downloadIcon": downloadIcon, - "iconRender": iconRender, - "locale": locale4.value, - "isImageUrl": isImageUrl2, - "progress": progress, - "itemRender": itemRender, - "appendActionVisible": buttonVisible, - "appendAction": button - }, _extends({}, slots)) : button === null || button === void 0 ? void 0 : button(); - }; - return () => { - var _a2, _b, _c; - const { - listType, - type: type4 - } = props4; - const { - class: className, - style: styleName - } = attrs, transAttrs = __rest76(attrs, ["class", "style"]); - const rcUploadProps = _extends(_extends(_extends({ - onBatchStart, - onError, - onProgress, - onSuccess - }, transAttrs), props4), { - id: (_a2 = props4.id) !== null && _a2 !== void 0 ? _a2 : formItemContext.id.value, - prefixCls: prefixCls.value, - beforeUpload: mergedBeforeUpload, - onChange: void 0, - disabled: mergedDisabled.value - }); - delete rcUploadProps.remove; - if (!slots.default || mergedDisabled.value) { - delete rcUploadProps.id; - } - const rtlCls = { - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }; - if (type4 === "drag") { - const dragCls = classNames_default(prefixCls.value, { - [`${prefixCls.value}-drag`]: true, - [`${prefixCls.value}-drag-uploading`]: mergedFileList.value.some((file) => file.status === "uploading"), - [`${prefixCls.value}-drag-hover`]: dragState.value === "dragover", - [`${prefixCls.value}-disabled`]: mergedDisabled.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, attrs.class, hashId.value); - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(`${prefixCls.value}-wrapper`, rtlCls, className, hashId.value) - }), [createVNode("div", { - "class": dragCls, - "onDrop": onFileDrop, - "onDragover": onFileDrop, - "onDragleave": onFileDrop, - "style": attrs.style - }, [createVNode(vc_upload_default, _objectSpread2(_objectSpread2({}, rcUploadProps), {}, { - "ref": upload2, - "class": `${prefixCls.value}-btn` - }), _objectSpread2({ - default: () => [createVNode("div", { - "class": `${prefixCls.value}-drag-container` - }, [(_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots)])] - }, slots))]), renderUploadList()])); - } - const uploadButtonCls = classNames_default(prefixCls.value, { - [`${prefixCls.value}-select`]: true, - [`${prefixCls.value}-select-${listType}`]: true, - [`${prefixCls.value}-disabled`]: mergedDisabled.value, - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }); - const children = flattenChildren((_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots)); - const renderUploadButton = (uploadButtonStyle) => createVNode("div", { - "class": uploadButtonCls, - "style": uploadButtonStyle - }, [createVNode(vc_upload_default, _objectSpread2(_objectSpread2({}, rcUploadProps), {}, { - "ref": upload2 - }), slots)]); - if (listType === "picture-card") { - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(`${prefixCls.value}-wrapper`, `${prefixCls.value}-picture-card-wrapper`, rtlCls, attrs.class, hashId.value) - }), [renderUploadList(renderUploadButton, !!(children && children.length))])); - } - return wrapSSR(createVNode("span", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(`${prefixCls.value}-wrapper`, rtlCls, attrs.class, hashId.value) - }), [renderUploadButton(children && children.length ? void 0 : { - display: "none" - }), renderUploadList()])); - }; - } -}); - -// node_modules/ant-design-vue/es/upload/Dragger.js -var __rest77 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Dragger_default = defineComponent({ - compatConfig: { - MODE: 3 - }, - name: "AUploadDragger", - inheritAttrs: false, - props: uploadProps2(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - return () => { - const { - height - } = props4, restProps = __rest77(props4, ["height"]); - const { - style - } = attrs, restAttrs = __rest77(attrs, ["style"]); - const draggerProps = _extends(_extends(_extends({}, restProps), restAttrs), { - type: "drag", - style: _extends(_extends({}, style), { - height: typeof height === "number" ? `${height}px` : height - }) - }); - return createVNode(Upload_default2, draggerProps, slots); - }; - } -}); - -// node_modules/ant-design-vue/es/upload/index.js -var UploadDragger = Dragger_default; -var upload_default = _extends(Upload_default2, { - Dragger: Dragger_default, - LIST_IGNORE, - install(app) { - app.component(Upload_default2.name, Upload_default2); - app.component(Dragger_default.name, Dragger_default); - return app; - } -}); - -// node_modules/ant-design-vue/es/watermark/utils.js -function toLowercaseSeparator(key2) { - return key2.replace(/([A-Z])/g, "-$1").toLowerCase(); -} -function getStyleStr(style) { - return Object.keys(style).map((key2) => `${toLowercaseSeparator(key2)}: ${style[key2]};`).join(" "); -} -function getPixelRatio() { - return window.devicePixelRatio || 1; -} -function rotateWatermark(ctx, rotateX, rotateY, rotate) { - ctx.translate(rotateX, rotateY); - ctx.rotate(Math.PI / 180 * Number(rotate)); - ctx.translate(-rotateX, -rotateY); -} -var reRendering = (mutation, watermarkElement) => { - let flag = false; - if (mutation.removedNodes.length) { - flag = Array.from(mutation.removedNodes).some((node2) => node2 === watermarkElement); - } - if (mutation.type === "attributes" && mutation.target === watermarkElement) { - flag = true; - } - return flag; -}; - -// node_modules/ant-design-vue/es/_util/hooks/_vueuse/useMutationObserver.js -var __rest78 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -function useMutationObserver(target, callback) { - let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - const { - window: window2 = defaultWindow - } = options, mutationOptions = __rest78(options, ["window"]); - let observer; - const isSupported = useSupported(() => window2 && "MutationObserver" in window2); - const cleanup2 = () => { - if (observer) { - observer.disconnect(); - observer = void 0; - } - }; - const stopWatch = watch(() => unrefElement(target), (el) => { - cleanup2(); - if (isSupported.value && window2 && el) { - observer = new MutationObserver(callback); - observer.observe(el, mutationOptions); - } - }, { - immediate: true - }); - const stop = () => { - cleanup2(); - stopWatch(); - }; - tryOnScopeDispose(stop); - return { - isSupported, - stop - }; -} - -// node_modules/ant-design-vue/es/watermark/index.js -var BaseSize = 2; -var FontGap = 3; -var watermarkProps = () => ({ - zIndex: Number, - rotate: Number, - width: Number, - height: Number, - image: String, - content: someType([String, Array]), - font: objectType(), - rootClassName: String, - gap: arrayType(), - offset: arrayType() -}); -var Watermark = defineComponent({ - name: "AWatermark", - inheritAttrs: false, - props: initDefaultProps_default(watermarkProps(), { - zIndex: 9, - rotate: -22, - font: {}, - gap: [100, 100] - }), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const [, token2] = useToken(); - const containerRef = shallowRef(); - const watermarkRef = shallowRef(); - const stopObservation = shallowRef(false); - const gapX = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.gap) === null || _a2 === void 0 ? void 0 : _a2[0]) !== null && _b !== void 0 ? _b : 100; - }); - const gapY = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.gap) === null || _a2 === void 0 ? void 0 : _a2[1]) !== null && _b !== void 0 ? _b : 100; - }); - const gapXCenter = computed(() => gapX.value / 2); - const gapYCenter = computed(() => gapY.value / 2); - const offsetLeft = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.offset) === null || _a2 === void 0 ? void 0 : _a2[0]) !== null && _b !== void 0 ? _b : gapXCenter.value; - }); - const offsetTop = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.offset) === null || _a2 === void 0 ? void 0 : _a2[1]) !== null && _b !== void 0 ? _b : gapYCenter.value; - }); - const fontSize = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.font) === null || _a2 === void 0 ? void 0 : _a2.fontSize) !== null && _b !== void 0 ? _b : token2.value.fontSizeLG; - }); - const fontWeight = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.font) === null || _a2 === void 0 ? void 0 : _a2.fontWeight) !== null && _b !== void 0 ? _b : "normal"; - }); - const fontStyle = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.font) === null || _a2 === void 0 ? void 0 : _a2.fontStyle) !== null && _b !== void 0 ? _b : "normal"; - }); - const fontFamily = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.font) === null || _a2 === void 0 ? void 0 : _a2.fontFamily) !== null && _b !== void 0 ? _b : "sans-serif"; - }); - const color = computed(() => { - var _a2, _b; - return (_b = (_a2 = props4.font) === null || _a2 === void 0 ? void 0 : _a2.color) !== null && _b !== void 0 ? _b : token2.value.colorFill; - }); - const markStyle = computed(() => { - var _a2; - const markStyle2 = { - zIndex: (_a2 = props4.zIndex) !== null && _a2 !== void 0 ? _a2 : 9, - position: "absolute", - left: 0, - top: 0, - width: "100%", - height: "100%", - pointerEvents: "none", - backgroundRepeat: "repeat" - }; - let positionLeft = offsetLeft.value - gapXCenter.value; - let positionTop = offsetTop.value - gapYCenter.value; - if (positionLeft > 0) { - markStyle2.left = `${positionLeft}px`; - markStyle2.width = `calc(100% - ${positionLeft}px)`; - positionLeft = 0; - } - if (positionTop > 0) { - markStyle2.top = `${positionTop}px`; - markStyle2.height = `calc(100% - ${positionTop}px)`; - positionTop = 0; - } - markStyle2.backgroundPosition = `${positionLeft}px ${positionTop}px`; - return markStyle2; - }); - const destroyWatermark = () => { - if (watermarkRef.value) { - watermarkRef.value.remove(); - watermarkRef.value = void 0; - } - }; - const appendWatermark = (base64Url, markWidth) => { - var _a2; - if (containerRef.value && watermarkRef.value) { - stopObservation.value = true; - watermarkRef.value.setAttribute("style", getStyleStr(_extends(_extends({}, markStyle.value), { - backgroundImage: `url('${base64Url}')`, - backgroundSize: `${(gapX.value + markWidth) * BaseSize}px` - }))); - (_a2 = containerRef.value) === null || _a2 === void 0 ? void 0 : _a2.append(watermarkRef.value); - setTimeout(() => { - stopObservation.value = false; - }); - } - }; - const getMarkSize = (ctx) => { - let defaultWidth = 120; - let defaultHeight = 64; - const content = props4.content; - const image = props4.image; - const width = props4.width; - const height = props4.height; - if (!image && ctx.measureText) { - ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`; - const contents = Array.isArray(content) ? content : [content]; - const widths = contents.map((item) => ctx.measureText(item).width); - defaultWidth = Math.ceil(Math.max(...widths)); - defaultHeight = Number(fontSize.value) * contents.length + (contents.length - 1) * FontGap; - } - return [width !== null && width !== void 0 ? width : defaultWidth, height !== null && height !== void 0 ? height : defaultHeight]; - }; - const fillTexts = (ctx, drawX, drawY, drawWidth, drawHeight) => { - const ratio = getPixelRatio(); - const content = props4.content; - const mergedFontSize = Number(fontSize.value) * ratio; - ctx.font = `${fontStyle.value} normal ${fontWeight.value} ${mergedFontSize}px/${drawHeight}px ${fontFamily.value}`; - ctx.fillStyle = color.value; - ctx.textAlign = "center"; - ctx.textBaseline = "top"; - ctx.translate(drawWidth / 2, 0); - const contents = Array.isArray(content) ? content : [content]; - contents === null || contents === void 0 ? void 0 : contents.forEach((item, index3) => { - ctx.fillText(item !== null && item !== void 0 ? item : "", drawX, drawY + index3 * (mergedFontSize + FontGap * ratio)); - }); - }; - const renderWatermark = () => { - var _a2; - const canvas = document.createElement("canvas"); - const ctx = canvas.getContext("2d"); - const image = props4.image; - const rotate = (_a2 = props4.rotate) !== null && _a2 !== void 0 ? _a2 : -22; - if (ctx) { - if (!watermarkRef.value) { - watermarkRef.value = document.createElement("div"); - } - const ratio = getPixelRatio(); - const [markWidth, markHeight] = getMarkSize(ctx); - const canvasWidth = (gapX.value + markWidth) * ratio; - const canvasHeight = (gapY.value + markHeight) * ratio; - canvas.setAttribute("width", `${canvasWidth * BaseSize}px`); - canvas.setAttribute("height", `${canvasHeight * BaseSize}px`); - const drawX = gapX.value * ratio / 2; - const drawY = gapY.value * ratio / 2; - const drawWidth = markWidth * ratio; - const drawHeight = markHeight * ratio; - const rotateX = (drawWidth + gapX.value * ratio) / 2; - const rotateY = (drawHeight + gapY.value * ratio) / 2; - const alternateDrawX = drawX + canvasWidth; - const alternateDrawY = drawY + canvasHeight; - const alternateRotateX = rotateX + canvasWidth; - const alternateRotateY = rotateY + canvasHeight; - ctx.save(); - rotateWatermark(ctx, rotateX, rotateY, rotate); - if (image) { - const img = new Image(); - img.onload = () => { - ctx.drawImage(img, drawX, drawY, drawWidth, drawHeight); - ctx.restore(); - rotateWatermark(ctx, alternateRotateX, alternateRotateY, rotate); - ctx.drawImage(img, alternateDrawX, alternateDrawY, drawWidth, drawHeight); - appendWatermark(canvas.toDataURL(), markWidth); - }; - img.crossOrigin = "anonymous"; - img.referrerPolicy = "no-referrer"; - img.src = image; - } else { - fillTexts(ctx, drawX, drawY, drawWidth, drawHeight); - ctx.restore(); - rotateWatermark(ctx, alternateRotateX, alternateRotateY, rotate); - fillTexts(ctx, alternateDrawX, alternateDrawY, drawWidth, drawHeight); - appendWatermark(canvas.toDataURL(), markWidth); - } - } - }; - onMounted(() => { - renderWatermark(); - }); - watch(() => [props4, token2.value.colorFill, token2.value.fontSizeLG], () => { - renderWatermark(); - }, { - deep: true, - flush: "post" - }); - onBeforeUnmount(() => { - destroyWatermark(); - }); - const onMutate = (mutations) => { - if (stopObservation.value) { - return; - } - mutations.forEach((mutation) => { - if (reRendering(mutation, watermarkRef.value)) { - destroyWatermark(); - renderWatermark(); - } - }); - }; - useMutationObserver(containerRef, onMutate, { - attributes: true, - subtree: true, - childList: true, - attributeFilter: ["style", "class"] - }); - return () => { - var _a2; - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "ref": containerRef, - "class": [attrs.class, props4.rootClassName], - "style": [{ - position: "relative" - }, attrs.style] - }), [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)]); - }; - } -}); -var watermark_default = withInstall(Watermark); - -// node_modules/ant-design-vue/es/segmented/style/index.js -function getItemDisabledStyle(cls, token2) { - return { - [`${cls}, ${cls}:hover, ${cls}:focus`]: { - color: token2.colorTextDisabled, - cursor: "not-allowed" - } - }; -} -function getItemSelectedStyle(token2) { - return { - backgroundColor: token2.bgColorSelected, - boxShadow: token2.boxShadow - }; -} -var segmentedTextEllipsisCss = _extends({ - overflow: "hidden" -}, textEllipsis); -var genSegmentedStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends(_extends(_extends(_extends({}, resetComponent(token2)), { - display: "inline-block", - padding: token2.segmentedContainerPadding, - color: token2.labelColor, - backgroundColor: token2.bgColor, - borderRadius: token2.borderRadius, - transition: `all ${token2.motionDurationMid} ${token2.motionEaseInOut}`, - [`${componentCls}-group`]: { - position: "relative", - display: "flex", - alignItems: "stretch", - justifyItems: "flex-start", - width: "100%" - }, - // RTL styles - [`&${componentCls}-rtl`]: { - direction: "rtl" - }, - // block styles - [`&${componentCls}-block`]: { - display: "flex" - }, - [`&${componentCls}-block ${componentCls}-item`]: { - flex: 1, - minWidth: 0 - }, - // item styles - [`${componentCls}-item`]: { - position: "relative", - textAlign: "center", - cursor: "pointer", - transition: `color ${token2.motionDurationMid} ${token2.motionEaseInOut}`, - borderRadius: token2.borderRadiusSM, - "&-selected": _extends(_extends({}, getItemSelectedStyle(token2)), { - color: token2.labelColorHover - }), - "&::after": { - content: '""', - position: "absolute", - width: "100%", - height: "100%", - top: 0, - insetInlineStart: 0, - borderRadius: "inherit", - transition: `background-color ${token2.motionDurationMid}`, - pointerEvents: "none" - }, - [`&:hover:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)`]: { - color: token2.labelColorHover, - "&::after": { - backgroundColor: token2.bgColorHover - } - }, - "&-label": _extends({ - minHeight: token2.controlHeight - token2.segmentedContainerPadding * 2, - lineHeight: `${token2.controlHeight - token2.segmentedContainerPadding * 2}px`, - padding: `0 ${token2.segmentedPaddingHorizontal}px` - }, segmentedTextEllipsisCss), - // syntactic sugar to add `icon` for Segmented Item - "&-icon + *": { - marginInlineStart: token2.marginSM / 2 - }, - "&-input": { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - width: 0, - height: 0, - opacity: 0, - pointerEvents: "none" - } - }, - // thumb styles - [`${componentCls}-thumb`]: _extends(_extends({}, getItemSelectedStyle(token2)), { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - width: 0, - height: "100%", - padding: `${token2.paddingXXS}px 0`, - borderRadius: token2.borderRadiusSM, - [`& ~ ${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)::after`]: { - backgroundColor: "transparent" - } - }), - // size styles - [`&${componentCls}-lg`]: { - borderRadius: token2.borderRadiusLG, - [`${componentCls}-item-label`]: { - minHeight: token2.controlHeightLG - token2.segmentedContainerPadding * 2, - lineHeight: `${token2.controlHeightLG - token2.segmentedContainerPadding * 2}px`, - padding: `0 ${token2.segmentedPaddingHorizontal}px`, - fontSize: token2.fontSizeLG - }, - [`${componentCls}-item, ${componentCls}-thumb`]: { - borderRadius: token2.borderRadius - } - }, - [`&${componentCls}-sm`]: { - borderRadius: token2.borderRadiusSM, - [`${componentCls}-item-label`]: { - minHeight: token2.controlHeightSM - token2.segmentedContainerPadding * 2, - lineHeight: `${token2.controlHeightSM - token2.segmentedContainerPadding * 2}px`, - padding: `0 ${token2.segmentedPaddingHorizontalSM}px` - }, - [`${componentCls}-item, ${componentCls}-thumb`]: { - borderRadius: token2.borderRadiusXS - } - } - }), getItemDisabledStyle(`&-disabled ${componentCls}-item`, token2)), getItemDisabledStyle(`${componentCls}-item-disabled`, token2)), { - // transition effect when `appear-active` - [`${componentCls}-thumb-motion-appear-active`]: { - transition: `transform ${token2.motionDurationSlow} ${token2.motionEaseInOut}, width ${token2.motionDurationSlow} ${token2.motionEaseInOut}`, - willChange: "transform, width" - } - }) - }; -}; -var style_default60 = genComponentStyleHook("Segmented", (token2) => { - const { - lineWidthBold, - lineWidth, - colorTextLabel, - colorText, - colorFillSecondary, - colorBgLayout, - colorBgElevated - } = token2; - const segmentedToken = merge(token2, { - segmentedPaddingHorizontal: token2.controlPaddingHorizontal - lineWidth, - segmentedPaddingHorizontalSM: token2.controlPaddingHorizontalSM - lineWidth, - segmentedContainerPadding: lineWidthBold, - labelColor: colorTextLabel, - labelColorHover: colorText, - bgColor: colorBgLayout, - bgColorHover: colorFillSecondary, - bgColorSelected: colorBgElevated - }); - return [genSegmentedStyle(segmentedToken)]; -}); - -// node_modules/ant-design-vue/es/segmented/src/MotionThumb.js -var calcThumbStyle = (targetElement) => targetElement ? { - left: targetElement.offsetLeft, - right: targetElement.parentElement.clientWidth - targetElement.clientWidth - targetElement.offsetLeft, - width: targetElement.clientWidth -} : null; -var toPX = (value) => value !== void 0 ? `${value}px` : void 0; -var MotionThumb = defineComponent({ - props: { - value: anyType(), - getValueIndex: anyType(), - prefixCls: anyType(), - motionName: anyType(), - onMotionStart: anyType(), - onMotionEnd: anyType(), - direction: anyType(), - containerRef: anyType() - }, - emits: ["motionStart", "motionEnd"], - setup(props4, _ref) { - let { - emit - } = _ref; - const thumbRef = ref(); - const findValueElement = (val) => { - var _a2; - const index3 = props4.getValueIndex(val); - const ele = (_a2 = props4.containerRef.value) === null || _a2 === void 0 ? void 0 : _a2.querySelectorAll(`.${props4.prefixCls}-item`)[index3]; - return (ele === null || ele === void 0 ? void 0 : ele.offsetParent) && ele; - }; - const prevStyle = ref(null); - const nextStyle = ref(null); - watch(() => props4.value, (value, prevValue) => { - const prev2 = findValueElement(prevValue); - const next2 = findValueElement(value); - const calcPrevStyle = calcThumbStyle(prev2); - const calcNextStyle = calcThumbStyle(next2); - prevStyle.value = calcPrevStyle; - nextStyle.value = calcNextStyle; - if (prev2 && next2) { - emit("motionStart"); - } else { - emit("motionEnd"); - } - }, { - flush: "post" - }); - const thumbStart = computed(() => { - var _a2, _b; - return props4.direction === "rtl" ? toPX(-((_a2 = prevStyle.value) === null || _a2 === void 0 ? void 0 : _a2.right)) : toPX((_b = prevStyle.value) === null || _b === void 0 ? void 0 : _b.left); - }); - const thumbActive = computed(() => { - var _a2, _b; - return props4.direction === "rtl" ? toPX(-((_a2 = nextStyle.value) === null || _a2 === void 0 ? void 0 : _a2.right)) : toPX((_b = nextStyle.value) === null || _b === void 0 ? void 0 : _b.left); - }); - let timeid; - const onAppearStart = (el) => { - clearTimeout(timeid); - nextTick(() => { - if (el) { - el.style.transform = `translateX(var(--thumb-start-left))`; - el.style.width = `var(--thumb-start-width)`; - } - }); - }; - const onAppearActive = (el) => { - timeid = setTimeout(() => { - if (el) { - addClass(el, `${props4.motionName}-appear-active`); - el.style.transform = `translateX(var(--thumb-active-left))`; - el.style.width = `var(--thumb-active-width)`; - } - }); - }; - const onAppearEnd = (el) => { - prevStyle.value = null; - nextStyle.value = null; - if (el) { - el.style.transform = null; - el.style.width = null; - removeClass(el, `${props4.motionName}-appear-active`); - } - emit("motionEnd"); - }; - const mergedStyle = computed(() => { - var _a2, _b; - return { - "--thumb-start-left": thumbStart.value, - "--thumb-start-width": toPX((_a2 = prevStyle.value) === null || _a2 === void 0 ? void 0 : _a2.width), - "--thumb-active-left": thumbActive.value, - "--thumb-active-width": toPX((_b = nextStyle.value) === null || _b === void 0 ? void 0 : _b.width) - }; - }); - onBeforeUnmount(() => { - clearTimeout(timeid); - }); - return () => { - const motionProps = { - ref: thumbRef, - style: mergedStyle.value, - class: [`${props4.prefixCls}-thumb`] - }; - if (false) { - motionProps["data-test-style"] = JSON.stringify(mergedStyle.value); - } - return createVNode(Transition, { - "appear": true, - "onBeforeEnter": onAppearStart, - "onEnter": onAppearActive, - "onAfterEnter": onAppearEnd - }, { - default: () => [!prevStyle.value || !nextStyle.value ? null : createVNode("div", motionProps, null)] - }); - }; - } -}); -var MotionThumb_default = MotionThumb; - -// node_modules/ant-design-vue/es/segmented/src/segmented.js -function normalizeOptions(options) { - return options.map((option) => { - if (typeof option === "object" && option !== null) { - return option; - } - return { - label: option === null || option === void 0 ? void 0 : option.toString(), - title: option === null || option === void 0 ? void 0 : option.toString(), - value: option - }; - }); -} -var segmentedProps = () => { - return { - prefixCls: String, - options: arrayType(), - block: booleanType(), - disabled: booleanType(), - size: stringType(), - value: _extends(_extends({}, someType([String, Number])), { - required: true - }), - motionName: String, - onChange: functionType(), - "onUpdate:value": functionType() - }; -}; -var SegmentedOption = (props4, _ref) => { - let { - slots, - emit - } = _ref; - const { - value, - disabled, - payload, - title, - prefixCls, - label = slots.label, - checked, - className - } = props4; - const handleChange = (event) => { - if (disabled) { - return; - } - emit("change", event, value); - }; - return createVNode("label", { - "class": classNames_default({ - [`${prefixCls}-item-disabled`]: disabled - }, className) - }, [createVNode("input", { - "class": `${prefixCls}-item-input`, - "type": "radio", - "disabled": disabled, - "checked": checked, - "onChange": handleChange - }, null), createVNode("div", { - "class": `${prefixCls}-item-label`, - "title": typeof title === "string" ? title : "" - }, [typeof label === "function" ? label({ - value, - disabled, - payload, - title - }) : label !== null && label !== void 0 ? label : value])]); -}; -SegmentedOption.inheritAttrs = false; -var segmented_default = defineComponent({ - name: "ASegmented", - inheritAttrs: false, - props: initDefaultProps_default(segmentedProps(), { - options: [], - motionName: "thumb-motion" - }), - slots: Object, - setup(props4, _ref2) { - let { - emit, - slots, - attrs - } = _ref2; - const { - prefixCls, - direction, - size: size2 - } = useConfigInject_default("segmented", props4); - const [wrapSSR, hashId] = style_default60(prefixCls); - const rootRef = shallowRef(); - const thumbShow = shallowRef(false); - const segmentedOptions = computed(() => normalizeOptions(props4.options)); - const handleChange = (_event, val) => { - if (props4.disabled) { - return; - } - emit("update:value", val); - emit("change", val); - }; - return () => { - const pre = prefixCls.value; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(pre, { - [hashId.value]: true, - [`${pre}-block`]: props4.block, - [`${pre}-disabled`]: props4.disabled, - [`${pre}-lg`]: size2.value == "large", - [`${pre}-sm`]: size2.value == "small", - [`${pre}-rtl`]: direction.value === "rtl" - }, attrs.class), - "ref": rootRef - }), [createVNode("div", { - "class": `${pre}-group` - }, [createVNode(MotionThumb_default, { - "containerRef": rootRef, - "prefixCls": pre, - "value": props4.value, - "motionName": `${pre}-${props4.motionName}`, - "direction": direction.value, - "getValueIndex": (val) => segmentedOptions.value.findIndex((n3) => n3.value === val), - "onMotionStart": () => { - thumbShow.value = true; - }, - "onMotionEnd": () => { - thumbShow.value = false; - } - }, null), segmentedOptions.value.map((segmentedOption) => createVNode(SegmentedOption, _objectSpread2(_objectSpread2({ - "key": segmentedOption.value, - "prefixCls": pre, - "checked": segmentedOption.value === props4.value, - "onChange": handleChange - }, segmentedOption), {}, { - "className": classNames_default(segmentedOption.className, `${pre}-item`, { - [`${pre}-item-selected`]: segmentedOption.value === props4.value && !thumbShow.value - }), - "disabled": !!props4.disabled || !!segmentedOption.disabled - }), slots))])])); - }; - } -}); - -// node_modules/ant-design-vue/es/segmented/src/index.js -var src_default3 = segmented_default; - -// node_modules/ant-design-vue/es/segmented/index.js -var segmented_default2 = withInstall(src_default3); - -// node_modules/ant-design-vue/es/qrcode/style/index.js -var genQRCodeStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - display: "flex", - justifyContent: "center", - alignItems: "center", - padding: token2.paddingSM, - backgroundColor: token2.colorWhite, - borderRadius: token2.borderRadiusLG, - border: `${token2.lineWidth}px ${token2.lineType} ${token2.colorSplit}`, - position: "relative", - width: "100%", - height: "100%", - overflow: "hidden", - [`& > ${componentCls}-mask`]: { - position: "absolute", - insetBlockStart: 0, - insetInlineStart: 0, - zIndex: 10, - display: "flex", - flexDirection: "column", - justifyContent: "center", - alignItems: "center", - width: "100%", - height: "100%", - color: token2.colorText, - lineHeight: token2.lineHeight, - background: token2.QRCodeMaskBackgroundColor, - textAlign: "center", - [`& > ${componentCls}-expired , & > ${componentCls}-scanned`]: { - color: token2.QRCodeTextColor - } - }, - "&-icon": { - marginBlockEnd: token2.marginXS, - fontSize: token2.controlHeight - } - }), - [`${componentCls}-borderless`]: { - borderColor: "transparent" - } - }; -}; -var style_default61 = genComponentStyleHook("QRCode", (token2) => genQRCodeStyle(merge(token2, { - QRCodeTextColor: "rgba(0, 0, 0, 0.88)", - QRCodeMaskBackgroundColor: "rgba(255, 255, 255, 0.96)" -}))); - -// node_modules/ant-design-vue/es/qrcode/interface.js -var qrProps = () => { - return { - size: { - type: Number, - default: 160 - }, - value: { - type: String, - required: true - }, - type: stringType("canvas"), - color: String, - bgColor: String, - includeMargin: Boolean, - imageSettings: objectType() - }; -}; -var qrcodeProps = () => { - return _extends(_extends({}, qrProps()), { - errorLevel: stringType("M"), - icon: String, - iconSize: { - type: Number, - default: 40 - }, - status: stringType("active"), - bordered: { - type: Boolean, - default: true - } - }); -}; - -// node_modules/ant-design-vue/es/qrcode/qrcodegen.js -var qrcodegen; -(function(qrcodegen2) { - class QrCode { - /*-- Static factory functions (high level) --*/ - // Returns a QR Code representing the given Unicode text string at the given error correction level. - // As a conservative upper bound, this function is guaranteed to succeed for strings that have 738 or fewer - // Unicode code points (not UTF-16 code units) if the low error correction level is used. The smallest possible - // QR Code version is automatically chosen for the output. The ECC level of the result may be higher than the - // ecl argument if it can be done without increasing the version. - static encodeText(text, ecl) { - const segs = qrcodegen2.QrSegment.makeSegments(text); - return QrCode.encodeSegments(segs, ecl); - } - // Returns a QR Code representing the given binary data at the given error correction level. - // This function always encodes using the binary segment mode, not any text mode. The maximum number of - // bytes allowed is 2953. The smallest possible QR Code version is automatically chosen for the output. - // The ECC level of the result may be higher than the ecl argument if it can be done without increasing the version. - static encodeBinary(data, ecl) { - const seg = qrcodegen2.QrSegment.makeBytes(data); - return QrCode.encodeSegments([seg], ecl); - } - /*-- Static factory functions (mid level) --*/ - // Returns a QR Code representing the given segments with the given encoding parameters. - // The smallest possible QR Code version within the given range is automatically - // chosen for the output. Iff boostEcl is true, then the ECC level of the result - // may be higher than the ecl argument if it can be done without increasing the - // version. The mask number is either between 0 to 7 (inclusive) to force that - // mask, or -1 to automatically choose an appropriate mask (which may be slow). - // This function allows the user to create a custom sequence of segments that switches - // between modes (such as alphanumeric and byte) to encode text in less space. - // This is a mid-level API; the high-level API is encodeText() and encodeBinary(). - static encodeSegments(segs, ecl) { - let minVersion = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1; - let maxVersion = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 40; - let mask = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1; - let boostEcl = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true; - if (!(QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= QrCode.MAX_VERSION) || mask < -1 || mask > 7) throw new RangeError("Invalid value"); - let version; - let dataUsedBits; - for (version = minVersion; ; version++) { - const dataCapacityBits2 = QrCode.getNumDataCodewords(version, ecl) * 8; - const usedBits = QrSegment.getTotalBits(segs, version); - if (usedBits <= dataCapacityBits2) { - dataUsedBits = usedBits; - break; - } - if (version >= maxVersion) - throw new RangeError("Data too long"); - } - for (const newEcl of [QrCode.Ecc.MEDIUM, QrCode.Ecc.QUARTILE, QrCode.Ecc.HIGH]) { - if (boostEcl && dataUsedBits <= QrCode.getNumDataCodewords(version, newEcl) * 8) ecl = newEcl; - } - const bb = []; - for (const seg of segs) { - appendBits(seg.mode.modeBits, 4, bb); - appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb); - for (const b2 of seg.getData()) bb.push(b2); - } - assert(bb.length == dataUsedBits); - const dataCapacityBits = QrCode.getNumDataCodewords(version, ecl) * 8; - assert(bb.length <= dataCapacityBits); - appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb); - appendBits(0, (8 - bb.length % 8) % 8, bb); - assert(bb.length % 8 == 0); - for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17) appendBits(padByte, 8, bb); - const dataCodewords = []; - while (dataCodewords.length * 8 < bb.length) dataCodewords.push(0); - bb.forEach((b2, i3) => dataCodewords[i3 >>> 3] |= b2 << 7 - (i3 & 7)); - return new QrCode(version, ecl, dataCodewords, mask); - } - /*-- Constructor (low level) and fields --*/ - // Creates a new QR Code with the given version number, - // error correction level, data codeword bytes, and mask number. - // This is a low-level API that most users should not use directly. - // A mid-level API is the encodeSegments() function. - constructor(version, errorCorrectionLevel, dataCodewords, msk) { - this.version = version; - this.errorCorrectionLevel = errorCorrectionLevel; - this.modules = []; - this.isFunction = []; - if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION) throw new RangeError("Version value out of range"); - if (msk < -1 || msk > 7) throw new RangeError("Mask value out of range"); - this.size = version * 4 + 17; - const row = []; - for (let i3 = 0; i3 < this.size; i3++) row.push(false); - for (let i3 = 0; i3 < this.size; i3++) { - this.modules.push(row.slice()); - this.isFunction.push(row.slice()); - } - this.drawFunctionPatterns(); - const allCodewords = this.addEccAndInterleave(dataCodewords); - this.drawCodewords(allCodewords); - if (msk == -1) { - let minPenalty = 1e9; - for (let i3 = 0; i3 < 8; i3++) { - this.applyMask(i3); - this.drawFormatBits(i3); - const penalty = this.getPenaltyScore(); - if (penalty < minPenalty) { - msk = i3; - minPenalty = penalty; - } - this.applyMask(i3); - } - } - assert(0 <= msk && msk <= 7); - this.mask = msk; - this.applyMask(msk); - this.drawFormatBits(msk); - this.isFunction = []; - } - /*-- Accessor methods --*/ - // Returns the color of the module (pixel) at the given coordinates, which is false - // for light or true for dark. The top left corner has the coordinates (x=0, y=0). - // If the given coordinates are out of bounds, then false (light) is returned. - getModule(x2, y2) { - return 0 <= x2 && x2 < this.size && 0 <= y2 && y2 < this.size && this.modules[y2][x2]; - } - // Modified to expose modules for easy access - getModules() { - return this.modules; - } - /*-- Private helper methods for constructor: Drawing function modules --*/ - // Reads this object's version field, and draws and marks all function modules. - drawFunctionPatterns() { - for (let i3 = 0; i3 < this.size; i3++) { - this.setFunctionModule(6, i3, i3 % 2 == 0); - this.setFunctionModule(i3, 6, i3 % 2 == 0); - } - this.drawFinderPattern(3, 3); - this.drawFinderPattern(this.size - 4, 3); - this.drawFinderPattern(3, this.size - 4); - const alignPatPos = this.getAlignmentPatternPositions(); - const numAlign = alignPatPos.length; - for (let i3 = 0; i3 < numAlign; i3++) { - for (let j2 = 0; j2 < numAlign; j2++) { - if (!(i3 == 0 && j2 == 0 || i3 == 0 && j2 == numAlign - 1 || i3 == numAlign - 1 && j2 == 0)) this.drawAlignmentPattern(alignPatPos[i3], alignPatPos[j2]); - } - } - this.drawFormatBits(0); - this.drawVersion(); - } - // Draws two copies of the format bits (with its own error correction code) - // based on the given mask and this object's error correction level field. - drawFormatBits(mask) { - const data = this.errorCorrectionLevel.formatBits << 3 | mask; - let rem = data; - for (let i3 = 0; i3 < 10; i3++) rem = rem << 1 ^ (rem >>> 9) * 1335; - const bits = (data << 10 | rem) ^ 21522; - assert(bits >>> 15 == 0); - for (let i3 = 0; i3 <= 5; i3++) this.setFunctionModule(8, i3, getBit(bits, i3)); - this.setFunctionModule(8, 7, getBit(bits, 6)); - this.setFunctionModule(8, 8, getBit(bits, 7)); - this.setFunctionModule(7, 8, getBit(bits, 8)); - for (let i3 = 9; i3 < 15; i3++) this.setFunctionModule(14 - i3, 8, getBit(bits, i3)); - for (let i3 = 0; i3 < 8; i3++) this.setFunctionModule(this.size - 1 - i3, 8, getBit(bits, i3)); - for (let i3 = 8; i3 < 15; i3++) this.setFunctionModule(8, this.size - 15 + i3, getBit(bits, i3)); - this.setFunctionModule(8, this.size - 8, true); - } - // Draws two copies of the version bits (with its own error correction code), - // based on this object's version field, iff 7 <= version <= 40. - drawVersion() { - if (this.version < 7) return; - let rem = this.version; - for (let i3 = 0; i3 < 12; i3++) rem = rem << 1 ^ (rem >>> 11) * 7973; - const bits = this.version << 12 | rem; - assert(bits >>> 18 == 0); - for (let i3 = 0; i3 < 18; i3++) { - const color = getBit(bits, i3); - const a2 = this.size - 11 + i3 % 3; - const b2 = Math.floor(i3 / 3); - this.setFunctionModule(a2, b2, color); - this.setFunctionModule(b2, a2, color); - } - } - // Draws a 9*9 finder pattern including the border separator, - // with the center module at (x, y). Modules can be out of bounds. - drawFinderPattern(x2, y2) { - for (let dy = -4; dy <= 4; dy++) { - for (let dx = -4; dx <= 4; dx++) { - const dist = Math.max(Math.abs(dx), Math.abs(dy)); - const xx = x2 + dx; - const yy = y2 + dy; - if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size) this.setFunctionModule(xx, yy, dist != 2 && dist != 4); - } - } - } - // Draws a 5*5 alignment pattern, with the center module - // at (x, y). All modules must be in bounds. - drawAlignmentPattern(x2, y2) { - for (let dy = -2; dy <= 2; dy++) { - for (let dx = -2; dx <= 2; dx++) this.setFunctionModule(x2 + dx, y2 + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1); - } - } - // Sets the color of a module and marks it as a function module. - // Only used by the constructor. Coordinates must be in bounds. - setFunctionModule(x2, y2, isDark) { - this.modules[y2][x2] = isDark; - this.isFunction[y2][x2] = true; - } - /*-- Private helper methods for constructor: Codewords and masking --*/ - // Returns a new byte string representing the given data with the appropriate error correction - // codewords appended to it, based on this object's version and error correction level. - addEccAndInterleave(data) { - const ver = this.version; - const ecl = this.errorCorrectionLevel; - if (data.length != QrCode.getNumDataCodewords(ver, ecl)) throw new RangeError("Invalid argument"); - const numBlocks = QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]; - const blockEccLen = QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver]; - const rawCodewords = Math.floor(QrCode.getNumRawDataModules(ver) / 8); - const numShortBlocks = numBlocks - rawCodewords % numBlocks; - const shortBlockLen = Math.floor(rawCodewords / numBlocks); - const blocks = []; - const rsDiv = QrCode.reedSolomonComputeDivisor(blockEccLen); - for (let i3 = 0, k2 = 0; i3 < numBlocks; i3++) { - const dat = data.slice(k2, k2 + shortBlockLen - blockEccLen + (i3 < numShortBlocks ? 0 : 1)); - k2 += dat.length; - const ecc = QrCode.reedSolomonComputeRemainder(dat, rsDiv); - if (i3 < numShortBlocks) dat.push(0); - blocks.push(dat.concat(ecc)); - } - const result2 = []; - for (let i3 = 0; i3 < blocks[0].length; i3++) { - blocks.forEach((block, j2) => { - if (i3 != shortBlockLen - blockEccLen || j2 >= numShortBlocks) result2.push(block[i3]); - }); - } - assert(result2.length == rawCodewords); - return result2; - } - // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire - // data area of this QR Code. Function modules need to be marked off before this is called. - drawCodewords(data) { - if (data.length != Math.floor(QrCode.getNumRawDataModules(this.version) / 8)) throw new RangeError("Invalid argument"); - let i3 = 0; - for (let right = this.size - 1; right >= 1; right -= 2) { - if (right == 6) right = 5; - for (let vert = 0; vert < this.size; vert++) { - for (let j2 = 0; j2 < 2; j2++) { - const x2 = right - j2; - const upward = (right + 1 & 2) == 0; - const y2 = upward ? this.size - 1 - vert : vert; - if (!this.isFunction[y2][x2] && i3 < data.length * 8) { - this.modules[y2][x2] = getBit(data[i3 >>> 3], 7 - (i3 & 7)); - i3++; - } - } - } - } - assert(i3 == data.length * 8); - } - // XORs the codeword modules in this QR Code with the given mask pattern. - // The function modules must be marked and the codeword bits must be drawn - // before masking. Due to the arithmetic of XOR, calling applyMask() with - // the same mask value a second time will undo the mask. A final well-formed - // QR Code needs exactly one (not zero, two, etc.) mask applied. - applyMask(mask) { - if (mask < 0 || mask > 7) throw new RangeError("Mask value out of range"); - for (let y2 = 0; y2 < this.size; y2++) { - for (let x2 = 0; x2 < this.size; x2++) { - let invert2; - switch (mask) { - case 0: - invert2 = (x2 + y2) % 2 == 0; - break; - case 1: - invert2 = y2 % 2 == 0; - break; - case 2: - invert2 = x2 % 3 == 0; - break; - case 3: - invert2 = (x2 + y2) % 3 == 0; - break; - case 4: - invert2 = (Math.floor(x2 / 3) + Math.floor(y2 / 2)) % 2 == 0; - break; - case 5: - invert2 = x2 * y2 % 2 + x2 * y2 % 3 == 0; - break; - case 6: - invert2 = (x2 * y2 % 2 + x2 * y2 % 3) % 2 == 0; - break; - case 7: - invert2 = ((x2 + y2) % 2 + x2 * y2 % 3) % 2 == 0; - break; - default: - throw new Error("Unreachable"); - } - if (!this.isFunction[y2][x2] && invert2) this.modules[y2][x2] = !this.modules[y2][x2]; - } - } - } - // Calculates and returns the penalty score based on state of this QR Code's current modules. - // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score. - getPenaltyScore() { - let result2 = 0; - for (let y2 = 0; y2 < this.size; y2++) { - let runColor = false; - let runX = 0; - const runHistory = [0, 0, 0, 0, 0, 0, 0]; - for (let x2 = 0; x2 < this.size; x2++) { - if (this.modules[y2][x2] == runColor) { - runX++; - if (runX == 5) result2 += QrCode.PENALTY_N1; - else if (runX > 5) result2++; - } else { - this.finderPenaltyAddHistory(runX, runHistory); - if (!runColor) result2 += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3; - runColor = this.modules[y2][x2]; - runX = 1; - } - } - result2 += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * QrCode.PENALTY_N3; - } - for (let x2 = 0; x2 < this.size; x2++) { - let runColor = false; - let runY = 0; - const runHistory = [0, 0, 0, 0, 0, 0, 0]; - for (let y2 = 0; y2 < this.size; y2++) { - if (this.modules[y2][x2] == runColor) { - runY++; - if (runY == 5) result2 += QrCode.PENALTY_N1; - else if (runY > 5) result2++; - } else { - this.finderPenaltyAddHistory(runY, runHistory); - if (!runColor) result2 += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3; - runColor = this.modules[y2][x2]; - runY = 1; - } - } - result2 += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * QrCode.PENALTY_N3; - } - for (let y2 = 0; y2 < this.size - 1; y2++) { - for (let x2 = 0; x2 < this.size - 1; x2++) { - const color = this.modules[y2][x2]; - if (color == this.modules[y2][x2 + 1] && color == this.modules[y2 + 1][x2] && color == this.modules[y2 + 1][x2 + 1]) result2 += QrCode.PENALTY_N2; - } - } - let dark = 0; - for (const row of this.modules) dark = row.reduce((sum2, color) => sum2 + (color ? 1 : 0), dark); - const total = this.size * this.size; - const k2 = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1; - assert(0 <= k2 && k2 <= 9); - result2 += k2 * QrCode.PENALTY_N4; - assert(0 <= result2 && result2 <= 2568888); - return result2; - } - /*-- Private helper functions --*/ - // Returns an ascending list of positions of alignment patterns for this version number. - // Each position is in the range [0,177), and are used on both the x and y axes. - // This could be implemented as lookup table of 40 variable-length lists of integers. - getAlignmentPatternPositions() { - if (this.version == 1) return []; - else { - const numAlign = Math.floor(this.version / 7) + 2; - const step = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2; - const result2 = [6]; - for (let pos = this.size - 7; result2.length < numAlign; pos -= step) result2.splice(1, 0, pos); - return result2; - } - } - // Returns the number of data bits that can be stored in a QR Code of the given version number, after - // all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8. - // The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table. - static getNumRawDataModules(ver) { - if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION) throw new RangeError("Version number out of range"); - let result2 = (16 * ver + 128) * ver + 64; - if (ver >= 2) { - const numAlign = Math.floor(ver / 7) + 2; - result2 -= (25 * numAlign - 10) * numAlign - 55; - if (ver >= 7) result2 -= 36; - } - assert(208 <= result2 && result2 <= 29648); - return result2; - } - // Returns the number of 8-bit data (i.e. not error correction) codewords contained in any - // QR Code of the given version number and error correction level, with remainder bits discarded. - // This stateless pure function could be implemented as a (40*4)-cell lookup table. - static getNumDataCodewords(ver, ecl) { - return Math.floor(QrCode.getNumRawDataModules(ver) / 8) - QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]; - } - // Returns a Reed-Solomon ECC generator polynomial for the given degree. This could be - // implemented as a lookup table over all possible parameter values, instead of as an algorithm. - static reedSolomonComputeDivisor(degree) { - if (degree < 1 || degree > 255) throw new RangeError("Degree out of range"); - const result2 = []; - for (let i3 = 0; i3 < degree - 1; i3++) result2.push(0); - result2.push(1); - let root2 = 1; - for (let i3 = 0; i3 < degree; i3++) { - for (let j2 = 0; j2 < result2.length; j2++) { - result2[j2] = QrCode.reedSolomonMultiply(result2[j2], root2); - if (j2 + 1 < result2.length) result2[j2] ^= result2[j2 + 1]; - } - root2 = QrCode.reedSolomonMultiply(root2, 2); - } - return result2; - } - // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials. - static reedSolomonComputeRemainder(data, divisor) { - const result2 = divisor.map((_2) => 0); - for (const b2 of data) { - const factor = b2 ^ result2.shift(); - result2.push(0); - divisor.forEach((coef, i3) => result2[i3] ^= QrCode.reedSolomonMultiply(coef, factor)); - } - return result2; - } - // Returns the product of the two given field elements modulo GF(2^8/0x11D). The arguments and result - // are unsigned 8-bit integers. This could be implemented as a lookup table of 256*256 entries of uint8. - static reedSolomonMultiply(x2, y2) { - if (x2 >>> 8 != 0 || y2 >>> 8 != 0) throw new RangeError("Byte out of range"); - let z2 = 0; - for (let i3 = 7; i3 >= 0; i3--) { - z2 = z2 << 1 ^ (z2 >>> 7) * 285; - z2 ^= (y2 >>> i3 & 1) * x2; - } - assert(z2 >>> 8 == 0); - return z2; - } - // Can only be called immediately after a light run is added, and - // returns either 0, 1, or 2. A helper function for getPenaltyScore(). - finderPenaltyCountPatterns(runHistory) { - const n3 = runHistory[1]; - assert(n3 <= this.size * 3); - const core = n3 > 0 && runHistory[2] == n3 && runHistory[3] == n3 * 3 && runHistory[4] == n3 && runHistory[5] == n3; - return (core && runHistory[0] >= n3 * 4 && runHistory[6] >= n3 ? 1 : 0) + (core && runHistory[6] >= n3 * 4 && runHistory[0] >= n3 ? 1 : 0); - } - // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore(). - finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) { - if (currentRunColor) { - this.finderPenaltyAddHistory(currentRunLength, runHistory); - currentRunLength = 0; - } - currentRunLength += this.size; - this.finderPenaltyAddHistory(currentRunLength, runHistory); - return this.finderPenaltyCountPatterns(runHistory); - } - // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore(). - finderPenaltyAddHistory(currentRunLength, runHistory) { - if (runHistory[0] == 0) currentRunLength += this.size; - runHistory.pop(); - runHistory.unshift(currentRunLength); - } - } - QrCode.MIN_VERSION = 1; - QrCode.MAX_VERSION = 40; - QrCode.PENALTY_N1 = 3; - QrCode.PENALTY_N2 = 3; - QrCode.PENALTY_N3 = 40; - QrCode.PENALTY_N4 = 10; - QrCode.ECC_CODEWORDS_PER_BLOCK = [ - // Version: (note that index 0 is for padding, and is set to an illegal value) - //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 Error correction level - [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], - [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28], - [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], - [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30] - // High - ]; - QrCode.NUM_ERROR_CORRECTION_BLOCKS = [ - // Version: (note that index 0 is for padding, and is set to an illegal value) - //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 Error correction level - [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25], - [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49], - [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68], - [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81] - // High - ]; - qrcodegen2.QrCode = QrCode; - function appendBits(val, len, bb) { - if (len < 0 || len > 31 || val >>> len != 0) throw new RangeError("Value out of range"); - for (let i3 = len - 1; i3 >= 0; i3--) bb.push(val >>> i3 & 1); - } - function getBit(x2, i3) { - return (x2 >>> i3 & 1) != 0; - } - function assert(cond2) { - if (!cond2) throw new Error("Assertion error"); - } - class QrSegment { - /*-- Static factory functions (mid level) --*/ - // Returns a segment representing the given binary data encoded in - // byte mode. All input byte arrays are acceptable. Any text string - // can be converted to UTF-8 bytes and encoded as a byte mode segment. - static makeBytes(data) { - const bb = []; - for (const b2 of data) appendBits(b2, 8, bb); - return new QrSegment(QrSegment.Mode.BYTE, data.length, bb); - } - // Returns a segment representing the given string of decimal digits encoded in numeric mode. - static makeNumeric(digits) { - if (!QrSegment.isNumeric(digits)) throw new RangeError("String contains non-numeric characters"); - const bb = []; - for (let i3 = 0; i3 < digits.length; ) { - const n3 = Math.min(digits.length - i3, 3); - appendBits(parseInt(digits.substring(i3, i3 + n3), 10), n3 * 3 + 1, bb); - i3 += n3; - } - return new QrSegment(QrSegment.Mode.NUMERIC, digits.length, bb); - } - // Returns a segment representing the given text string encoded in alphanumeric mode. - // The characters allowed are: 0 to 9, A to Z (uppercase only), space, - // dollar, percent, asterisk, plus, hyphen, period, slash, colon. - static makeAlphanumeric(text) { - if (!QrSegment.isAlphanumeric(text)) throw new RangeError("String contains unencodable characters in alphanumeric mode"); - const bb = []; - let i3; - for (i3 = 0; i3 + 2 <= text.length; i3 += 2) { - let temp = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i3)) * 45; - temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i3 + 1)); - appendBits(temp, 11, bb); - } - if (i3 < text.length) - appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i3)), 6, bb); - return new QrSegment(QrSegment.Mode.ALPHANUMERIC, text.length, bb); - } - // Returns a new mutable list of zero or more segments to represent the given Unicode text string. - // The result may use various segment modes and switch modes to optimize the length of the bit stream. - static makeSegments(text) { - if (text == "") return []; - else if (QrSegment.isNumeric(text)) return [QrSegment.makeNumeric(text)]; - else if (QrSegment.isAlphanumeric(text)) return [QrSegment.makeAlphanumeric(text)]; - else return [QrSegment.makeBytes(QrSegment.toUtf8ByteArray(text))]; - } - // Returns a segment representing an Extended Channel Interpretation - // (ECI) designator with the given assignment value. - static makeEci(assignVal) { - const bb = []; - if (assignVal < 0) throw new RangeError("ECI assignment value out of range"); - else if (assignVal < 1 << 7) appendBits(assignVal, 8, bb); - else if (assignVal < 1 << 14) { - appendBits(2, 2, bb); - appendBits(assignVal, 14, bb); - } else if (assignVal < 1e6) { - appendBits(6, 3, bb); - appendBits(assignVal, 21, bb); - } else throw new RangeError("ECI assignment value out of range"); - return new QrSegment(QrSegment.Mode.ECI, 0, bb); - } - // Tests whether the given string can be encoded as a segment in numeric mode. - // A string is encodable iff each character is in the range 0 to 9. - static isNumeric(text) { - return QrSegment.NUMERIC_REGEX.test(text); - } - // Tests whether the given string can be encoded as a segment in alphanumeric mode. - // A string is encodable iff each character is in the following set: 0 to 9, A to Z - // (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon. - static isAlphanumeric(text) { - return QrSegment.ALPHANUMERIC_REGEX.test(text); - } - /*-- Constructor (low level) and fields --*/ - // Creates a new QR Code segment with the given attributes and data. - // The character count (numChars) must agree with the mode and the bit buffer length, - // but the constraint isn't checked. The given bit buffer is cloned and stored. - constructor(mode, numChars, bitData) { - this.mode = mode; - this.numChars = numChars; - this.bitData = bitData; - if (numChars < 0) throw new RangeError("Invalid argument"); - this.bitData = bitData.slice(); - } - /*-- Methods --*/ - // Returns a new copy of the data bits of this segment. - getData() { - return this.bitData.slice(); - } - // (Package-private) Calculates and returns the number of bits needed to encode the given segments at - // the given version. The result is infinity if a segment has too many characters to fit its length field. - static getTotalBits(segs, version) { - let result2 = 0; - for (const seg of segs) { - const ccbits = seg.mode.numCharCountBits(version); - if (seg.numChars >= 1 << ccbits) return Infinity; - result2 += 4 + ccbits + seg.bitData.length; - } - return result2; - } - // Returns a new array of bytes representing the given string encoded in UTF-8. - static toUtf8ByteArray(str) { - str = encodeURI(str); - const result2 = []; - for (let i3 = 0; i3 < str.length; i3++) { - if (str.charAt(i3) != "%") result2.push(str.charCodeAt(i3)); - else { - result2.push(parseInt(str.substring(i3 + 1, i3 + 3), 16)); - i3 += 2; - } - } - return result2; - } - } - QrSegment.NUMERIC_REGEX = /^[0-9]*$/; - QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\/:-]*$/; - QrSegment.ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; - qrcodegen2.QrSegment = QrSegment; -})(qrcodegen || (qrcodegen = {})); -(function(qrcodegen2) { - var QrCode; - (function(QrCode2) { - class Ecc { - /*-- Constructor and fields --*/ - constructor(ordinal, formatBits) { - this.ordinal = ordinal; - this.formatBits = formatBits; - } - } - Ecc.LOW = new Ecc(0, 1); - Ecc.MEDIUM = new Ecc(1, 0); - Ecc.QUARTILE = new Ecc(2, 3); - Ecc.HIGH = new Ecc(3, 2); - QrCode2.Ecc = Ecc; - })(QrCode = qrcodegen2.QrCode || (qrcodegen2.QrCode = {})); -})(qrcodegen || (qrcodegen = {})); -(function(qrcodegen2) { - var QrSegment; - (function(QrSegment2) { - class Mode { - /*-- Constructor and fields --*/ - constructor(modeBits, numBitsCharCount) { - this.modeBits = modeBits; - this.numBitsCharCount = numBitsCharCount; - } - /*-- Method --*/ - // (Package-private) Returns the bit width of the character count field for a segment in - // this mode in a QR Code at the given version number. The result is in the range [0, 16]. - numCharCountBits(ver) { - return this.numBitsCharCount[Math.floor((ver + 7) / 17)]; - } - } - Mode.NUMERIC = new Mode(1, [10, 12, 14]); - Mode.ALPHANUMERIC = new Mode(2, [9, 11, 13]); - Mode.BYTE = new Mode(4, [8, 16, 16]); - Mode.KANJI = new Mode(8, [8, 10, 12]); - Mode.ECI = new Mode(7, [0, 0, 0]); - QrSegment2.Mode = Mode; - })(QrSegment = qrcodegen2.QrSegment || (qrcodegen2.QrSegment = {})); -})(qrcodegen || (qrcodegen = {})); -var qrcodegen_default = qrcodegen; - -// node_modules/ant-design-vue/es/qrcode/QRCode.js -var ERROR_LEVEL_MAP = { - L: qrcodegen_default.QrCode.Ecc.LOW, - M: qrcodegen_default.QrCode.Ecc.MEDIUM, - Q: qrcodegen_default.QrCode.Ecc.QUARTILE, - H: qrcodegen_default.QrCode.Ecc.HIGH -}; -var DEFAULT_SIZE3 = 128; -var DEFAULT_LEVEL = "L"; -var DEFAULT_BGCOLOR = "#FFFFFF"; -var DEFAULT_FGCOLOR = "#000000"; -var DEFAULT_INCLUDEMARGIN = false; -var SPEC_MARGIN_SIZE = 4; -var DEFAULT_MARGIN_SIZE = 0; -var DEFAULT_IMG_SCALE = 0.1; -function generatePath(modules) { - let margin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; - const ops = []; - modules.forEach(function(row, y2) { - let start = null; - row.forEach(function(cell, x2) { - if (!cell && start !== null) { - ops.push(`M${start + margin} ${y2 + margin}h${x2 - start}v1H${start + margin}z`); - start = null; - return; - } - if (x2 === row.length - 1) { - if (!cell) { - return; - } - if (start === null) { - ops.push(`M${x2 + margin},${y2 + margin} h1v1H${x2 + margin}z`); - } else { - ops.push(`M${start + margin},${y2 + margin} h${x2 + 1 - start}v1H${start + margin}z`); - } - return; - } - if (cell && start === null) { - start = x2; - } - }); - }); - return ops.join(""); -} -function excavateModules(modules, excavation) { - return modules.slice().map((row, y2) => { - if (y2 < excavation.y || y2 >= excavation.y + excavation.h) { - return row; - } - return row.map((cell, x2) => { - if (x2 < excavation.x || x2 >= excavation.x + excavation.w) { - return cell; - } - return false; - }); - }); -} -function getImageSettings(cells, size2, margin, imageSettings) { - if (imageSettings == null) { - return null; - } - const numCells = cells.length + margin * 2; - const defaultSize = Math.floor(size2 * DEFAULT_IMG_SCALE); - const scale = numCells / size2; - const w2 = (imageSettings.width || defaultSize) * scale; - const h3 = (imageSettings.height || defaultSize) * scale; - const x2 = imageSettings.x == null ? cells.length / 2 - w2 / 2 : imageSettings.x * scale; - const y2 = imageSettings.y == null ? cells.length / 2 - h3 / 2 : imageSettings.y * scale; - let excavation = null; - if (imageSettings.excavate) { - const floorX = Math.floor(x2); - const floorY = Math.floor(y2); - const ceilW = Math.ceil(w2 + x2 - floorX); - const ceilH = Math.ceil(h3 + y2 - floorY); - excavation = { - x: floorX, - y: floorY, - w: ceilW, - h: ceilH - }; - } - return { - x: x2, - y: y2, - h: h3, - w: w2, - excavation - }; -} -function getMarginSize(includeMargin, marginSize) { - if (marginSize != null) { - return Math.floor(marginSize); - } - return includeMargin ? SPEC_MARGIN_SIZE : DEFAULT_MARGIN_SIZE; -} -var SUPPORTS_PATH2D = function() { - try { - new Path2D().addPath(new Path2D()); - } catch (e3) { - return false; - } - return true; -}(); -var QRCodeCanvas = defineComponent({ - name: "QRCodeCanvas", - inheritAttrs: false, - props: _extends(_extends({}, qrProps()), { - level: String, - bgColor: String, - fgColor: String, - marginSize: Number - }), - setup(props4, _ref) { - let { - attrs, - expose - } = _ref; - const imgSrc = computed(() => { - var _a2; - return (_a2 = props4.imageSettings) === null || _a2 === void 0 ? void 0 : _a2.src; - }); - const _canvas = shallowRef(null); - const _image = shallowRef(null); - const isImgLoaded = shallowRef(false); - expose({ - toDataURL: (type4, quality) => { - var _a2; - return (_a2 = _canvas.value) === null || _a2 === void 0 ? void 0 : _a2.toDataURL(type4, quality); - } - }); - watchEffect(() => { - const { - value, - size: size2 = DEFAULT_SIZE3, - level = DEFAULT_LEVEL, - bgColor = DEFAULT_BGCOLOR, - fgColor = DEFAULT_FGCOLOR, - includeMargin = DEFAULT_INCLUDEMARGIN, - marginSize, - imageSettings - } = props4; - if (_canvas.value != null) { - const canvas = _canvas.value; - const ctx = canvas.getContext("2d"); - if (!ctx) { - return; - } - let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules(); - const margin = getMarginSize(includeMargin, marginSize); - const numCells = cells.length + margin * 2; - const calculatedImageSettings = getImageSettings(cells, size2, margin, imageSettings); - const image = _image.value; - const haveImageToRender = isImgLoaded.value && calculatedImageSettings != null && image !== null && image.complete && image.naturalHeight !== 0 && image.naturalWidth !== 0; - if (haveImageToRender) { - if (calculatedImageSettings.excavation != null) { - cells = excavateModules(cells, calculatedImageSettings.excavation); - } - } - const pixelRatio = window.devicePixelRatio || 1; - canvas.height = canvas.width = size2 * pixelRatio; - const scale = size2 / numCells * pixelRatio; - ctx.scale(scale, scale); - ctx.fillStyle = bgColor; - ctx.fillRect(0, 0, numCells, numCells); - ctx.fillStyle = fgColor; - if (SUPPORTS_PATH2D) { - ctx.fill(new Path2D(generatePath(cells, margin))); - } else { - cells.forEach(function(row, rdx) { - row.forEach(function(cell, cdx) { - if (cell) { - ctx.fillRect(cdx + margin, rdx + margin, 1, 1); - } - }); - }); - } - if (haveImageToRender) { - ctx.drawImage(image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h); - } - } - }, { - flush: "post" - }); - watch(imgSrc, () => { - isImgLoaded.value = false; - }); - return () => { - var _a2; - const size2 = (_a2 = props4.size) !== null && _a2 !== void 0 ? _a2 : DEFAULT_SIZE3; - const canvasStyle = { - height: `${size2}px`, - width: `${size2}px` - }; - let img = null; - if (imgSrc.value != null) { - img = createVNode("img", { - "src": imgSrc.value, - "key": imgSrc.value, - "style": { - display: "none" - }, - "onLoad": () => { - isImgLoaded.value = true; - }, - "ref": _image - }, null); - } - return createVNode(Fragment, null, [createVNode("canvas", _objectSpread2(_objectSpread2({}, attrs), {}, { - "style": [canvasStyle, attrs.style], - "ref": _canvas - }), null), img]); - }; - } -}); -var QRCodeSVG = defineComponent({ - name: "QRCodeSVG", - inheritAttrs: false, - props: _extends(_extends({}, qrProps()), { - color: String, - level: String, - bgColor: String, - fgColor: String, - marginSize: Number, - title: String - }), - setup(props4) { - let cells = null; - let margin = null; - let numCells = null; - let calculatedImageSettings = null; - let fgPath = null; - let image = null; - watchEffect(() => { - const { - value, - size: size2 = DEFAULT_SIZE3, - level = DEFAULT_LEVEL, - includeMargin = DEFAULT_INCLUDEMARGIN, - marginSize, - imageSettings - } = props4; - cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules(); - margin = getMarginSize(includeMargin, marginSize); - numCells = cells.length + margin * 2; - calculatedImageSettings = getImageSettings(cells, size2, margin, imageSettings); - if (imageSettings != null && calculatedImageSettings != null) { - if (calculatedImageSettings.excavation != null) { - cells = excavateModules(cells, calculatedImageSettings.excavation); - } - image = createVNode("image", { - "xlink:href": imageSettings.src, - "height": calculatedImageSettings.h, - "width": calculatedImageSettings.w, - "x": calculatedImageSettings.x + margin, - "y": calculatedImageSettings.y + margin, - "preserveAspectRatio": "none" - }, null); - } - fgPath = generatePath(cells, margin); - }); - return () => { - const bgColor = props4.bgColor && DEFAULT_BGCOLOR; - const fgColor = props4.fgColor && DEFAULT_FGCOLOR; - return createVNode("svg", { - "height": props4.size, - "width": props4.size, - "viewBox": `0 0 ${numCells} ${numCells}` - }, [!!props4.title && createVNode("title", null, [props4.title]), createVNode("path", { - "fill": bgColor, - "d": `M0,0 h${numCells}v${numCells}H0z`, - "shape-rendering": "crispEdges" - }, null), createVNode("path", { - "fill": fgColor, - "d": fgPath, - "shape-rendering": "crispEdges" - }, null), image]); - }; - } -}); - -// node_modules/ant-design-vue/es/qrcode/index.js -var QRCode = defineComponent({ - name: "AQrcode", - inheritAttrs: false, - props: qrcodeProps(), - emits: ["refresh"], - setup(props4, _ref) { - let { - emit, - attrs, - expose - } = _ref; - if (true) { - warning_default2(!(props4.icon && props4.errorLevel === "L"), "QRCode", "ErrorLevel `L` is not recommended to be used with `icon`, for scanning result would be affected by low level."); - } - const [locale4] = useLocaleReceiver("QRCode"); - const { - prefixCls - } = useConfigInject_default("qrcode", props4); - const [wrapSSR, hashId] = style_default61(prefixCls); - const [, token2] = useToken(); - const qrCodeCanvas = ref(); - expose({ - toDataURL: (type4, quality) => { - var _a2; - return (_a2 = qrCodeCanvas.value) === null || _a2 === void 0 ? void 0 : _a2.toDataURL(type4, quality); - } - }); - const qrCodeProps = computed(() => { - const { - value, - icon = "", - size: size2 = 160, - iconSize = 40, - color = token2.value.colorText, - bgColor = "transparent", - errorLevel = "M" - } = props4; - const imageSettings = { - src: icon, - x: void 0, - y: void 0, - height: iconSize, - width: iconSize, - excavate: true - }; - return { - value, - size: size2 - (token2.value.paddingSM + token2.value.lineWidth) * 2, - level: errorLevel, - bgColor, - fgColor: color, - imageSettings: icon ? imageSettings : void 0 - }; - }); - return () => { - const pre = prefixCls.value; - return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "style": [attrs.style, { - width: `${props4.size}px`, - height: `${props4.size}px`, - backgroundColor: qrCodeProps.value.bgColor - }], - "class": [hashId.value, pre, { - [`${pre}-borderless`]: !props4.bordered - }] - }), [props4.status !== "active" && createVNode("div", { - "class": `${pre}-mask` - }, [props4.status === "loading" && createVNode(spin_default, null, null), props4.status === "expired" && createVNode(Fragment, null, [createVNode("p", { - "class": `${pre}-expired` - }, [locale4.value.expired]), createVNode(button_default2, { - "type": "link", - "onClick": (e3) => emit("refresh", e3) - }, { - default: () => [locale4.value.refresh], - icon: () => createVNode(ReloadOutlined_default, null, null) - })]), props4.status === "scanned" && createVNode("p", { - "class": `${pre}-scanned` - }, [locale4.value.scanned])]), props4.type === "canvas" ? createVNode(QRCodeCanvas, _objectSpread2({ - "ref": qrCodeCanvas - }, qrCodeProps.value), null) : createVNode(QRCodeSVG, qrCodeProps.value, null)])); - }; - } -}); -var qrcode_default = withInstall(QRCode); - -// node_modules/ant-design-vue/es/vc-tour/util.js -function isInViewPort(element) { - const viewWidth = window.innerWidth || document.documentElement.clientWidth; - const viewHeight = window.innerHeight || document.documentElement.clientHeight; - const { - top, - right, - bottom, - left - } = element.getBoundingClientRect(); - return top >= 0 && left >= 0 && right <= viewWidth && bottom <= viewHeight; -} - -// node_modules/ant-design-vue/es/vc-tour/hooks/useTarget.js -function useTarget(target, open2, gap, scrollIntoViewOptions) { - const [targetElement, setTargetElement] = useState(void 0); - watchEffect(() => { - const nextElement = typeof target.value === "function" ? target.value() : target.value; - setTargetElement(nextElement || null); - }, { - flush: "post" - }); - const [posInfo, setPosInfo] = useState(null); - const updatePos = () => { - if (!open2.value) { - setPosInfo(null); - return; - } - if (targetElement.value) { - if (!isInViewPort(targetElement.value) && open2.value) { - targetElement.value.scrollIntoView(scrollIntoViewOptions.value); - } - const { - left, - top, - width, - height - } = targetElement.value.getBoundingClientRect(); - const nextPosInfo = { - left, - top, - width, - height, - radius: 0 - }; - if (JSON.stringify(posInfo.value) !== JSON.stringify(nextPosInfo)) { - setPosInfo(nextPosInfo); - } - } else { - setPosInfo(null); - } - }; - onMounted(() => { - watch([open2, targetElement], () => { - updatePos(); - }, { - flush: "post", - immediate: true - }); - window.addEventListener("resize", updatePos); - }); - onBeforeUnmount(() => { - window.removeEventListener("resize", updatePos); - }); - const mergedPosInfo = computed(() => { - var _a2, _b; - if (!posInfo.value) { - return posInfo.value; - } - const gapOffset = ((_a2 = gap.value) === null || _a2 === void 0 ? void 0 : _a2.offset) || 6; - const gapRadius = ((_b = gap.value) === null || _b === void 0 ? void 0 : _b.radius) || 2; - return { - left: posInfo.value.left - gapOffset, - top: posInfo.value.top - gapOffset, - width: posInfo.value.width + gapOffset * 2, - height: posInfo.value.height + gapOffset * 2, - radius: gapRadius - }; - }); - return [mergedPosInfo, targetElement]; -} - -// node_modules/ant-design-vue/es/vc-tour/interface.js -var tourStepInfo = () => ({ - arrow: someType([Boolean, Object]), - target: someType([String, Function, Object]), - title: someType([String, Object]), - description: someType([String, Object]), - placement: stringType(), - mask: someType([Object, Boolean], true), - className: { - type: String - }, - style: objectType(), - scrollIntoViewOptions: someType([Boolean, Object]) -}); -var tourStepProps = () => _extends(_extends({}, tourStepInfo()), { - prefixCls: { - type: String - }, - total: { - type: Number - }, - current: { - type: Number - }, - onClose: functionType(), - onFinish: functionType(), - renderPanel: functionType(), - onPrev: functionType(), - onNext: functionType() -}); - -// node_modules/ant-design-vue/es/vc-tour/TourStep/DefaultPanel.js -var DefaultPanel = defineComponent({ - name: "DefaultPanel", - inheritAttrs: false, - props: tourStepProps(), - setup(props4, _ref) { - let { - attrs - } = _ref; - return () => { - const { - prefixCls, - current, - total, - title, - description, - onClose, - onPrev, - onNext, - onFinish - } = props4; - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(`${prefixCls}-content`, attrs.class) - }), [createVNode("div", { - "class": `${prefixCls}-inner` - }, [createVNode("button", { - "type": "button", - "onClick": onClose, - "aria-label": "Close", - "class": `${prefixCls}-close` - }, [createVNode("span", { - "class": `${prefixCls}-close-x` - }, [createTextVNode("×")])]), createVNode("div", { - "class": `${prefixCls}-header` - }, [createVNode("div", { - "class": `${prefixCls}-title` - }, [title])]), createVNode("div", { - "class": `${prefixCls}-description` - }, [description]), createVNode("div", { - "class": `${prefixCls}-footer` - }, [createVNode("div", { - "class": `${prefixCls}-sliders` - }, [total > 1 ? [...Array.from({ - length: total - }).keys()].map((item, index3) => { - return createVNode("span", { - "key": item, - "class": index3 === current ? "active" : "" - }, null); - }) : null]), createVNode("div", { - "class": `${prefixCls}-buttons` - }, [current !== 0 ? createVNode("button", { - "class": `${prefixCls}-prev-btn`, - "onClick": onPrev - }, [createTextVNode("Prev")]) : null, current === total - 1 ? createVNode("button", { - "class": `${prefixCls}-finish-btn`, - "onClick": onFinish - }, [createTextVNode("Finish")]) : createVNode("button", { - "class": `${prefixCls}-next-btn`, - "onClick": onNext - }, [createTextVNode("Next")])])])])]); - }; - } -}); -var DefaultPanel_default = DefaultPanel; - -// node_modules/ant-design-vue/es/vc-tour/TourStep/index.js -var TourStep = defineComponent({ - name: "TourStep", - inheritAttrs: false, - props: tourStepProps(), - setup(props4, _ref) { - let { - attrs - } = _ref; - return () => { - const { - current, - renderPanel - } = props4; - return createVNode(Fragment, null, [typeof renderPanel === "function" ? renderPanel(_extends(_extends({}, attrs), props4), current) : createVNode(DefaultPanel_default, _objectSpread2(_objectSpread2({}, attrs), props4), null)]); - }; - } -}); -var TourStep_default = TourStep; - -// node_modules/ant-design-vue/es/_util/hooks/useId.js -var uuid8 = 0; -var isBrowserClient2 = canUseDom_default(); -function getUUID3() { - let retId; - if (isBrowserClient2) { - retId = uuid8; - uuid8 += 1; - } else { - retId = "TEST_OR_SSR"; - } - return retId; -} -function useId2() { - let id = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ref(""); - const innerId = `vc_unique_${getUUID3()}`; - return id.value || innerId; -} - -// node_modules/ant-design-vue/es/vc-tour/Mask.js -var COVER_PROPS = { - fill: "transparent", - "pointer-events": "auto" -}; -var Mask2 = defineComponent({ - name: "TourMask", - props: { - prefixCls: { - type: String - }, - pos: objectType(), - rootClassName: { - type: String - }, - showMask: booleanType(), - fill: { - type: String, - default: "rgba(0,0,0,0.5)" - }, - open: booleanType(), - animated: someType([Boolean, Object]), - zIndex: { - type: Number - } - }, - setup(props4, _ref) { - let { - attrs - } = _ref; - const id = useId2(); - return () => { - const { - prefixCls, - open: open2, - rootClassName, - pos, - showMask, - fill: fill2, - animated, - zIndex - } = props4; - const maskId = `${prefixCls}-mask-${id}`; - const mergedAnimated = typeof animated === "object" ? animated === null || animated === void 0 ? void 0 : animated.placeholder : animated; - return createVNode(PortalWrapper_default, { - "visible": open2, - "autoLock": true - }, { - default: () => open2 && createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(`${prefixCls}-mask`, rootClassName, attrs.class), - "style": [{ - position: "fixed", - left: 0, - right: 0, - top: 0, - bottom: 0, - zIndex, - pointerEvents: "none" - }, attrs.style] - }), [showMask ? createVNode("svg", { - "style": { - width: "100%", - height: "100%" - } - }, [createVNode("defs", null, [createVNode("mask", { - "id": maskId - }, [createVNode("rect", { - "x": "0", - "y": "0", - "width": "100vw", - "height": "100vh", - "fill": "white" - }, null), pos && createVNode("rect", { - "x": pos.left, - "y": pos.top, - "rx": pos.radius, - "width": pos.width, - "height": pos.height, - "fill": "black", - "class": mergedAnimated ? `${prefixCls}-placeholder-animated` : "" - }, null)])]), createVNode("rect", { - "x": "0", - "y": "0", - "width": "100%", - "height": "100%", - "fill": fill2, - "mask": `url(#${maskId})` - }, null), pos && createVNode(Fragment, null, [createVNode("rect", _objectSpread2(_objectSpread2({}, COVER_PROPS), {}, { - "x": "0", - "y": "0", - "width": "100%", - "height": pos.top - }), null), createVNode("rect", _objectSpread2(_objectSpread2({}, COVER_PROPS), {}, { - "x": "0", - "y": "0", - "width": pos.left, - "height": "100%" - }), null), createVNode("rect", _objectSpread2(_objectSpread2({}, COVER_PROPS), {}, { - "x": "0", - "y": pos.top + pos.height, - "width": "100%", - "height": `calc(100vh - ${pos.top + pos.height}px)` - }), null), createVNode("rect", _objectSpread2(_objectSpread2({}, COVER_PROPS), {}, { - "x": pos.left + pos.width, - "y": "0", - "width": `calc(100vw - ${pos.left + pos.width}px)`, - "height": "100%" - }), null)])]) : null]) - }); - }; - } -}); -var Mask_default2 = Mask2; - -// node_modules/ant-design-vue/es/vc-tour/placements.js -var targetOffset4 = [0, 0]; -var basePlacements = { - left: { - points: ["cr", "cl"], - offset: [-8, 0] - }, - right: { - points: ["cl", "cr"], - offset: [8, 0] - }, - top: { - points: ["bc", "tc"], - offset: [0, -8] - }, - bottom: { - points: ["tc", "bc"], - offset: [0, 8] - }, - topLeft: { - points: ["bl", "tl"], - offset: [0, -8] - }, - leftTop: { - points: ["tr", "tl"], - offset: [-8, 0] - }, - topRight: { - points: ["br", "tr"], - offset: [0, -8] - }, - rightTop: { - points: ["tl", "tr"], - offset: [8, 0] - }, - bottomRight: { - points: ["tr", "br"], - offset: [0, 8] - }, - rightBottom: { - points: ["bl", "br"], - offset: [8, 0] - }, - bottomLeft: { - points: ["tl", "bl"], - offset: [0, 8] - }, - leftBottom: { - points: ["br", "bl"], - offset: [-8, 0] - } -}; -function getPlacements2() { - let arrowPointAtCenter = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; - const placements5 = {}; - Object.keys(basePlacements).forEach((key2) => { - placements5[key2] = _extends(_extends({}, basePlacements[key2]), { - autoArrow: arrowPointAtCenter, - targetOffset: targetOffset4 - }); - }); - return placements5; -} -var placements4 = getPlacements2(); - -// node_modules/ant-design-vue/es/vc-tour/Tour.js -var __rest79 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var CENTER_PLACEHOLDER = { - left: "50%", - top: "50%", - width: "1px", - height: "1px" -}; -var tourProps = () => { - const { - builtinPlacements, - popupAlign - } = triggerProps(); - return { - builtinPlacements, - popupAlign, - steps: arrayType(), - open: booleanType(), - defaultCurrent: { - type: Number - }, - current: { - type: Number - }, - onChange: functionType(), - onClose: functionType(), - onFinish: functionType(), - mask: someType([Boolean, Object], true), - arrow: someType([Boolean, Object], true), - rootClassName: { - type: String - }, - placement: stringType("bottom"), - prefixCls: { - type: String, - default: "rc-tour" - }, - renderPanel: functionType(), - gap: objectType(), - animated: someType([Boolean, Object]), - scrollIntoViewOptions: someType([Boolean, Object], true), - zIndex: { - type: Number, - default: 1001 - } - }; -}; -var Tour = defineComponent({ - name: "Tour", - inheritAttrs: false, - props: initDefaultProps_default(tourProps(), {}), - setup(props4) { - const { - defaultCurrent, - placement, - mask, - scrollIntoViewOptions, - open: open2, - gap, - arrow - } = toRefs(props4); - const triggerRef2 = ref(); - const [mergedCurrent, setMergedCurrent] = useMergedState(0, { - value: computed(() => props4.current), - defaultValue: defaultCurrent.value - }); - const [mergedOpen, setMergedOpen] = useMergedState(void 0, { - value: computed(() => props4.open), - postState: (origin) => mergedCurrent.value < 0 || mergedCurrent.value >= props4.steps.length ? false : origin !== null && origin !== void 0 ? origin : true - }); - const openRef = shallowRef(mergedOpen.value); - watchEffect(() => { - if (mergedOpen.value && !openRef.value) { - setMergedCurrent(0); - } - openRef.value = mergedOpen.value; - }); - const curStep = computed(() => props4.steps[mergedCurrent.value] || {}); - const mergedPlacement = computed(() => { - var _a2; - return (_a2 = curStep.value.placement) !== null && _a2 !== void 0 ? _a2 : placement.value; - }); - const mergedMask = computed(() => { - var _a2; - return mergedOpen.value && ((_a2 = curStep.value.mask) !== null && _a2 !== void 0 ? _a2 : mask.value); - }); - const mergedScrollIntoViewOptions = computed(() => { - var _a2; - return (_a2 = curStep.value.scrollIntoViewOptions) !== null && _a2 !== void 0 ? _a2 : scrollIntoViewOptions.value; - }); - const [posInfo, targetElement] = useTarget(computed(() => curStep.value.target), open2, gap, mergedScrollIntoViewOptions); - const mergedArrow = computed(() => targetElement.value ? typeof curStep.value.arrow === "undefined" ? arrow.value : curStep.value.arrow : false); - const arrowPointAtCenter = computed(() => typeof mergedArrow.value === "object" ? mergedArrow.value.pointAtCenter : false); - watch(arrowPointAtCenter, () => { - var _a2; - (_a2 = triggerRef2.value) === null || _a2 === void 0 ? void 0 : _a2.forcePopupAlign(); - }); - watch(mergedCurrent, () => { - var _a2; - (_a2 = triggerRef2.value) === null || _a2 === void 0 ? void 0 : _a2.forcePopupAlign(); - }); - const onInternalChange = (nextCurrent) => { - var _a2; - setMergedCurrent(nextCurrent); - (_a2 = props4.onChange) === null || _a2 === void 0 ? void 0 : _a2.call(props4, nextCurrent); - }; - return () => { - var _a2; - const { - prefixCls, - steps, - onClose, - onFinish, - rootClassName, - renderPanel, - animated, - zIndex - } = props4, restProps = __rest79(props4, ["prefixCls", "steps", "onClose", "onFinish", "rootClassName", "renderPanel", "animated", "zIndex"]); - if (targetElement.value === void 0) { - return null; - } - const handleClose = () => { - setMergedOpen(false); - onClose === null || onClose === void 0 ? void 0 : onClose(mergedCurrent.value); - }; - const mergedShowMask = typeof mergedMask.value === "boolean" ? mergedMask.value : !!mergedMask.value; - const mergedMaskStyle = typeof mergedMask.value === "boolean" ? void 0 : mergedMask.value; - const getTriggerDOMNode = () => { - return targetElement.value || document.body; - }; - const getPopupElement = () => createVNode(TourStep_default, _objectSpread2({ - "arrow": mergedArrow.value, - "key": "content", - "prefixCls": prefixCls, - "total": steps.length, - "renderPanel": renderPanel, - "onPrev": () => { - onInternalChange(mergedCurrent.value - 1); - }, - "onNext": () => { - onInternalChange(mergedCurrent.value + 1); - }, - "onClose": handleClose, - "current": mergedCurrent.value, - "onFinish": () => { - handleClose(); - onFinish === null || onFinish === void 0 ? void 0 : onFinish(); - } - }, curStep.value), null); - const posInfoStyle = computed(() => { - const info = posInfo.value || CENTER_PLACEHOLDER; - const style = {}; - Object.keys(info).forEach((key2) => { - if (typeof info[key2] === "number") { - style[key2] = `${info[key2]}px`; - } else { - style[key2] = info[key2]; - } - }); - return style; - }); - return mergedOpen.value ? createVNode(Fragment, null, [createVNode(Mask_default2, { - "zIndex": zIndex, - "prefixCls": prefixCls, - "pos": posInfo.value, - "showMask": mergedShowMask, - "style": mergedMaskStyle === null || mergedMaskStyle === void 0 ? void 0 : mergedMaskStyle.style, - "fill": mergedMaskStyle === null || mergedMaskStyle === void 0 ? void 0 : mergedMaskStyle.color, - "open": mergedOpen.value, - "animated": animated, - "rootClassName": rootClassName - }, null), createVNode(vc_trigger_default, _objectSpread2(_objectSpread2({}, restProps), {}, { - "builtinPlacements": !curStep.value.target ? void 0 : (_a2 = restProps.builtinPlacements) !== null && _a2 !== void 0 ? _a2 : getPlacements2(arrowPointAtCenter.value), - "ref": triggerRef2, - "popupStyle": !curStep.value.target ? _extends(_extends({}, curStep.value.style), { - position: "fixed", - left: CENTER_PLACEHOLDER.left, - top: CENTER_PLACEHOLDER.top, - transform: "translate(-50%, -50%)" - }) : curStep.value.style, - "popupPlacement": mergedPlacement.value, - "popupVisible": mergedOpen.value, - "popupClassName": classNames_default(rootClassName, curStep.value.className), - "prefixCls": prefixCls, - "popup": getPopupElement, - "forceRender": false, - "destroyPopupOnHide": true, - "zIndex": zIndex, - "mask": false, - "getTriggerDOMNode": getTriggerDOMNode - }), { - default: () => [createVNode(PortalWrapper_default, { - "visible": mergedOpen.value, - "autoLock": true - }, { - default: () => [createVNode("div", { - "class": classNames_default(rootClassName, `${prefixCls}-target-placeholder`), - "style": _extends(_extends({}, posInfoStyle.value), { - position: "fixed", - pointerEvents: "none" - }) - }, null)] - })] - })]) : null; - }; - } -}); -var Tour_default = Tour; - -// node_modules/ant-design-vue/es/vc-tour/index.js -var vc_tour_default = Tour_default; - -// node_modules/ant-design-vue/es/tour/interface.js -var tourProps2 = () => _extends(_extends({}, tourProps()), { - steps: { - type: Array - }, - prefixCls: { - type: String - }, - current: { - type: Number - }, - type: { - type: String - }, - "onUpdate:current": Function -}); -var tourStepProps2 = () => _extends(_extends({}, tourStepProps()), { - cover: { - type: Object - }, - nextButtonProps: { - type: Object - }, - prevButtonProps: { - type: Object - }, - current: { - type: Number - }, - type: { - type: String - } -}); - -// node_modules/ant-design-vue/es/tour/panelRender.js -var panelRender = defineComponent({ - name: "ATourPanel", - inheritAttrs: false, - props: tourStepProps2(), - setup(props4, _ref) { - let { - attrs, - slots - } = _ref; - const { - current, - total - } = toRefs(props4); - const isLastStep = computed(() => current.value === total.value - 1); - const prevBtnClick = (e3) => { - var _a2; - const prevButtonProps = props4.prevButtonProps; - (_a2 = props4.onPrev) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - if (typeof (prevButtonProps === null || prevButtonProps === void 0 ? void 0 : prevButtonProps.onClick) === "function") { - prevButtonProps === null || prevButtonProps === void 0 ? void 0 : prevButtonProps.onClick(); - } - }; - const nextBtnClick = (e3) => { - var _a2, _b; - const nextButtonProps = props4.nextButtonProps; - if (isLastStep.value) { - (_a2 = props4.onFinish) === null || _a2 === void 0 ? void 0 : _a2.call(props4, e3); - } else { - (_b = props4.onNext) === null || _b === void 0 ? void 0 : _b.call(props4, e3); - } - if (typeof (nextButtonProps === null || nextButtonProps === void 0 ? void 0 : nextButtonProps.onClick) === "function") { - nextButtonProps === null || nextButtonProps === void 0 ? void 0 : nextButtonProps.onClick(); - } - }; - return () => { - const { - prefixCls, - title, - onClose, - cover, - description, - type: stepType, - arrow - } = props4; - const prevButtonProps = props4.prevButtonProps; - const nextButtonProps = props4.nextButtonProps; - let headerNode; - if (title) { - headerNode = createVNode("div", { - "class": `${prefixCls}-header` - }, [createVNode("div", { - "class": `${prefixCls}-title` - }, [title])]); - } - let descriptionNode; - if (description) { - descriptionNode = createVNode("div", { - "class": `${prefixCls}-description` - }, [description]); - } - let coverNode; - if (cover) { - coverNode = createVNode("div", { - "class": `${prefixCls}-cover` - }, [cover]); - } - let mergeIndicatorNode; - if (slots.indicatorsRender) { - mergeIndicatorNode = slots.indicatorsRender({ - current: current.value, - total - }); - } else { - mergeIndicatorNode = [...Array.from({ - length: total.value - }).keys()].map((stepItem, index3) => createVNode("span", { - "key": stepItem, - "class": classNames_default(index3 === current.value && `${prefixCls}-indicator-active`, `${prefixCls}-indicator`) - }, null)); - } - const mainBtnType = stepType === "primary" ? "default" : "primary"; - const secondaryBtnProps = { - type: "default", - ghost: stepType === "primary" - }; - return createVNode(LocaleReceiver_default, { - "componentName": "Tour", - "defaultLocale": en_US_default6.Tour - }, { - default: (contextLocale) => { - var _a2, _b; - return createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, { - "class": classNames_default(stepType === "primary" ? `${prefixCls}-primary` : "", attrs.class, `${prefixCls}-content`) - }), [arrow && createVNode("div", { - "class": `${prefixCls}-arrow`, - "key": "arrow" - }, null), createVNode("div", { - "class": `${prefixCls}-inner` - }, [createVNode(CloseOutlined_default, { - "class": `${prefixCls}-close`, - "onClick": onClose - }, null), coverNode, headerNode, descriptionNode, createVNode("div", { - "class": `${prefixCls}-footer` - }, [total.value > 1 && createVNode("div", { - "class": `${prefixCls}-indicators` - }, [mergeIndicatorNode]), createVNode("div", { - "class": `${prefixCls}-buttons` - }, [current.value !== 0 ? createVNode(button_default2, _objectSpread2(_objectSpread2(_objectSpread2({}, secondaryBtnProps), prevButtonProps), {}, { - "onClick": prevBtnClick, - "size": "small", - "class": classNames_default(`${prefixCls}-prev-btn`, prevButtonProps === null || prevButtonProps === void 0 ? void 0 : prevButtonProps.className) - }), { - default: () => [(_a2 = prevButtonProps === null || prevButtonProps === void 0 ? void 0 : prevButtonProps.children) !== null && _a2 !== void 0 ? _a2 : contextLocale.Previous] - }) : null, createVNode(button_default2, _objectSpread2(_objectSpread2({ - "type": mainBtnType - }, nextButtonProps), {}, { - "onClick": nextBtnClick, - "size": "small", - "class": classNames_default(`${prefixCls}-next-btn`, nextButtonProps === null || nextButtonProps === void 0 ? void 0 : nextButtonProps.className) - }), { - default: () => [(_b = nextButtonProps === null || nextButtonProps === void 0 ? void 0 : nextButtonProps.children) !== null && _b !== void 0 ? _b : isLastStep.value ? contextLocale.Finish : contextLocale.Next] - })])])])]); - } - }); - }; - } -}); -var panelRender_default = panelRender; - -// node_modules/ant-design-vue/es/tour/useMergedType.js -var useMergedType = (_ref) => { - let { - defaultType, - steps, - current, - defaultCurrent - } = _ref; - const innerCurrent = ref(defaultCurrent === null || defaultCurrent === void 0 ? void 0 : defaultCurrent.value); - const mergedCurrent = computed(() => current === null || current === void 0 ? void 0 : current.value); - watch(mergedCurrent, (val) => { - innerCurrent.value = val !== null && val !== void 0 ? val : defaultCurrent === null || defaultCurrent === void 0 ? void 0 : defaultCurrent.value; - }, { - immediate: true - }); - const updateInnerCurrent = (val) => { - innerCurrent.value = val; - }; - const innerType = computed(() => { - var _a2, _b; - return typeof innerCurrent.value === "number" ? steps && ((_b = (_a2 = steps.value) === null || _a2 === void 0 ? void 0 : _a2[innerCurrent.value]) === null || _b === void 0 ? void 0 : _b.type) : defaultType === null || defaultType === void 0 ? void 0 : defaultType.value; - }); - const currentMergedType = computed(() => { - var _a2; - return (_a2 = innerType.value) !== null && _a2 !== void 0 ? _a2 : defaultType === null || defaultType === void 0 ? void 0 : defaultType.value; - }); - return { - currentMergedType, - updateInnerCurrent - }; -}; -var useMergedType_default = useMergedType; - -// node_modules/ant-design-vue/es/tour/style/index.js -var genBaseStyle19 = (token2) => { - const { - componentCls, - lineHeight, - padding, - paddingXS, - borderRadius, - borderRadiusXS, - colorPrimary, - colorText, - colorFill, - indicatorHeight, - indicatorWidth, - boxShadowTertiary, - tourZIndexPopup, - fontSize, - colorBgContainer, - fontWeightStrong, - marginXS, - colorTextLightSolid, - tourBorderRadius, - colorWhite, - colorBgTextHover, - tourCloseSize, - motionDurationSlow, - antCls - } = token2; - return [ - { - [componentCls]: _extends(_extends({}, resetComponent(token2)), { - color: colorText, - position: "absolute", - zIndex: tourZIndexPopup, - display: "block", - visibility: "visible", - fontSize, - lineHeight, - width: 520, - "--antd-arrow-background-color": colorBgContainer, - "&-pure": { - maxWidth: "100%", - position: "relative" - }, - [`&${componentCls}-hidden`]: { - display: "none" - }, - // ============================= panel content ============================ - [`${componentCls}-content`]: { - position: "relative" - }, - [`${componentCls}-inner`]: { - textAlign: "start", - textDecoration: "none", - borderRadius: tourBorderRadius, - boxShadow: boxShadowTertiary, - position: "relative", - backgroundColor: colorBgContainer, - border: "none", - backgroundClip: "padding-box", - [`${componentCls}-close`]: { - position: "absolute", - top: padding, - insetInlineEnd: padding, - color: token2.colorIcon, - outline: "none", - width: tourCloseSize, - height: tourCloseSize, - borderRadius: token2.borderRadiusSM, - transition: `background-color ${token2.motionDurationMid}, color ${token2.motionDurationMid}`, - display: "flex", - alignItems: "center", - justifyContent: "center", - "&:hover": { - color: token2.colorIconHover, - backgroundColor: token2.wireframe ? "transparent" : token2.colorFillContent - } - }, - [`${componentCls}-cover`]: { - textAlign: "center", - padding: `${padding + tourCloseSize + paddingXS}px ${padding}px 0`, - img: { - width: "100%" - } - }, - [`${componentCls}-header`]: { - padding: `${padding}px ${padding}px ${paddingXS}px`, - [`${componentCls}-title`]: { - lineHeight, - fontSize, - fontWeight: fontWeightStrong - } - }, - [`${componentCls}-description`]: { - padding: `0 ${padding}px`, - lineHeight, - wordWrap: "break-word" - }, - [`${componentCls}-footer`]: { - padding: `${paddingXS}px ${padding}px ${padding}px`, - textAlign: "end", - borderRadius: `0 0 ${borderRadiusXS}px ${borderRadiusXS}px`, - display: "flex", - [`${componentCls}-indicators`]: { - display: "inline-block", - [`${componentCls}-indicator`]: { - width: indicatorWidth, - height: indicatorHeight, - display: "inline-block", - borderRadius: "50%", - background: colorFill, - "&:not(:last-child)": { - marginInlineEnd: indicatorHeight - }, - "&-active": { - background: colorPrimary - } - } - }, - [`${componentCls}-buttons`]: { - marginInlineStart: "auto", - [`${antCls}-btn`]: { - marginInlineStart: marginXS - } - } - } - }, - // ============================= primary type =========================== - // `$` for panel, `&$` for pure panel - [`${componentCls}-primary, &${componentCls}-primary`]: { - "--antd-arrow-background-color": colorPrimary, - [`${componentCls}-inner`]: { - color: colorTextLightSolid, - textAlign: "start", - textDecoration: "none", - backgroundColor: colorPrimary, - borderRadius, - boxShadow: boxShadowTertiary, - [`${componentCls}-close`]: { - color: colorTextLightSolid - }, - [`${componentCls}-indicators`]: { - [`${componentCls}-indicator`]: { - background: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(), - "&-active": { - background: colorTextLightSolid - } - } - }, - [`${componentCls}-prev-btn`]: { - color: colorTextLightSolid, - borderColor: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(), - backgroundColor: colorPrimary, - "&:hover": { - backgroundColor: new TinyColor(colorTextLightSolid).setAlpha(0.15).toRgbString(), - borderColor: "transparent" - } - }, - [`${componentCls}-next-btn`]: { - color: colorPrimary, - borderColor: "transparent", - background: colorWhite, - "&:hover": { - background: new TinyColor(colorBgTextHover).onBackground(colorWhite).toRgbString() - } - } - } - } - }), - // ============================= mask =========================== - [`${componentCls}-mask`]: { - [`${componentCls}-placeholder-animated`]: { - transition: `all ${motionDurationSlow}` - } - }, - // =========== Limit left and right placement radius ============== - [["&-placement-left", "&-placement-leftTop", "&-placement-leftBottom", "&-placement-right", "&-placement-rightTop", "&-placement-rightBottom"].join(",")]: { - [`${componentCls}-inner`]: { - borderRadius: Math.min(tourBorderRadius, MAX_VERTICAL_CONTENT_RADIUS) - } - } - }, - // ============================= Arrow =========================== - getArrowStyle(token2, { - colorBg: "var(--antd-arrow-background-color)", - contentRadius: tourBorderRadius, - limitVerticalRadius: true - }) - ]; -}; -var style_default62 = genComponentStyleHook("Tour", (token2) => { - const { - borderRadiusLG, - fontSize, - lineHeight - } = token2; - const TourToken = merge(token2, { - tourZIndexPopup: token2.zIndexPopupBase + 70, - indicatorWidth: 6, - indicatorHeight: 6, - tourBorderRadius: borderRadiusLG, - tourCloseSize: fontSize * lineHeight - }); - return [genBaseStyle19(TourToken)]; -}); - -// node_modules/ant-design-vue/es/tour/index.js -var __rest80 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var Tour2 = defineComponent({ - name: "ATour", - inheritAttrs: false, - props: tourProps2(), - setup(props4, _ref) { - let { - attrs, - emit, - slots - } = _ref; - const { - current, - type: type4, - steps, - defaultCurrent - } = toRefs(props4); - const { - prefixCls, - direction - } = useConfigInject_default("tour", props4); - const [wrapSSR, hashId] = style_default62(prefixCls); - const { - currentMergedType, - updateInnerCurrent - } = useMergedType_default({ - defaultType: type4, - steps, - current, - defaultCurrent - }); - return () => { - const { - steps: steps2, - current: current2, - type: type5, - rootClassName - } = props4, restProps = __rest80(props4, ["steps", "current", "type", "rootClassName"]); - const customClassName = classNames_default({ - [`${prefixCls.value}-primary`]: currentMergedType.value === "primary", - [`${prefixCls.value}-rtl`]: direction.value === "rtl" - }, hashId.value, rootClassName); - const mergedRenderPanel = (stepProps, stepCurrent) => { - return createVNode(panelRender_default, _objectSpread2(_objectSpread2({}, stepProps), {}, { - "type": type5, - "current": stepCurrent - }), { - indicatorsRender: slots.indicatorsRender - }); - }; - const onStepChange = (stepCurrent) => { - updateInnerCurrent(stepCurrent); - emit("update:current", stepCurrent); - emit("change", stepCurrent); - }; - const builtinPlacements = computed(() => getPlacements({ - arrowPointAtCenter: true, - autoAdjustOverflow: true - })); - return wrapSSR(createVNode(vc_tour_default, _objectSpread2(_objectSpread2(_objectSpread2({}, attrs), restProps), {}, { - "rootClassName": customClassName, - "prefixCls": prefixCls.value, - "current": current2, - "defaultCurrent": props4.defaultCurrent, - "animated": true, - "renderPanel": mergedRenderPanel, - "onChange": onStepChange, - "steps": steps2, - "builtinPlacements": builtinPlacements.value - }), null)); - }; - } -}); -var tour_default = withInstall(Tour2); - -// node_modules/ant-design-vue/es/app/context.js -var AppConfigContextKey = Symbol("appConfigContext"); -var useProvideAppConfigContext = (appConfigContext) => { - return provide(AppConfigContextKey, appConfigContext); -}; -var useInjectAppConfigContext = () => { - return inject(AppConfigContextKey, {}); -}; -var AppContextKey = Symbol("appContext"); -var useProvideAppContext = (appContext) => { - return provide(AppContextKey, appContext); -}; -var defaultAppContext = reactive({ - message: {}, - notification: {}, - modal: {} -}); -var useInjectAppContext = () => { - return inject(AppContextKey, defaultAppContext); -}; - -// node_modules/ant-design-vue/es/app/style/index.js -var genBaseStyle20 = (token2) => { - const { - componentCls, - colorText, - fontSize, - lineHeight, - fontFamily - } = token2; - return { - [componentCls]: { - color: colorText, - fontSize, - lineHeight, - fontFamily - } - }; -}; -var style_default63 = genComponentStyleHook("App", (token2) => [genBaseStyle20(token2)]); - -// node_modules/ant-design-vue/es/app/index.js -var AppProps = () => { - return { - rootClassName: String, - message: objectType(), - notification: objectType() - }; -}; -var useApp = () => { - return useInjectAppContext(); -}; -var App = defineComponent({ - name: "AApp", - props: initDefaultProps_default(AppProps(), {}), - setup(props4, _ref) { - let { - slots - } = _ref; - const { - prefixCls - } = useConfigInject_default("app", props4); - const [wrapSSR, hashId] = style_default63(prefixCls); - const customClassName = computed(() => { - return classNames_default(hashId.value, prefixCls.value, props4.rootClassName); - }); - const appConfig = useInjectAppConfigContext(); - const mergedAppConfig = computed(() => ({ - message: _extends(_extends({}, appConfig.message), props4.message), - notification: _extends(_extends({}, appConfig.notification), props4.notification) - })); - useProvideAppConfigContext(mergedAppConfig.value); - const [messageApi, messageContextHolder] = useMessage(mergedAppConfig.value.message); - const [notificationApi, notificationContextHolder] = useNotification2(mergedAppConfig.value.notification); - const [ModalApi, ModalContextHolder] = useModal_default(); - const memoizedContextValue = computed(() => ({ - message: messageApi, - notification: notificationApi, - modal: ModalApi - })); - useProvideAppContext(memoizedContextValue.value); - return () => { - var _a2; - return wrapSSR(createVNode("div", { - "class": customClassName.value - }, [ModalContextHolder(), messageContextHolder(), notificationContextHolder(), (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)])); - }; - } -}); -App.useApp = useApp; -App.install = function(app) { - app.component(App.name, App); -}; -var app_default = App; - -// node_modules/ant-design-vue/es/flex/utils.js -var flexWrapValues = ["wrap", "nowrap", "wrap-reverse"]; -var justifyContentValues = ["flex-start", "flex-end", "start", "end", "center", "space-between", "space-around", "space-evenly", "stretch", "normal", "left", "right"]; -var alignItemsValues = ["center", "start", "end", "flex-start", "flex-end", "self-start", "self-end", "baseline", "normal", "stretch"]; -var genClsWrap = (prefixCls, props4) => { - const wrapCls = {}; - flexWrapValues.forEach((cssKey) => { - wrapCls[`${prefixCls}-wrap-${cssKey}`] = props4.wrap === cssKey; - }); - return wrapCls; -}; -var genClsAlign = (prefixCls, props4) => { - const alignCls = {}; - alignItemsValues.forEach((cssKey) => { - alignCls[`${prefixCls}-align-${cssKey}`] = props4.align === cssKey; - }); - alignCls[`${prefixCls}-align-stretch`] = !props4.align && !!props4.vertical; - return alignCls; -}; -var genClsJustify = (prefixCls, props4) => { - const justifyCls = {}; - justifyContentValues.forEach((cssKey) => { - justifyCls[`${prefixCls}-justify-${cssKey}`] = props4.justify === cssKey; - }); - return justifyCls; -}; -function createFlexClassNames(prefixCls, props4) { - return classNames_default(_extends(_extends(_extends({}, genClsWrap(prefixCls, props4)), genClsAlign(prefixCls, props4)), genClsJustify(prefixCls, props4))); -} -var utils_default = createFlexClassNames; - -// node_modules/ant-design-vue/es/flex/style/index.js -var genFlexStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - display: "flex", - "&-vertical": { - flexDirection: "column" - }, - "&-rtl": { - direction: "rtl" - }, - "&:empty": { - display: "none" - } - } - }; -}; -var genFlexGapStyle = (token2) => { - const { - componentCls - } = token2; - return { - [componentCls]: { - "&-gap-small": { - gap: token2.flexGapSM - }, - "&-gap-middle": { - gap: token2.flexGap - }, - "&-gap-large": { - gap: token2.flexGapLG - } - } - }; -}; -var genFlexWrapStyle = (token2) => { - const { - componentCls - } = token2; - const wrapStyle = {}; - flexWrapValues.forEach((value) => { - wrapStyle[`${componentCls}-wrap-${value}`] = { - flexWrap: value - }; - }); - return wrapStyle; -}; -var genAlignItemsStyle = (token2) => { - const { - componentCls - } = token2; - const alignStyle = {}; - alignItemsValues.forEach((value) => { - alignStyle[`${componentCls}-align-${value}`] = { - alignItems: value - }; - }); - return alignStyle; -}; -var genJustifyContentStyle = (token2) => { - const { - componentCls - } = token2; - const justifyStyle = {}; - justifyContentValues.forEach((value) => { - justifyStyle[`${componentCls}-justify-${value}`] = { - justifyContent: value - }; - }); - return justifyStyle; -}; -var style_default64 = genComponentStyleHook("Flex", (token2) => { - const flexToken = merge(token2, { - flexGapSM: token2.paddingXS, - flexGap: token2.padding, - flexGapLG: token2.paddingLG - }); - return [genFlexStyle(flexToken), genFlexGapStyle(flexToken), genFlexWrapStyle(flexToken), genAlignItemsStyle(flexToken), genJustifyContentStyle(flexToken)]; -}); - -// node_modules/ant-design-vue/es/_util/gapSize.js -function isPresetSize(size2) { - return ["small", "middle", "large"].includes(size2); -} - -// node_modules/ant-design-vue/es/flex/interface.js -var flexProps = () => ({ - prefixCls: stringType(), - vertical: booleanType(), - wrap: stringType(), - justify: stringType(), - align: stringType(), - flex: someType([Number, String]), - gap: someType([Number, String]), - component: anyType() -}); - -// node_modules/ant-design-vue/es/flex/index.js -var __rest81 = function(s2, e3) { - var t3 = {}; - for (var p in s2) if (Object.prototype.hasOwnProperty.call(s2, p) && e3.indexOf(p) < 0) t3[p] = s2[p]; - if (s2 != null && typeof Object.getOwnPropertySymbols === "function") for (var i3 = 0, p = Object.getOwnPropertySymbols(s2); i3 < p.length; i3++) { - if (e3.indexOf(p[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i3])) t3[p[i3]] = s2[p[i3]]; - } - return t3; -}; -var AFlex = defineComponent({ - name: "AFlex", - inheritAttrs: false, - props: flexProps(), - setup(props4, _ref) { - let { - slots, - attrs - } = _ref; - const { - flex: ctxFlex, - direction: ctxDirection - } = useConfigContextInject(); - const { - prefixCls - } = useConfigInject_default("flex", props4); - const [wrapSSR, hashId] = style_default64(prefixCls); - const mergedCls = computed(() => { - var _a2; - return [prefixCls.value, hashId.value, utils_default(prefixCls.value, props4), { - [`${prefixCls.value}-rtl`]: ctxDirection.value === "rtl", - [`${prefixCls.value}-gap-${props4.gap}`]: isPresetSize(props4.gap), - [`${prefixCls.value}-vertical`]: (_a2 = props4.vertical) !== null && _a2 !== void 0 ? _a2 : ctxFlex === null || ctxFlex === void 0 ? void 0 : ctxFlex.value.vertical - }]; - }); - return () => { - var _a2; - const { - flex, - gap, - component: Component = "div" - } = props4, othersProps = __rest81(props4, ["flex", "gap", "component"]); - const mergedStyle = {}; - if (flex) { - mergedStyle.flex = flex; - } - if (gap && !isPresetSize(gap)) { - mergedStyle.gap = `${gap}px`; - } - return wrapSSR(createVNode(Component, _objectSpread2({ - "class": [attrs.class, mergedCls.value], - "style": [attrs.style, mergedStyle] - }, omit_default(othersProps, ["justify", "wrap", "align", "vertical"])), { - default: () => [(_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots)] - })); - }; - } -}); -var flex_default = withInstall(AFlex); - -// node_modules/ant-design-vue/es/theme/themes/dark/colorAlgorithm.js -var getAlphaColor3 = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString(); -var getSolidColor2 = (baseColor, brightness) => { - const instance = new TinyColor(baseColor); - return instance.lighten(brightness).toHexString(); -}; - -// node_modules/ant-design-vue/es/theme/themes/dark/colors.js -var generateColorPalettes2 = (baseColor) => { - const colors = generate(baseColor, { - theme: "dark" - }); - return { - 1: colors[0], - 2: colors[1], - 3: colors[2], - 4: colors[3], - 5: colors[6], - 6: colors[5], - 7: colors[4], - 8: colors[6], - 9: colors[5], - 10: colors[4] - // 8: colors[9], - // 9: colors[8], - // 10: colors[7], - }; -}; -var generateNeutralColorPalettes2 = (bgBaseColor, textBaseColor) => { - const colorBgBase = bgBaseColor || "#000"; - const colorTextBase = textBaseColor || "#fff"; - return { - colorBgBase, - colorTextBase, - colorText: getAlphaColor3(colorTextBase, 0.85), - colorTextSecondary: getAlphaColor3(colorTextBase, 0.65), - colorTextTertiary: getAlphaColor3(colorTextBase, 0.45), - colorTextQuaternary: getAlphaColor3(colorTextBase, 0.25), - colorFill: getAlphaColor3(colorTextBase, 0.18), - colorFillSecondary: getAlphaColor3(colorTextBase, 0.12), - colorFillTertiary: getAlphaColor3(colorTextBase, 0.08), - colorFillQuaternary: getAlphaColor3(colorTextBase, 0.04), - colorBgElevated: getSolidColor2(colorBgBase, 12), - colorBgContainer: getSolidColor2(colorBgBase, 8), - colorBgLayout: getSolidColor2(colorBgBase, 0), - colorBgSpotlight: getSolidColor2(colorBgBase, 26), - colorBorder: getSolidColor2(colorBgBase, 26), - colorBorderSecondary: getSolidColor2(colorBgBase, 19) - }; -}; - -// node_modules/ant-design-vue/es/theme/themes/dark/index.js -var derivative2 = (token2, mapToken) => { - const colorPalettes = Object.keys(defaultPresetColors).map((colorKey) => { - const colors = generate(token2[colorKey], { - theme: "dark" - }); - return new Array(10).fill(1).reduce((prev2, _2, i3) => { - prev2[`${colorKey}-${i3 + 1}`] = colors[i3]; - return prev2; - }, {}); - }).reduce((prev2, cur) => { - prev2 = _extends(_extends({}, prev2), cur); - return prev2; - }, {}); - const mergedMapToken = mapToken !== null && mapToken !== void 0 ? mapToken : derivative(token2); - return _extends(_extends(_extends({}, mergedMapToken), colorPalettes), genColorMapToken(token2, { - generateColorPalettes: generateColorPalettes2, - generateNeutralColorPalettes: generateNeutralColorPalettes2 - })); -}; -var dark_default = derivative2; - -// node_modules/ant-design-vue/es/theme/themes/compact/genCompactSizeMapToken.js -function genSizeMapToken2(token2) { - const { - sizeUnit, - sizeStep - } = token2; - const compactSizeStep = sizeStep - 2; - return { - sizeXXL: sizeUnit * (compactSizeStep + 10), - sizeXL: sizeUnit * (compactSizeStep + 6), - sizeLG: sizeUnit * (compactSizeStep + 2), - sizeMD: sizeUnit * (compactSizeStep + 2), - sizeMS: sizeUnit * (compactSizeStep + 1), - size: sizeUnit * compactSizeStep, - sizeSM: sizeUnit * compactSizeStep, - sizeXS: sizeUnit * (compactSizeStep - 1), - sizeXXS: sizeUnit * (compactSizeStep - 1) - }; -} - -// node_modules/ant-design-vue/es/theme/themes/compact/index.js -var derivative3 = (token2, mapToken) => { - const mergedMapToken = mapToken !== null && mapToken !== void 0 ? mapToken : derivative(token2); - const fontSize = mergedMapToken.fontSizeSM; - const controlHeight = mergedMapToken.controlHeight - 4; - return _extends(_extends(_extends(_extends(_extends({}, mergedMapToken), genSizeMapToken2(mapToken !== null && mapToken !== void 0 ? mapToken : token2)), genFontMapToken_default(fontSize)), { - // controlHeight - controlHeight - }), genControlHeight_default(_extends(_extends({}, mergedMapToken), { - controlHeight - }))); -}; -var compact_default3 = derivative3; - -// node_modules/ant-design-vue/es/theme/index.js -function useToken2() { - const [theme, token2, hashId] = useToken(); - return { - theme, - token: token2, - hashId - }; -} -var theme_default2 = { - /** @private Test Usage. Do not use in production. */ - defaultConfig, - /** Default seedToken */ - defaultSeed: defaultConfig.token, - useToken: useToken2, - defaultAlgorithm: derivative, - darkAlgorithm: dark_default, - compactAlgorithm: compact_default3 -}; - -// node_modules/ant-design-vue/es/index.js -var install = function(app) { - Object.keys(components_exports).forEach((key2) => { - const component = components_exports[key2]; - if (component.install) { - app.use(component); - } - }); - app.use(cssinjs_default.StyleProvider); - app.config.globalProperties.$message = message_default; - app.config.globalProperties.$notification = notification_default; - app.config.globalProperties.$info = modal_default.info; - app.config.globalProperties.$success = modal_default.success; - app.config.globalProperties.$error = modal_default.error; - app.config.globalProperties.$warning = modal_default.warning; - app.config.globalProperties.$confirm = modal_default.confirm; - app.config.globalProperties.$destroyAll = modal_default.destroyAll; - return app; -}; -var es_default2 = { - version: version_default2, - install -}; - -export { - createCache, - useStyleInject, - useStyleProvider, - StyleProvider, - Theme, - createTheme, - useCacheToken, - legacyNotSelectorLinter_default, - logicalPropertiesLinter_default, - parentSelectorLinter_default, - useStyleRegister, - extractStyle, - Keyframes_default, - legacyLogicalProperties_default, - px2rem_default, - _experimental, - cssinjs_default, - version_default2 as version_default, - empty_default2 as empty_default, - affix_default, - AnchorLink_default, - anchor_default, - FormItemContext_default, - Compact_default, - SelectOption, - SelectOptGroup, - select_default, - AutoCompleteOption, - AutoCompleteOptGroup, - auto_complete_default, - alert_default, - tooltip_default, - popover_default, - Group_default, - avatar_default, - Ribbon_default, - badge_default, - button_group_default, - button_default2 as button_default, - dropdown_button_default, - BreadcrumbItem_default, - MenuItem_default, - SubMenu_default, - ItemGroup_default, - Divider_default, - menu_default, - BreadcrumbSeparator_default, - breadcrumb_default, - Group_default2, - RadioButton_default, - radio_default, - calendar_default, - TabPane_default, - tabs_default, - Title_default, - Button_default, - Input_default2 as Input_default, - Image_default, - Avatar_default2 as Avatar_default, - skeleton_default, - Meta_default, - Grid_default, - card_default, - CollapsePanel_default, - collapse_default2 as collapse_default, - carousel_default, - FormItem_default, - form_default, - cascader_default, - Group_default3, - checkbox_default, - grid_default, - col_default, - comment_default, - locale_provider_default, - message_default, - notification_default, - config_provider_default, - CheckableTag_default, - tag_default, - WeekPicker, - MonthPicker, - QuarterPicker, - RangePicker, - date_picker_default, - DescriptionsItem, - descriptions_default, - divider_default, - dropdown_default3 as dropdown_default, - drawer_default, - FloatButtonGroup_default, - BackTop_default, - float_button_default, - Group_default4, - Search_default, - TextArea_default, - Password_default, - input_default, - PreviewGroup_default2 as PreviewGroup_default, - image_default, - input_number_default, - LayoutHeader, - LayoutFooter, - LayoutSider, - LayoutContent, - layout_default2 as layout_default, - spin_default, - pagination_default, - ItemMeta_default, - Item_default3 as Item_default, - list_default, - MentionsOption, - mentions_default, - modal_default, - StatisticCountdown, - statistic_default, - space_default, - page_header_default, - popconfirm_default, - progress_default2 as progress_default, - rate_default, - result_default2 as result_default, - row_default, - slider_default2 as slider_default, - Step, - steps_default, - switch_default, - DirectoryTree_default, - TreeNode, - tree_default, - Column_default2 as Column_default, - ColumnGroup_default2 as ColumnGroup_default, - TableSummaryRow, - TableSummaryCell, - TableSummary, - table_default, - transfer_default, - TreeSelectNode, - tree_select_default, - TimeRangePicker, - time_picker_default2 as time_picker_default, - TimelineItem_default, - timeline_default, - Link_default, - Paragraph_default2 as Paragraph_default, - Text_default, - Title_default2, - typography_default, - UploadDragger, - upload_default, - watermark_default, - segmented_default2 as segmented_default, - qrcode_default, - tour_default, - app_default, - flex_default, - theme_default2 as theme_default, - install, - es_default2 as es_default -}; -/*! Bundled license information: - -lodash-es/lodash.default.js: - (** - * @license - * Lodash (Custom Build) - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) - -lodash-es/lodash.js: - (** - * @license - * Lodash (Custom Build) - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) - -ant-design-vue/es/qrcode/qrcodegen.js: - (** - * @license QR Code generator library (TypeScript) - * Copyright (c) Project Nayuki. - * SPDX-License-Identifier: MIT - *) -*/ -//# sourceMappingURL=chunk-MUV3MZRB.js.map diff --git a/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js.map b/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js.map deleted file mode 100644 index 2f1bc435a74e1eb2da601a37d3ba097de078cf04..0000000000000000000000000000000000000000 --- a/vite/node_modules/.vite/deps/chunk-MUV3MZRB.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../dayjs/plugin/weekday.js", "../../dayjs/plugin/localeData.js", "../../dayjs/plugin/weekOfYear.js", "../../dayjs/plugin/weekYear.js", "../../dayjs/plugin/quarterOfYear.js", "../../dayjs/plugin/advancedFormat.js", "../../dayjs/plugin/customParseFormat.js", "../../ant-design-vue/es/components.js", "../../@babel/runtime/helpers/esm/typeof.js", "../../@babel/runtime/helpers/esm/toPrimitive.js", "../../@babel/runtime/helpers/esm/toPropertyKey.js", "../../@babel/runtime/helpers/esm/defineProperty.js", "../../@babel/runtime/helpers/esm/objectSpread2.js", "../../ant-design-vue/es/_util/util.js", "../../ant-design-vue/es/_util/classNames.js", "../../resize-observer-polyfill/dist/ResizeObserver.es.js", "../../ant-design-vue/es/_util/isValid.js", "../../ant-design-vue/es/_util/props-util/initDefaultProps.js", "../../ant-design-vue/es/_util/props-util/index.js", "../../ant-design-vue/es/vc-resize-observer/index.js", "../../ant-design-vue/es/_util/raf.js", "../../ant-design-vue/es/_util/throttleByAnimationFrame.js", "../../ant-design-vue/es/_util/type.js", "../../ant-design-vue/es/_util/supportsPassive.js", "../../ant-design-vue/es/vc-util/Dom/addEventListener.js", "../../ant-design-vue/es/affix/utils.js", "../../ant-design-vue/es/config-provider/context.js", "../../ant-design-vue/es/config-provider/DisabledContext.js", "../../ant-design-vue/es/vc-pagination/locale/en_US.js", "../../ant-design-vue/es/vc-picker/locale/en_US.js", "../../ant-design-vue/es/time-picker/locale/en_US.js", "../../ant-design-vue/es/date-picker/locale/en_US.js", "../../ant-design-vue/es/calendar/locale/en_US.js", "../../ant-design-vue/es/locale/en_US.js", "../../ant-design-vue/es/locale/LocaleReceiver.js", "../../ant-design-vue/es/locale-provider/LocaleReceiver.js", "../../@emotion/hash/dist/emotion-hash.esm.js", "../../ant-design-vue/es/_util/cssinjs/Cache.js", "../../ant-design-vue/es/_util/cssinjs/StyleContext.js", "../../ant-design-vue/es/_util/cssinjs/hooks/useHMR.js", "../../ant-design-vue/es/_util/cssinjs/hooks/useGlobalCache.js", "../../ant-design-vue/es/_util/canUseDom.js", "../../ant-design-vue/es/vc-util/Dom/contains.js", "../../ant-design-vue/es/vc-util/Dom/dynamicCSS.js", "../../ant-design-vue/es/_util/cssinjs/theme/ThemeCache.js", "../../ant-design-vue/es/vc-util/warning.js", "../../ant-design-vue/es/_util/warning.js", "../../ant-design-vue/es/_util/cssinjs/theme/Theme.js", "../../ant-design-vue/es/_util/cssinjs/theme/createTheme.js", "../../ant-design-vue/es/_util/cssinjs/util.js", "../../ant-design-vue/es/_util/cssinjs/hooks/useCacheToken.js", "../../@emotion/unitless/dist/emotion-unitless.esm.js", "../../stylis/src/Enum.js", "../../stylis/src/Utility.js", "../../stylis/src/Tokenizer.js", "../../stylis/src/Parser.js", "../../stylis/src/Serializer.js", "../../ant-design-vue/es/_util/cssinjs/linters/utils.js", "../../ant-design-vue/es/_util/cssinjs/linters/contentQuotesLinter.js", "../../ant-design-vue/es/_util/cssinjs/linters/hashedAnimationLinter.js", "../../ant-design-vue/es/_util/cssinjs/linters/legacyNotSelectorLinter.js", "../../ant-design-vue/es/_util/cssinjs/linters/logicalPropertiesLinter.js", "../../ant-design-vue/es/_util/cssinjs/linters/parentSelectorLinter.js", "../../ant-design-vue/es/_util/cssinjs/hooks/useStyleRegister/cacheMapUtil.js", "../../ant-design-vue/es/_util/cssinjs/hooks/useStyleRegister/index.js", "../../ant-design-vue/es/_util/cssinjs/Keyframes.js", "../../ant-design-vue/es/_util/cssinjs/transformers/legacyLogicalProperties.js", "../../ant-design-vue/es/_util/cssinjs/transformers/px2rem.js", "../../ant-design-vue/es/_util/cssinjs/index.js", "../../ant-design-vue/es/version/version.js", "../../ant-design-vue/es/version/index.js", "../../ant-design-vue/es/theme/interface/presetColors.js", "../../ant-design-vue/es/theme/themes/shared/genControlHeight.js", "../../ant-design-vue/es/theme/themes/shared/genSizeMapToken.js", "../../ant-design-vue/es/theme/themes/seed.js", "../../ant-design-vue/es/theme/themes/shared/genColorMapToken.js", "../../ant-design-vue/es/theme/themes/shared/genRadius.js", "../../ant-design-vue/es/theme/themes/shared/genCommonMapToken.js", "../../ant-design-vue/es/theme/themes/default/colorAlgorithm.js", "../../ant-design-vue/es/theme/themes/default/colors.js", "../../ant-design-vue/es/theme/themes/shared/genFontSizes.js", "../../ant-design-vue/es/theme/themes/shared/genFontMapToken.js", "../../ant-design-vue/es/theme/themes/default/index.js", "../../ant-design-vue/es/theme/util/getAlphaColor.js", "../../ant-design-vue/es/theme/util/alias.js", "../../ant-design-vue/es/style/operationUnit.js", "../../ant-design-vue/es/style/roundedArrow.js", "../../ant-design-vue/es/style/presetColor.js", "../../ant-design-vue/es/style/index.js", "../../ant-design-vue/es/theme/util/genComponentStyleHook.js", "../../ant-design-vue/es/theme/util/statistic.js", "../../ant-design-vue/es/theme/internal.js", "../../ant-design-vue/es/empty/empty.js", "../../ant-design-vue/es/empty/simple.js", "../../ant-design-vue/es/empty/style/index.js", "../../ant-design-vue/es/empty/index.js", "../../ant-design-vue/es/config-provider/renderEmpty.js", "../../ant-design-vue/es/config-provider/SizeContext.js", "../../ant-design-vue/es/config-provider/hooks/useConfigInject.js", "../../ant-design-vue/es/_util/omit.js", "../../ant-design-vue/es/affix/style/index.js", "../../ant-design-vue/es/affix/index.js", "../../compute-scroll-into-view/src/index.ts", "../../scroll-into-view-if-needed/es/index.js", "../../ant-design-vue/es/_util/easings.js", "../../ant-design-vue/es/_util/getScroll.js", "../../ant-design-vue/es/_util/scrollTo.js", "../../ant-design-vue/es/anchor/context.js", "../../ant-design-vue/es/anchor/style/index.js", "../../ant-design-vue/es/anchor/AnchorLink.js", "../../vue-types/node_modules/is-plain-object/index.es.js", "../../vue-types/src/utils.ts", "../../vue-types/src/validators/native.ts", "../../vue-types/src/validators/custom.ts", "../../vue-types/src/validators/oneof.ts", "../../vue-types/src/validators/oneoftype.ts", "../../vue-types/src/validators/arrayof.ts", "../../vue-types/src/validators/instanceof.ts", "../../vue-types/src/validators/objectof.ts", "../../vue-types/src/validators/shape.ts", "../../vue-types/src/index.ts", "../../vue-types/src/sensibles.ts", "../../ant-design-vue/es/_util/vue-types/index.js", "../../ant-design-vue/es/vc-util/devWarning.js", "../../ant-design-vue/es/anchor/Anchor.js", "../../ant-design-vue/es/anchor/index.js", "../../ant-design-vue/es/vc-select/utils/valueUtil.js", "../../ant-design-vue/es/vc-trigger/interface.js", "../../ant-design-vue/es/vc-trigger/Popup/interface.js", "../../ant-design-vue/es/vc-trigger/utils/motionUtil.js", "../../ant-design-vue/es/vc-trigger/Popup/Mask.js", "../../ant-design-vue/es/vc-trigger/Popup/MobilePopupInner.js", "../../ant-design-vue/es/vc-trigger/Popup/useVisibleStatus.js", "../../ant-design-vue/es/vc-trigger/Popup/useStretchStyle.js", "../../src/propertyUtils.js", "../../src/utils.js", "../../src/getOffsetParent.js", "../../src/isAncestorFixed.js", "../../src/getVisibleRectForElement.js", "../../src/adjustForViewport.js", "../../src/getRegion.js", "../../src/getAlignOffset.js", "../../src/getElFuturePos.js", "../../src/align/align.js", "../../src/align/alignElement.js", "../../src/align/alignPoint.js", "../../ant-design-vue/es/_util/vnode.js", "../../ant-design-vue/es/vc-util/Dom/isVisible.js", "../../ant-design-vue/es/vc-align/util.js", "../../ant-design-vue/es/vc-align/hooks/useBuffer.js", "../../lodash-es/_listCacheClear.js", "../../lodash-es/eq.js", "../../lodash-es/_assocIndexOf.js", "../../lodash-es/_listCacheDelete.js", "../../lodash-es/_listCacheGet.js", "../../lodash-es/_listCacheHas.js", "../../lodash-es/_listCacheSet.js", "../../lodash-es/_ListCache.js", "../../lodash-es/_stackClear.js", "../../lodash-es/_stackDelete.js", "../../lodash-es/_stackGet.js", "../../lodash-es/_stackHas.js", "../../lodash-es/_freeGlobal.js", "../../lodash-es/_root.js", "../../lodash-es/_Symbol.js", "../../lodash-es/_getRawTag.js", "../../lodash-es/_objectToString.js", "../../lodash-es/_baseGetTag.js", "../../lodash-es/isObject.js", "../../lodash-es/isFunction.js", "../../lodash-es/_coreJsData.js", "../../lodash-es/_isMasked.js", "../../lodash-es/_toSource.js", "../../lodash-es/_baseIsNative.js", "../../lodash-es/_getValue.js", "../../lodash-es/_getNative.js", "../../lodash-es/_Map.js", "../../lodash-es/_nativeCreate.js", "../../lodash-es/_hashClear.js", "../../lodash-es/_hashDelete.js", "../../lodash-es/_hashGet.js", "../../lodash-es/_hashHas.js", "../../lodash-es/_hashSet.js", "../../lodash-es/_Hash.js", "../../lodash-es/_mapCacheClear.js", "../../lodash-es/_isKeyable.js", "../../lodash-es/_getMapData.js", "../../lodash-es/_mapCacheDelete.js", "../../lodash-es/_mapCacheGet.js", "../../lodash-es/_mapCacheHas.js", "../../lodash-es/_mapCacheSet.js", "../../lodash-es/_MapCache.js", "../../lodash-es/_stackSet.js", "../../lodash-es/_Stack.js", "../../lodash-es/_setCacheAdd.js", "../../lodash-es/_setCacheHas.js", "../../lodash-es/_SetCache.js", "../../lodash-es/_arraySome.js", "../../lodash-es/_cacheHas.js", "../../lodash-es/_equalArrays.js", "../../lodash-es/_Uint8Array.js", "../../lodash-es/_mapToArray.js", "../../lodash-es/_setToArray.js", "../../lodash-es/_equalByTag.js", "../../lodash-es/_arrayPush.js", "../../lodash-es/isArray.js", "../../lodash-es/_baseGetAllKeys.js", "../../lodash-es/_arrayFilter.js", "../../lodash-es/stubArray.js", "../../lodash-es/_getSymbols.js", "../../lodash-es/_baseTimes.js", "../../lodash-es/isObjectLike.js", "../../lodash-es/_baseIsArguments.js", "../../lodash-es/isArguments.js", "../../lodash-es/stubFalse.js", "../../lodash-es/isBuffer.js", "../../lodash-es/_isIndex.js", "../../lodash-es/isLength.js", "../../lodash-es/_baseIsTypedArray.js", "../../lodash-es/_baseUnary.js", "../../lodash-es/_nodeUtil.js", "../../lodash-es/isTypedArray.js", "../../lodash-es/_arrayLikeKeys.js", "../../lodash-es/_isPrototype.js", "../../lodash-es/_overArg.js", "../../lodash-es/_nativeKeys.js", "../../lodash-es/_baseKeys.js", "../../lodash-es/isArrayLike.js", "../../lodash-es/keys.js", "../../lodash-es/_getAllKeys.js", "../../lodash-es/_equalObjects.js", "../../lodash-es/_DataView.js", "../../lodash-es/_Promise.js", "../../lodash-es/_Set.js", "../../lodash-es/_WeakMap.js", "../../lodash-es/_getTag.js", "../../lodash-es/_baseIsEqualDeep.js", "../../lodash-es/_baseIsEqual.js", "../../lodash-es/isEqual.js", "../../ant-design-vue/es/vc-align/Align.js", "../../ant-design-vue/es/_util/transition.js", "../../ant-design-vue/es/vc-trigger/Popup/PopupInner.js", "../../ant-design-vue/es/vc-trigger/Popup/index.js", "../../ant-design-vue/es/vc-trigger/utils/alignUtil.js", "../../ant-design-vue/es/_util/BaseMixin.js", "../../ant-design-vue/es/vc-trigger/context.js", "../../ant-design-vue/es/_util/Portal.js", "../../ant-design-vue/es/_util/getScrollBarSize.js", "../../ant-design-vue/es/_util/hooks/useScrollLocker.js", "../../ant-design-vue/es/_util/PortalWrapper.js", "../../ant-design-vue/es/vc-trigger/Trigger.js", "../../ant-design-vue/es/vc-trigger/index.js", "../../ant-design-vue/es/vc-select/SelectTrigger.js", "../../ant-design-vue/es/_util/KeyCode.js", "../../ant-design-vue/es/vc-select/TransBtn.js", "../../ant-design-vue/es/_util/antInputDirective.js", "../../ant-design-vue/es/vc-select/Selector/Input.js", "../../ant-design-vue/es/_util/pickAttrs.js", "../../ant-design-vue/es/vc-overflow/context.js", "../../ant-design-vue/es/vc-overflow/Item.js", "../../ant-design-vue/es/vc-overflow/RawItem.js", "../../ant-design-vue/es/vc-overflow/Overflow.js", "../../ant-design-vue/es/vc-overflow/index.js", "../../ant-design-vue/es/vc-tree-select/LegacyContext.js", "../../ant-design-vue/es/vc-select/Selector/MultipleSelector.js", "../../ant-design-vue/es/vc-select/Selector/SingleSelector.js", "../../ant-design-vue/es/vc-select/utils/keyUtil.js", "../../ant-design-vue/es/vc-select/hooks/useLock.js", "../../ant-design-vue/es/_util/createRef.js", "../../ant-design-vue/es/vc-select/Selector/index.js", "../../ant-design-vue/es/vc-select/hooks/useSelectTriggerControl.js", "../../ant-design-vue/es/vc-select/hooks/useDelayReset.js", "../../ant-design-vue/es/vc-select/hooks/useBaseProps.js", "../../ant-design-vue/es/vc-util/isMobile.js", "../../ant-design-vue/es/_util/toReactive.js", "../../ant-design-vue/es/vc-select/BaseSelect.js", "../../ant-design-vue/es/vc-virtual-list/Filler.js", "../../ant-design-vue/es/vc-virtual-list/Item.js", "../../ant-design-vue/es/vc-virtual-list/ScrollBar.js", "../../ant-design-vue/es/vc-virtual-list/hooks/useHeights.js", "../../ant-design-vue/es/vc-virtual-list/hooks/useScrollTo.js", "../../ant-design-vue/es/vc-virtual-list/utils/isFirefox.js", "../../ant-design-vue/es/vc-virtual-list/hooks/useOriginScroll.js", "../../ant-design-vue/es/vc-virtual-list/hooks/useFrameWheel.js", "../../ant-design-vue/es/vc-virtual-list/hooks/useMobileTouchMove.js", "../../ant-design-vue/es/vc-virtual-list/List.js", "../../ant-design-vue/es/vc-virtual-list/index.js", "../../ant-design-vue/es/_util/hooks/useMemo.js", "../../ant-design-vue/es/vc-select/utils/platformUtil.js", "../../ant-design-vue/es/vc-select/SelectContext.js", "../../ant-design-vue/es/vc-select/OptionList.js", "../../ant-design-vue/es/vc-select/utils/legacyUtil.js", "../../ant-design-vue/es/vc-select/hooks/useOptions.js", "../../ant-design-vue/es/vc-select/hooks/useId.js", "../../ant-design-vue/es/vc-select/utils/commonUtil.js", "../../ant-design-vue/es/vc-select/utils/warningPropsUtil.js", "../../ant-design-vue/es/vc-select/hooks/useFilterOptions.js", "../../ant-design-vue/es/vc-select/hooks/useCache.js", "../../ant-design-vue/es/_util/hooks/useMergedState.js", "../../ant-design-vue/es/_util/hooks/useState.js", "../../ant-design-vue/es/vc-select/Select.js", "../../ant-design-vue/es/vc-select/Option.js", "../../ant-design-vue/es/vc-select/OptGroup.js", "../../ant-design-vue/es/vc-select/index.js", "../../ant-design-vue/es/select/utils/iconUtil.js", "../../ant-design-vue/es/_util/createContext.js", "../../ant-design-vue/es/form/FormItemContext.js", "../../ant-design-vue/es/_util/statusUtils.js", "../../ant-design-vue/es/space/style/compact.js", "../../ant-design-vue/es/space/style/index.js", "../../lodash-es/isSymbol.js", "../../lodash-es/_baseToNumber.js", "../../lodash-es/_arrayMap.js", "../../lodash-es/_baseToString.js", "../../lodash-es/_createMathOperation.js", "../../lodash-es/add.js", "../../lodash-es/_trimmedEndIndex.js", "../../lodash-es/_baseTrim.js", "../../lodash-es/toNumber.js", "../../lodash-es/toFinite.js", "../../lodash-es/toInteger.js", "../../lodash-es/after.js", "../../lodash-es/identity.js", "../../lodash-es/_metaMap.js", "../../lodash-es/_baseSetData.js", "../../lodash-es/_baseCreate.js", "../../lodash-es/_createCtor.js", "../../lodash-es/_createBind.js", "../../lodash-es/_apply.js", "../../lodash-es/_composeArgs.js", "../../lodash-es/_composeArgsRight.js", "../../lodash-es/_countHolders.js", "../../lodash-es/_baseLodash.js", "../../lodash-es/_LazyWrapper.js", "../../lodash-es/noop.js", "../../lodash-es/_getData.js", "../../lodash-es/_realNames.js", "../../lodash-es/_getFuncName.js", "../../lodash-es/_LodashWrapper.js", "../../lodash-es/_copyArray.js", "../../lodash-es/_wrapperClone.js", "../../lodash-es/wrapperLodash.js", "../../lodash-es/_isLaziable.js", "../../lodash-es/_shortOut.js", "../../lodash-es/_setData.js", "../../lodash-es/_getWrapDetails.js", "../../lodash-es/_insertWrapDetails.js", "../../lodash-es/constant.js", "../../lodash-es/_defineProperty.js", "../../lodash-es/_baseSetToString.js", "../../lodash-es/_setToString.js", "../../lodash-es/_arrayEach.js", "../../lodash-es/_baseFindIndex.js", "../../lodash-es/_baseIsNaN.js", "../../lodash-es/_strictIndexOf.js", "../../lodash-es/_baseIndexOf.js", "../../lodash-es/_arrayIncludes.js", "../../lodash-es/_updateWrapDetails.js", "../../lodash-es/_setWrapToString.js", "../../lodash-es/_createRecurry.js", "../../lodash-es/_getHolder.js", "../../lodash-es/_reorder.js", "../../lodash-es/_replaceHolders.js", "../../lodash-es/_createHybrid.js", "../../lodash-es/_createCurry.js", "../../lodash-es/_createPartial.js", "../../lodash-es/_mergeData.js", "../../lodash-es/_createWrap.js", "../../lodash-es/ary.js", "../../lodash-es/_baseAssignValue.js", "../../lodash-es/_assignValue.js", "../../lodash-es/_copyObject.js", "../../lodash-es/_overRest.js", "../../lodash-es/_baseRest.js", "../../lodash-es/_isIterateeCall.js", "../../lodash-es/_createAssigner.js", "../../lodash-es/assign.js", "../../lodash-es/_nativeKeysIn.js", "../../lodash-es/_baseKeysIn.js", "../../lodash-es/keysIn.js", "../../lodash-es/assignIn.js", "../../lodash-es/assignInWith.js", "../../lodash-es/assignWith.js", "../../lodash-es/_isKey.js", "../../lodash-es/memoize.js", "../../lodash-es/_memoizeCapped.js", "../../lodash-es/_stringToPath.js", "../../lodash-es/toString.js", "../../lodash-es/_castPath.js", "../../lodash-es/_toKey.js", "../../lodash-es/_baseGet.js", "../../lodash-es/get.js", "../../lodash-es/_baseAt.js", "../../lodash-es/_isFlattenable.js", "../../lodash-es/_baseFlatten.js", "../../lodash-es/flatten.js", "../../lodash-es/_flatRest.js", "../../lodash-es/at.js", "../../lodash-es/_getPrototype.js", "../../lodash-es/isPlainObject.js", "../../lodash-es/isError.js", "../../lodash-es/attempt.js", "../../lodash-es/before.js", "../../lodash-es/bind.js", "../../lodash-es/bindAll.js", "../../lodash-es/bindKey.js", "../../lodash-es/_baseSlice.js", "../../lodash-es/_castSlice.js", "../../lodash-es/_hasUnicode.js", "../../lodash-es/_asciiToArray.js", "../../lodash-es/_unicodeToArray.js", "../../lodash-es/_stringToArray.js", "../../lodash-es/_createCaseFirst.js", "../../lodash-es/upperFirst.js", "../../lodash-es/capitalize.js", "../../lodash-es/_arrayReduce.js", "../../lodash-es/_basePropertyOf.js", "../../lodash-es/_deburrLetter.js", "../../lodash-es/deburr.js", "../../lodash-es/_asciiWords.js", "../../lodash-es/_hasUnicodeWord.js", "../../lodash-es/_unicodeWords.js", "../../lodash-es/words.js", "../../lodash-es/_createCompounder.js", "../../lodash-es/camelCase.js", "../../lodash-es/castArray.js", "../../lodash-es/_createRound.js", "../../lodash-es/ceil.js", "../../lodash-es/chain.js", "../../lodash-es/chunk.js", "../../lodash-es/_baseClamp.js", "../../lodash-es/clamp.js", "../../lodash-es/_baseAssign.js", "../../lodash-es/_baseAssignIn.js", "../../lodash-es/_cloneBuffer.js", "../../lodash-es/_copySymbols.js", "../../lodash-es/_getSymbolsIn.js", "../../lodash-es/_copySymbolsIn.js", "../../lodash-es/_getAllKeysIn.js", "../../lodash-es/_initCloneArray.js", "../../lodash-es/_cloneArrayBuffer.js", "../../lodash-es/_cloneDataView.js", "../../lodash-es/_cloneRegExp.js", "../../lodash-es/_cloneSymbol.js", "../../lodash-es/_cloneTypedArray.js", "../../lodash-es/_initCloneByTag.js", "../../lodash-es/_initCloneObject.js", "../../lodash-es/_baseIsMap.js", "../../lodash-es/isMap.js", "../../lodash-es/_baseIsSet.js", "../../lodash-es/isSet.js", "../../lodash-es/_baseClone.js", "../../lodash-es/clone.js", "../../lodash-es/cloneDeep.js", "../../lodash-es/cloneDeepWith.js", "../../lodash-es/cloneWith.js", "../../lodash-es/commit.js", "../../lodash-es/compact.js", "../../lodash-es/concat.js", "../../lodash-es/_baseIsMatch.js", "../../lodash-es/_isStrictComparable.js", "../../lodash-es/_getMatchData.js", "../../lodash-es/_matchesStrictComparable.js", "../../lodash-es/_baseMatches.js", "../../lodash-es/_baseHasIn.js", "../../lodash-es/_hasPath.js", "../../lodash-es/hasIn.js", "../../lodash-es/_baseMatchesProperty.js", "../../lodash-es/_baseProperty.js", "../../lodash-es/_basePropertyDeep.js", "../../lodash-es/property.js", "../../lodash-es/_baseIteratee.js", "../../lodash-es/cond.js", "../../lodash-es/_baseConformsTo.js", "../../lodash-es/_baseConforms.js", "../../lodash-es/conforms.js", "../../lodash-es/conformsTo.js", "../../lodash-es/_arrayAggregator.js", "../../lodash-es/_createBaseFor.js", "../../lodash-es/_baseFor.js", "../../lodash-es/_baseForOwn.js", "../../lodash-es/_createBaseEach.js", "../../lodash-es/_baseEach.js", "../../lodash-es/_baseAggregator.js", "../../lodash-es/_createAggregator.js", "../../lodash-es/countBy.js", "../../lodash-es/create.js", "../../lodash-es/curry.js", "../../lodash-es/curryRight.js", "../../lodash-es/now.js", "../../lodash-es/debounce.js", "../../lodash-es/defaultTo.js", "../../lodash-es/defaults.js", "../../lodash-es/_assignMergeValue.js", "../../lodash-es/isArrayLikeObject.js", "../../lodash-es/_safeGet.js", "../../lodash-es/toPlainObject.js", "../../lodash-es/_baseMergeDeep.js", "../../lodash-es/_baseMerge.js", "../../lodash-es/_customDefaultsMerge.js", "../../lodash-es/mergeWith.js", "../../lodash-es/defaultsDeep.js", "../../lodash-es/_baseDelay.js", "../../lodash-es/defer.js", "../../lodash-es/delay.js", "../../lodash-es/_arrayIncludesWith.js", "../../lodash-es/_baseDifference.js", "../../lodash-es/difference.js", "../../lodash-es/last.js", "../../lodash-es/differenceBy.js", "../../lodash-es/differenceWith.js", "../../lodash-es/divide.js", "../../lodash-es/drop.js", "../../lodash-es/dropRight.js", "../../lodash-es/_baseWhile.js", "../../lodash-es/dropRightWhile.js", "../../lodash-es/dropWhile.js", "../../lodash-es/_castFunction.js", "../../lodash-es/forEach.js", "../../lodash-es/_arrayEachRight.js", "../../lodash-es/_baseForRight.js", "../../lodash-es/_baseForOwnRight.js", "../../lodash-es/_baseEachRight.js", "../../lodash-es/forEachRight.js", "../../lodash-es/endsWith.js", "../../lodash-es/_baseToPairs.js", "../../lodash-es/_setToPairs.js", "../../lodash-es/_createToPairs.js", "../../lodash-es/toPairs.js", "../../lodash-es/toPairsIn.js", "../../lodash-es/_escapeHtmlChar.js", "../../lodash-es/escape.js", "../../lodash-es/escapeRegExp.js", "../../lodash-es/_arrayEvery.js", "../../lodash-es/_baseEvery.js", "../../lodash-es/every.js", "../../lodash-es/toLength.js", "../../lodash-es/_baseFill.js", "../../lodash-es/fill.js", "../../lodash-es/_baseFilter.js", "../../lodash-es/filter.js", "../../lodash-es/_createFind.js", "../../lodash-es/findIndex.js", "../../lodash-es/find.js", "../../lodash-es/_baseFindKey.js", "../../lodash-es/findKey.js", "../../lodash-es/findLastIndex.js", "../../lodash-es/findLast.js", "../../lodash-es/findLastKey.js", "../../lodash-es/head.js", "../../lodash-es/_baseMap.js", "../../lodash-es/map.js", "../../lodash-es/flatMap.js", "../../lodash-es/flatMapDeep.js", "../../lodash-es/flatMapDepth.js", "../../lodash-es/flattenDeep.js", "../../lodash-es/flattenDepth.js", "../../lodash-es/flip.js", "../../lodash-es/floor.js", "../../lodash-es/_createFlow.js", "../../lodash-es/flow.js", "../../lodash-es/flowRight.js", "../../lodash-es/forIn.js", "../../lodash-es/forInRight.js", "../../lodash-es/forOwn.js", "../../lodash-es/forOwnRight.js", "../../lodash-es/fromPairs.js", "../../lodash-es/_baseFunctions.js", "../../lodash-es/functions.js", "../../lodash-es/functionsIn.js", "../../lodash-es/groupBy.js", "../../lodash-es/_baseGt.js", "../../lodash-es/_createRelationalOperation.js", "../../lodash-es/gt.js", "../../lodash-es/gte.js", "../../lodash-es/_baseHas.js", "../../lodash-es/has.js", "../../lodash-es/_baseInRange.js", "../../lodash-es/inRange.js", "../../lodash-es/isString.js", "../../lodash-es/_baseValues.js", "../../lodash-es/values.js", "../../lodash-es/includes.js", "../../lodash-es/indexOf.js", "../../lodash-es/initial.js", "../../lodash-es/_baseIntersection.js", "../../lodash-es/_castArrayLikeObject.js", "../../lodash-es/intersection.js", "../../lodash-es/intersectionBy.js", "../../lodash-es/intersectionWith.js", "../../lodash-es/_baseInverter.js", "../../lodash-es/_createInverter.js", "../../lodash-es/invert.js", "../../lodash-es/invertBy.js", "../../lodash-es/_parent.js", "../../lodash-es/_baseInvoke.js", "../../lodash-es/invoke.js", "../../lodash-es/invokeMap.js", "../../lodash-es/_baseIsArrayBuffer.js", "../../lodash-es/isArrayBuffer.js", "../../lodash-es/isBoolean.js", "../../lodash-es/_baseIsDate.js", "../../lodash-es/isDate.js", "../../lodash-es/isElement.js", "../../lodash-es/isEmpty.js", "../../lodash-es/isEqualWith.js", "../../lodash-es/isFinite.js", "../../lodash-es/isInteger.js", "../../lodash-es/isMatch.js", "../../lodash-es/isMatchWith.js", "../../lodash-es/isNumber.js", "../../lodash-es/isNaN.js", "../../lodash-es/_isMaskable.js", "../../lodash-es/isNative.js", "../../lodash-es/isNil.js", "../../lodash-es/isNull.js", "../../lodash-es/_baseIsRegExp.js", "../../lodash-es/isRegExp.js", "../../lodash-es/isSafeInteger.js", "../../lodash-es/isUndefined.js", "../../lodash-es/isWeakMap.js", "../../lodash-es/isWeakSet.js", "../../lodash-es/iteratee.js", "../../lodash-es/join.js", "../../lodash-es/kebabCase.js", "../../lodash-es/keyBy.js", "../../lodash-es/_strictLastIndexOf.js", "../../lodash-es/lastIndexOf.js", "../../lodash-es/lowerCase.js", "../../lodash-es/lowerFirst.js", "../../lodash-es/_baseLt.js", "../../lodash-es/lt.js", "../../lodash-es/lte.js", "../../lodash-es/mapKeys.js", "../../lodash-es/mapValues.js", "../../lodash-es/matches.js", "../../lodash-es/matchesProperty.js", "../../lodash-es/_baseExtremum.js", "../../lodash-es/max.js", "../../lodash-es/maxBy.js", "../../lodash-es/_baseSum.js", "../../lodash-es/_baseMean.js", "../../lodash-es/mean.js", "../../lodash-es/meanBy.js", "../../lodash-es/merge.js", "../../lodash-es/method.js", "../../lodash-es/methodOf.js", "../../lodash-es/min.js", "../../lodash-es/minBy.js", "../../lodash-es/mixin.js", "../../lodash-es/multiply.js", "../../lodash-es/negate.js", "../../lodash-es/_iteratorToArray.js", "../../lodash-es/toArray.js", "../../lodash-es/next.js", "../../lodash-es/_baseNth.js", "../../lodash-es/nth.js", "../../lodash-es/nthArg.js", "../../lodash-es/_baseUnset.js", "../../lodash-es/_customOmitClone.js", "../../lodash-es/omit.js", "../../lodash-es/_baseSet.js", "../../lodash-es/_basePickBy.js", "../../lodash-es/pickBy.js", "../../lodash-es/omitBy.js", "../../lodash-es/once.js", "../../lodash-es/_baseSortBy.js", "../../lodash-es/_compareAscending.js", "../../lodash-es/_compareMultiple.js", "../../lodash-es/_baseOrderBy.js", "../../lodash-es/orderBy.js", "../../lodash-es/_createOver.js", "../../lodash-es/over.js", "../../lodash-es/_castRest.js", "../../lodash-es/overArgs.js", "../../lodash-es/overEvery.js", "../../lodash-es/overSome.js", "../../lodash-es/_baseRepeat.js", "../../lodash-es/_asciiSize.js", "../../lodash-es/_unicodeSize.js", "../../lodash-es/_stringSize.js", "../../lodash-es/_createPadding.js", "../../lodash-es/pad.js", "../../lodash-es/padEnd.js", "../../lodash-es/padStart.js", "../../lodash-es/parseInt.js", "../../lodash-es/partial.js", "../../lodash-es/partialRight.js", "../../lodash-es/partition.js", "../../lodash-es/_basePick.js", "../../lodash-es/pick.js", "../../lodash-es/plant.js", "../../lodash-es/propertyOf.js", "../../lodash-es/_baseIndexOfWith.js", "../../lodash-es/_basePullAll.js", "../../lodash-es/pullAll.js", "../../lodash-es/pull.js", "../../lodash-es/pullAllBy.js", "../../lodash-es/pullAllWith.js", "../../lodash-es/_basePullAt.js", "../../lodash-es/pullAt.js", "../../lodash-es/_baseRandom.js", "../../lodash-es/random.js", "../../lodash-es/_baseRange.js", "../../lodash-es/_createRange.js", "../../lodash-es/range.js", "../../lodash-es/rangeRight.js", "../../lodash-es/rearg.js", "../../lodash-es/_baseReduce.js", "../../lodash-es/reduce.js", "../../lodash-es/_arrayReduceRight.js", "../../lodash-es/reduceRight.js", "../../lodash-es/reject.js", "../../lodash-es/remove.js", "../../lodash-es/repeat.js", "../../lodash-es/replace.js", "../../lodash-es/rest.js", "../../lodash-es/result.js", "../../lodash-es/reverse.js", "../../lodash-es/round.js", "../../lodash-es/_arraySample.js", "../../lodash-es/_baseSample.js", "../../lodash-es/sample.js", "../../lodash-es/_shuffleSelf.js", "../../lodash-es/_arraySampleSize.js", "../../lodash-es/_baseSampleSize.js", "../../lodash-es/sampleSize.js", "../../lodash-es/set.js", "../../lodash-es/setWith.js", "../../lodash-es/_arrayShuffle.js", "../../lodash-es/_baseShuffle.js", "../../lodash-es/shuffle.js", "../../lodash-es/size.js", "../../lodash-es/slice.js", "../../lodash-es/snakeCase.js", "../../lodash-es/_baseSome.js", "../../lodash-es/some.js", "../../lodash-es/sortBy.js", "../../lodash-es/_baseSortedIndexBy.js", "../../lodash-es/_baseSortedIndex.js", "../../lodash-es/sortedIndex.js", "../../lodash-es/sortedIndexBy.js", "../../lodash-es/sortedIndexOf.js", "../../lodash-es/sortedLastIndex.js", "../../lodash-es/sortedLastIndexBy.js", "../../lodash-es/sortedLastIndexOf.js", "../../lodash-es/_baseSortedUniq.js", "../../lodash-es/sortedUniq.js", "../../lodash-es/sortedUniqBy.js", "../../lodash-es/split.js", "../../lodash-es/spread.js", "../../lodash-es/startCase.js", "../../lodash-es/startsWith.js", "../../lodash-es/stubObject.js", "../../lodash-es/stubString.js", "../../lodash-es/stubTrue.js", "../../lodash-es/subtract.js", "../../lodash-es/sum.js", "../../lodash-es/sumBy.js", "../../lodash-es/tail.js", "../../lodash-es/take.js", "../../lodash-es/takeRight.js", "../../lodash-es/takeRightWhile.js", "../../lodash-es/takeWhile.js", "../../lodash-es/tap.js", "../../lodash-es/_customDefaultsAssignIn.js", "../../lodash-es/_escapeStringChar.js", "../../lodash-es/_reInterpolate.js", "../../lodash-es/_reEscape.js", "../../lodash-es/_reEvaluate.js", "../../lodash-es/templateSettings.js", "../../lodash-es/template.js", "../../lodash-es/throttle.js", "../../lodash-es/thru.js", "../../lodash-es/times.js", "../../lodash-es/toIterator.js", "../../lodash-es/_baseWrapperValue.js", "../../lodash-es/wrapperValue.js", "../../lodash-es/toLower.js", "../../lodash-es/toPath.js", "../../lodash-es/toSafeInteger.js", "../../lodash-es/toUpper.js", "../../lodash-es/transform.js", "../../lodash-es/_charsEndIndex.js", "../../lodash-es/_charsStartIndex.js", "../../lodash-es/trim.js", "../../lodash-es/trimEnd.js", "../../lodash-es/trimStart.js", "../../lodash-es/truncate.js", "../../lodash-es/unary.js", "../../lodash-es/_unescapeHtmlChar.js", "../../lodash-es/unescape.js", "../../lodash-es/_createSet.js", "../../lodash-es/_baseUniq.js", "../../lodash-es/union.js", "../../lodash-es/unionBy.js", "../../lodash-es/unionWith.js", "../../lodash-es/uniq.js", "../../lodash-es/uniqBy.js", "../../lodash-es/uniqWith.js", "../../lodash-es/uniqueId.js", "../../lodash-es/unset.js", "../../lodash-es/unzip.js", "../../lodash-es/unzipWith.js", "../../lodash-es/_baseUpdate.js", "../../lodash-es/update.js", "../../lodash-es/updateWith.js", "../../lodash-es/upperCase.js", "../../lodash-es/valuesIn.js", "../../lodash-es/without.js", "../../lodash-es/wrap.js", "../../lodash-es/wrapperAt.js", "../../lodash-es/wrapperChain.js", "../../lodash-es/wrapperReverse.js", "../../lodash-es/_baseXor.js", "../../lodash-es/xor.js", "../../lodash-es/xorBy.js", "../../lodash-es/xorWith.js", "../../lodash-es/zip.js", "../../lodash-es/_baseZipObject.js", "../../lodash-es/zipObject.js", "../../lodash-es/zipObjectDeep.js", "../../lodash-es/zipWith.js", "../../lodash-es/array.default.js", "../../lodash-es/collection.default.js", "../../lodash-es/date.default.js", "../../lodash-es/function.default.js", "../../lodash-es/lang.default.js", "../../lodash-es/math.default.js", "../../lodash-es/number.default.js", "../../lodash-es/object.default.js", "../../lodash-es/seq.default.js", "../../lodash-es/string.default.js", "../../lodash-es/util.default.js", "../../lodash-es/_lazyClone.js", "../../lodash-es/_lazyReverse.js", "../../lodash-es/_getView.js", "../../lodash-es/_lazyValue.js", "../../lodash-es/lodash.default.js", "../../ant-design-vue/es/space/Compact.js", "../../ant-design-vue/es/style/motion/motion.js", "../../ant-design-vue/es/style/motion/fade.js", "../../ant-design-vue/es/style/motion/move.js", "../../ant-design-vue/es/style/motion/slide.js", "../../ant-design-vue/es/style/motion/zoom.js", "../../ant-design-vue/es/style/motion/collapse.js", "../../ant-design-vue/es/select/style/dropdown.js", "../../ant-design-vue/es/select/style/multiple.js", "../../ant-design-vue/es/select/style/single.js", "../../ant-design-vue/es/style/compact-item.js", "../../ant-design-vue/es/select/style/index.js", "../../ant-design-vue/es/select/index.js", "../../ant-design-vue/es/auto-complete/Option.js", "../../ant-design-vue/es/auto-complete/OptGroup.js", "../../ant-design-vue/es/auto-complete/index.js", "../../ant-design-vue/es/alert/style/index.js", "../../ant-design-vue/es/alert/index.js", "../../ant-design-vue/es/_util/responsiveObserve.js", "../../ant-design-vue/es/_util/hooks/useBreakpoint.js", "../../ant-design-vue/es/_util/eagerComputed.js", "../../ant-design-vue/es/avatar/style/index.js", "../../ant-design-vue/es/avatar/AvatarContext.js", "../../ant-design-vue/es/avatar/Avatar.js", "../../ant-design-vue/es/vc-tooltip/src/placements.js", "../../ant-design-vue/es/vc-tooltip/src/Content.js", "../../ant-design-vue/es/vc-tooltip/src/Tooltip.js", "../../ant-design-vue/es/vc-tooltip/index.js", "../../ant-design-vue/es/tooltip/abstractTooltipProps.js", "../../ant-design-vue/es/_util/placements.js", "../../ant-design-vue/es/_util/firstNotUndefined.js", "../../ant-design-vue/es/_util/colors.js", "../../ant-design-vue/es/tooltip/util.js", "../../ant-design-vue/es/style/placementArrow.js", "../../ant-design-vue/es/tooltip/style/index.js", "../../ant-design-vue/es/tooltip/Tooltip.js", "../../ant-design-vue/es/tooltip/index.js", "../../ant-design-vue/es/popover/style/index.js", "../../ant-design-vue/es/popover/index.js", "../../ant-design-vue/es/avatar/Group.js", "../../ant-design-vue/es/avatar/index.js", "../../ant-design-vue/es/badge/SingleNumber.js", "../../ant-design-vue/es/badge/ScrollNumber.js", "../../ant-design-vue/es/badge/style/index.js", "../../ant-design-vue/es/badge/Ribbon.js", "../../ant-design-vue/es/_util/isNumeric.js", "../../ant-design-vue/es/badge/Badge.js", "../../ant-design-vue/es/badge/index.js", "../../ant-design-vue/es/vc-dropdown/placements.js", "../../ant-design-vue/es/vc-dropdown/Dropdown.js", "../../ant-design-vue/es/vc-dropdown/index.js", "../../ant-design-vue/es/_util/wave/style.js", "../../ant-design-vue/es/_util/wave/util.js", "../../ant-design-vue/es/_util/wave/WaveEffect.js", "../../ant-design-vue/es/_util/wave/useWave.js", "../../ant-design-vue/es/_util/wave/index.js", "../../ant-design-vue/es/button/buttonTypes.js", "../../ant-design-vue/es/button/LoadingIcon.js", "../../ant-design-vue/es/button/style/group.js", "../../ant-design-vue/es/style/compact-item-vertical.js", "../../ant-design-vue/es/button/style/index.js", "../../ant-design-vue/es/button/button-group.js", "../../ant-design-vue/es/button/button.js", "../../ant-design-vue/es/button/index.js", "../../ant-design-vue/es/dropdown/props.js", "../../ant-design-vue/es/dropdown/style/button.js", "../../ant-design-vue/es/dropdown/style/status.js", "../../ant-design-vue/es/dropdown/style/index.js", "../../ant-design-vue/es/dropdown/dropdown-button.js", "../../ant-design-vue/es/menu/src/OverrideContext.js", "../../ant-design-vue/es/dropdown/dropdown.js", "../../ant-design-vue/es/breadcrumb/BreadcrumbItem.js", "../../ant-design-vue/es/_util/shallowequal.js", "../../ant-design-vue/es/menu/src/hooks/useMenuContext.js", "../../ant-design-vue/es/layout/injectionKey.js", "../../ant-design-vue/es/menu/src/hooks/useKeyPath.js", "../../ant-design-vue/es/menu/src/hooks/useDirectionStyle.js", "../../ant-design-vue/es/menu/src/MenuItem.js", "../../ant-design-vue/es/menu/src/placements.js", "../../ant-design-vue/es/menu/src/PopupTrigger.js", "../../ant-design-vue/es/menu/src/SubMenuList.js", "../../ant-design-vue/es/menu/src/InlineSubMenuList.js", "../../ant-design-vue/es/menu/src/SubMenu.js", "../../ant-design-vue/es/vc-util/Dom/class.js", "../../ant-design-vue/es/_util/collapseMotion.js", "../../ant-design-vue/es/menu/src/ItemGroup.js", "../../ant-design-vue/es/menu/src/Divider.js", "../../ant-design-vue/es/menu/src/hooks/useItems.js", "../../ant-design-vue/es/menu/style/horizontal.js", "../../ant-design-vue/es/menu/style/rtl.js", "../../ant-design-vue/es/menu/style/theme.js", "../../ant-design-vue/es/menu/style/vertical.js", "../../ant-design-vue/es/menu/style/index.js", "../../ant-design-vue/es/menu/src/Menu.js", "../../ant-design-vue/es/menu/index.js", "../../ant-design-vue/es/breadcrumb/style/index.js", "../../ant-design-vue/es/breadcrumb/Breadcrumb.js", "../../ant-design-vue/es/breadcrumb/BreadcrumbSeparator.js", "../../ant-design-vue/es/breadcrumb/index.js", "../../ant-design-vue/es/vc-picker/generate/dayjs.js", "../../ant-design-vue/es/vc-picker/hooks/useMergeProps.js", "../../ant-design-vue/es/vc-picker/PanelContext.js", "../../ant-design-vue/es/vc-picker/panels/Header.js", "../../ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeHeader.js", "../../ant-design-vue/es/vc-picker/utils/timeUtil.js", "../../ant-design-vue/es/vc-picker/panels/PanelBody.js", "../../ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeBody.js", "../../ant-design-vue/es/vc-picker/utils/uiUtil.js", "../../ant-design-vue/es/vc-picker/panels/DecadePanel/index.js", "../../ant-design-vue/es/vc-picker/utils/dateUtil.js", "../../ant-design-vue/es/vc-picker/panels/TimePanel/TimeHeader.js", "../../ant-design-vue/es/vc-picker/panels/TimePanel/TimeUnitColumn.js", "../../ant-design-vue/es/vc-picker/utils/miscUtil.js", "../../ant-design-vue/es/vc-picker/panels/TimePanel/TimeBody.js", "../../ant-design-vue/es/vc-picker/panels/TimePanel/index.js", "../../ant-design-vue/es/vc-picker/hooks/useCellClassName.js", "../../ant-design-vue/es/vc-picker/RangeContext.js", "../../ant-design-vue/es/vc-picker/panels/DatePanel/DateBody.js", "../../ant-design-vue/es/vc-picker/panels/DatePanel/DateHeader.js", "../../ant-design-vue/es/vc-picker/panels/DatePanel/index.js", "../../ant-design-vue/es/vc-picker/panels/DatetimePanel/index.js", "../../ant-design-vue/es/vc-picker/panels/WeekPanel/index.js", "../../ant-design-vue/es/vc-picker/panels/MonthPanel/MonthHeader.js", "../../ant-design-vue/es/vc-picker/panels/MonthPanel/MonthBody.js", "../../ant-design-vue/es/vc-picker/panels/MonthPanel/index.js", "../../ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterHeader.js", "../../ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterBody.js", "../../ant-design-vue/es/vc-picker/panels/QuarterPanel/index.js", "../../ant-design-vue/es/vc-picker/panels/YearPanel/YearHeader.js", "../../ant-design-vue/es/vc-picker/panels/YearPanel/YearBody.js", "../../ant-design-vue/es/vc-picker/panels/YearPanel/index.js", "../../ant-design-vue/es/vc-picker/utils/getExtraFooter.js", "../../ant-design-vue/es/vc-picker/utils/getRanges.js", "../../ant-design-vue/es/vc-picker/PickerPanel.js", "../../ant-design-vue/es/vc-picker/PickerTrigger.js", "../../ant-design-vue/es/vc-picker/PresetPanel.js", "../../ant-design-vue/es/vc-picker/hooks/usePickerInput.js", "../../ant-design-vue/es/vc-picker/hooks/useTextValueMapping.js", "../../ant-design-vue/es/vc-picker/hooks/useValueTexts.js", "../../ant-design-vue/es/vc-picker/hooks/useHoverValue.js", "../../ant-design-vue/es/vc-picker/hooks/usePresets.js", "../../ant-design-vue/es/vc-picker/utils/warnUtil.js", "../../ant-design-vue/es/vc-picker/Picker.js", "../../ant-design-vue/es/vc-picker/hooks/useRangeDisabled.js", "../../ant-design-vue/es/vc-picker/hooks/useRangeViewDates.js", "../../ant-design-vue/es/_util/hooks/_vueuse/tryOnScopeDispose.js", "../../ant-design-vue/es/_util/hooks/_vueuse/resolveUnref.js", "../../ant-design-vue/es/_util/hooks/_vueuse/unrefElement.js", "../../ant-design-vue/es/_util/hooks/_vueuse/tryOnMounted.js", "../../ant-design-vue/es/_util/hooks/_vueuse/useSupported.js", "../../ant-design-vue/es/_util/hooks/_vueuse/is.js", "../../ant-design-vue/es/_util/hooks/_vueuse/_configurable.js", "../../ant-design-vue/es/_util/hooks/_vueuse/useResizeObserver.js", "../../ant-design-vue/es/_util/hooks/_vueuse/useElementSize.js", "../../ant-design-vue/es/vc-picker/RangePicker.js", "../../ant-design-vue/es/vc-picker/index.js", "../../ant-design-vue/es/vc-checkbox/Checkbox.js", "../../ant-design-vue/es/radio/context.js", "../../ant-design-vue/es/radio/style/index.js", "../../ant-design-vue/es/radio/Radio.js", "../../ant-design-vue/es/radio/Group.js", "../../ant-design-vue/es/radio/RadioButton.js", "../../ant-design-vue/es/radio/index.js", "../../ant-design-vue/es/calendar/Header.js", "../../ant-design-vue/es/input/style/index.js", "../../ant-design-vue/es/date-picker/style/index.js", "../../ant-design-vue/es/calendar/style/index.js", "../../ant-design-vue/es/calendar/generateCalendar.js", "../../ant-design-vue/es/calendar/dayjs.js", "../../ant-design-vue/es/calendar/index.js", "../../ant-design-vue/es/tabs/src/hooks/useRaf.js", "../../ant-design-vue/es/tabs/src/TabNavList/TabNode.js", "../../ant-design-vue/es/tabs/src/hooks/useOffsets.js", "../../ant-design-vue/es/tabs/src/TabNavList/AddButton.js", "../../ant-design-vue/es/tabs/src/TabNavList/OperationNode.js", "../../ant-design-vue/es/tabs/src/TabContext.js", "../../ant-design-vue/es/tabs/src/hooks/useTouchMove.js", "../../ant-design-vue/es/tabs/src/hooks/useSyncState.js", "../../ant-design-vue/es/_util/hooks/useRefs.js", "../../ant-design-vue/es/tabs/src/TabNavList/index.js", "../../ant-design-vue/es/tabs/src/TabPanelList/index.js", "../../ant-design-vue/es/tabs/style/motion.js", "../../ant-design-vue/es/tabs/style/index.js", "../../ant-design-vue/es/tabs/src/Tabs.js", "../../ant-design-vue/es/tabs/src/TabPanelList/TabPane.js", "../../ant-design-vue/es/tabs/src/index.js", "../../ant-design-vue/es/tabs/index.js", "../../ant-design-vue/es/card/style/index.js", "../../ant-design-vue/es/skeleton/Title.js", "../../ant-design-vue/es/skeleton/Paragraph.js", "../../ant-design-vue/es/skeleton/Element.js", "../../ant-design-vue/es/skeleton/style/index.js", "../../ant-design-vue/es/skeleton/Skeleton.js", "../../ant-design-vue/es/skeleton/Button.js", "../../ant-design-vue/es/skeleton/Input.js", "../../ant-design-vue/es/skeleton/Image.js", "../../ant-design-vue/es/skeleton/Avatar.js", "../../ant-design-vue/es/skeleton/index.js", "../../ant-design-vue/es/card/Card.js", "../../ant-design-vue/es/card/Meta.js", "../../ant-design-vue/es/card/Grid.js", "../../ant-design-vue/es/card/index.js", "../../ant-design-vue/es/collapse/commonProps.js", "../../ant-design-vue/es/collapse/style/index.js", "../../ant-design-vue/es/collapse/Collapse.js", "../../ant-design-vue/es/collapse/PanelContent.js", "../../ant-design-vue/es/collapse/CollapsePanel.js", "../../ant-design-vue/es/collapse/index.js", "../../ant-design-vue/es/_util/json2mq.js", "../../ant-design-vue/es/vc-slick/default-props.js", "../../ant-design-vue/es/vc-slick/initial-state.js", "../../ant-design-vue/es/vc-slick/utils/innerSliderUtils.js", "../../ant-design-vue/es/vc-slick/track.js", "../../ant-design-vue/es/vc-slick/dots.js", "../../ant-design-vue/es/vc-slick/arrows.js", "../../ant-design-vue/es/vc-slick/inner-slider.js", "../../ant-design-vue/es/vc-slick/slider.js", "../../ant-design-vue/es/vc-slick/index.js", "../../ant-design-vue/es/carousel/style/index.js", "../../ant-design-vue/es/carousel/index.js", "../../ant-design-vue/es/vc-cascader/utils/commonUtil.js", "../../ant-design-vue/es/vc-tree/contextTypes.js", "../../ant-design-vue/es/vc-tree/Indent.js", "../../ant-design-vue/es/vc-tree/props.js", "../../ant-design-vue/es/vc-tree/TreeNode.js", "../../ant-design-vue/es/vc-tree/util.js", "../../ant-design-vue/es/vc-tree/utils/treeUtil.js", "../../ant-design-vue/es/vc-cascader/hooks/useEntities.js", "../../ant-design-vue/es/vc-cascader/hooks/useSearchConfig.js", "../../ant-design-vue/es/vc-cascader/hooks/useSearchOptions.js", "../../ant-design-vue/es/vc-cascader/utils/treeUtil.js", "../../ant-design-vue/es/vc-cascader/hooks/useMissingValues.js", "../../ant-design-vue/es/vc-tree/utils/conductUtil.js", "../../ant-design-vue/es/vc-cascader/hooks/useDisplayValues.js", "../../ant-design-vue/es/vc-cascader/context.js", "../../ant-design-vue/es/vc-cascader/OptionList/useActive.js", "../../ant-design-vue/es/vc-cascader/OptionList/useKeyboard.js", "../../ant-design-vue/es/vc-cascader/OptionList/Checkbox.js", "../../ant-design-vue/es/vc-cascader/OptionList/Column.js", "../../ant-design-vue/es/vc-cascader/OptionList/index.js", "../../ant-design-vue/es/vc-tree/useMaxLevel.js", "../../ant-design-vue/es/vc-cascader/Cascader.js", "../../ant-design-vue/es/vc-cascader/index.js", "../../ant-design-vue/es/_util/styleChecker.js", "../../ant-design-vue/es/_util/hooks/useFlexGapSupport.js", "../../ant-design-vue/es/grid/context.js", "../../ant-design-vue/es/grid/style/index.js", "../../ant-design-vue/es/grid/Row.js", "../../src/util.ts", "../../src/rule/required.ts", "../../src/rule/whitespace.ts", "../../src/rule/url.ts", "../../src/rule/type.ts", "../../src/rule/range.ts", "../../src/rule/enum.ts", "../../src/rule/pattern.ts", "../../src/rule/index.ts", "../../src/validator/string.ts", "../../src/validator/method.ts", "../../src/validator/number.ts", "../../src/validator/boolean.ts", "../../src/validator/regexp.ts", "../../src/validator/integer.ts", "../../src/validator/float.ts", "../../src/validator/array.ts", "../../src/validator/object.ts", "../../src/validator/enum.ts", "../../src/validator/pattern.ts", "../../src/validator/date.ts", "../../src/validator/required.ts", "../../src/validator/type.ts", "../../src/validator/any.ts", "../../src/validator/index.ts", "../../src/messages.ts", "../../src/index.ts", "../../ant-design-vue/es/form/utils/typeUtil.js", "../../ant-design-vue/es/vc-util/get.js", "../../ant-design-vue/es/vc-util/set.js", "../../ant-design-vue/es/form/utils/valueUtil.js", "../../ant-design-vue/es/form/utils/messages.js", "../../ant-design-vue/es/form/utils/validateUtil.js", "../../ant-design-vue/es/form/context.js", "../../ant-design-vue/es/grid/Col.js", "../../ant-design-vue/es/form/FormItemLabel.js", "../../ant-design-vue/es/form/style/explain.js", "../../ant-design-vue/es/form/style/index.js", "../../ant-design-vue/es/form/ErrorList.js", "../../ant-design-vue/es/form/FormItemInput.js", "../../ant-design-vue/es/form/utils/useDebounce.js", "../../ant-design-vue/es/form/FormItem.js", "../../ant-design-vue/es/form/utils/asyncUtil.js", "../../ant-design-vue/es/form/useForm.js", "../../ant-design-vue/es/form/Form.js", "../../ant-design-vue/es/form/index.js", "../../ant-design-vue/es/checkbox/style/index.js", "../../ant-design-vue/es/cascader/style/index.js", "../../ant-design-vue/es/cascader/index.js", "../../ant-design-vue/es/checkbox/interface.js", "../../ant-design-vue/es/checkbox/Checkbox.js", "../../ant-design-vue/es/checkbox/Group.js", "../../ant-design-vue/es/checkbox/index.js", "../../ant-design-vue/es/grid/index.js", "../../ant-design-vue/es/col/index.js", "../../ant-design-vue/es/comment/style/index.js", "../../ant-design-vue/es/comment/index.js", "../../ant-design-vue/es/modal/locale.js", "../../ant-design-vue/es/locale/index.js", "../../ant-design-vue/es/locale-provider/index.js", "../../ant-design-vue/es/vc-notification/Notice.js", "../../ant-design-vue/es/vc-notification/Notification.js", "../../ant-design-vue/es/vc-notification/HookNotification.js", "../../ant-design-vue/es/vc-notification/useNotification.js", "../../ant-design-vue/es/vc-notification/index.js", "../../ant-design-vue/es/message/style/index.js", "../../ant-design-vue/es/message/PurePanel.js", "../../ant-design-vue/es/message/useMessage.js", "../../ant-design-vue/es/message/index.js", "../../ant-design-vue/es/notification/style/placement.js", "../../ant-design-vue/es/notification/style/index.js", "../../ant-design-vue/es/notification/PurePanel.js", "../../ant-design-vue/es/notification/util.js", "../../ant-design-vue/es/notification/useNotification.js", "../../ant-design-vue/es/notification/index.js", "../../ant-design-vue/es/config-provider/cssVariables.js", "../../ant-design-vue/es/config-provider/style/index.js", "../../ant-design-vue/es/config-provider/hooks/useTheme.js", "../../ant-design-vue/es/config-provider/index.js", "../../ant-design-vue/es/date-picker/PickerButton.js", "../../ant-design-vue/es/tag/style/index.js", "../../ant-design-vue/es/tag/CheckableTag.js", "../../ant-design-vue/es/tag/index.js", "../../ant-design-vue/es/date-picker/PickerTag.js", "../../ant-design-vue/es/date-picker/util.js", "../../ant-design-vue/es/date-picker/generatePicker/props.js", "../../ant-design-vue/es/date-picker/generatePicker/generateSinglePicker.js", "../../ant-design-vue/es/date-picker/generatePicker/generateRangePicker.js", "../../ant-design-vue/es/date-picker/generatePicker/index.js", "../../ant-design-vue/es/date-picker/dayjs.js", "../../ant-design-vue/es/date-picker/index.js", "../../ant-design-vue/es/descriptions/Cell.js", "../../ant-design-vue/es/descriptions/Row.js", "../../ant-design-vue/es/descriptions/style/index.js", "../../ant-design-vue/es/descriptions/index.js", "../../ant-design-vue/es/divider/style/index.js", "../../ant-design-vue/es/divider/index.js", "../../ant-design-vue/es/dropdown/index.js", "../../ant-design-vue/es/vc-drawer/src/IDrawerPropTypes.js", "../../ant-design-vue/es/vc-drawer/src/utils.js", "../../ant-design-vue/es/vc-drawer/src/DrawerChild.js", "../../ant-design-vue/es/vc-drawer/src/DrawerWrapper.js", "../../ant-design-vue/es/vc-drawer/index.js", "../../ant-design-vue/es/drawer/style/motion.js", "../../ant-design-vue/es/drawer/style/index.js", "../../ant-design-vue/es/drawer/index.js", "../../ant-design-vue/es/float-button/interface.js", "../../ant-design-vue/es/float-button/FloatButtonContent.js", "../../ant-design-vue/es/float-button/context.js", "../../ant-design-vue/es/float-button/util.js", "../../ant-design-vue/es/float-button/style/index.js", "../../ant-design-vue/es/float-button/FloatButton.js", "../../ant-design-vue/es/float-button/FloatButtonGroup.js", "../../ant-design-vue/es/float-button/BackTop.js", "../../ant-design-vue/es/float-button/index.js", "../../ant-design-vue/es/vc-input/utils/commonUtils.js", "../../ant-design-vue/es/vc-input/inputProps.js", "../../ant-design-vue/es/vc-input/BaseInput.js", "../../ant-design-vue/es/vc-input/Input.js", "../../ant-design-vue/es/input/inputProps.js", "../../ant-design-vue/es/input/Input.js", "../../ant-design-vue/es/input/Group.js", "../../ant-design-vue/es/input/Search.js", "../../ant-design-vue/es/input/util.js", "../../ant-design-vue/es/input/ClearableLabeledInput.js", "../../ant-design-vue/es/input/calculateNodeHeight.js", "../../ant-design-vue/es/input/ResizableTextArea.js", "../../ant-design-vue/es/input/TextArea.js", "../../ant-design-vue/es/input/Password.js", "../../ant-design-vue/es/input/index.js", "../../ant-design-vue/es/vc-util/Dom/css.js", "../../ant-design-vue/es/vc-dialog/IDialogPropTypes.js", "../../ant-design-vue/es/vc-dialog/util.js", "../../ant-design-vue/es/vc-dialog/Content.js", "../../ant-design-vue/es/vc-dialog/Mask.js", "../../ant-design-vue/es/vc-dialog/Dialog.js", "../../ant-design-vue/es/vc-dialog/DialogWrap.js", "../../ant-design-vue/es/vc-dialog/index.js", "../../ant-design-vue/es/vc-image/src/hooks/useFrameSetState.js", "../../ant-design-vue/es/vc-image/src/getFixScaleEleTransPosition.js", "../../ant-design-vue/es/vc-image/src/PreviewGroup.js", "../../ant-design-vue/es/vc-image/src/Preview.js", "../../ant-design-vue/es/vc-image/src/Image.js", "../../ant-design-vue/es/vc-image/index.js", "../../ant-design-vue/es/modal/style/index.js", "../../ant-design-vue/es/image/style/index.js", "../../ant-design-vue/es/image/PreviewGroup.js", "../../ant-design-vue/es/image/index.js", "../../ant-design-vue/es/input-number/src/utils/supportUtil.js", "../../ant-design-vue/es/input-number/src/utils/numberUtil.js", "../../ant-design-vue/es/input-number/src/utils/MiniDecimal.js", "../../ant-design-vue/es/input-number/src/StepHandler.js", "../../ant-design-vue/es/input-number/src/hooks/useCursor.js", "../../ant-design-vue/es/input-number/src/hooks/useFrame.js", "../../ant-design-vue/es/input-number/src/InputNumber.js", "../../ant-design-vue/es/_util/isValidValue.js", "../../ant-design-vue/es/input-number/style/index.js", "../../ant-design-vue/es/input-number/index.js", "../../ant-design-vue/es/layout/style/light.js", "../../ant-design-vue/es/layout/style/index.js", "../../ant-design-vue/es/layout/layout.js", "../../ant-design-vue/es/layout/Sider.js", "../../ant-design-vue/es/layout/index.js", "../../throttle-debounce/throttle.js", "../../throttle-debounce/debounce.js", "../../ant-design-vue/es/spin/style/index.js", "../../ant-design-vue/es/spin/Spin.js", "../../ant-design-vue/es/spin/index.js", "../../ant-design-vue/es/pagination/Select.js", "../../ant-design-vue/es/vc-pagination/Pager.js", "../../ant-design-vue/es/vc-pagination/KeyCode.js", "../../ant-design-vue/es/vc-pagination/Options.js", "../../ant-design-vue/es/vc-pagination/Pagination.js", "../../ant-design-vue/es/pagination/style/index.js", "../../ant-design-vue/es/pagination/Pagination.js", "../../ant-design-vue/es/pagination/index.js", "../../ant-design-vue/es/list/ItemMeta.js", "../../ant-design-vue/es/list/contextKey.js", "../../ant-design-vue/es/list/Item.js", "../../ant-design-vue/es/list/style/index.js", "../../ant-design-vue/es/list/index.js", "../../ant-design-vue/es/vc-mentions/src/util.js", "../../ant-design-vue/es/vc-mentions/src/MentionsContext.js", "../../ant-design-vue/es/vc-mentions/src/DropdownMenu.js", "../../ant-design-vue/es/vc-mentions/src/KeywordTrigger.js", "../../ant-design-vue/es/vc-mentions/src/mentionsProps.js", "../../ant-design-vue/es/vc-mentions/src/Mentions.js", "../../ant-design-vue/es/vc-mentions/src/Option.js", "../../ant-design-vue/es/vc-mentions/index.js", "../../ant-design-vue/es/mentions/style/index.js", "../../ant-design-vue/es/mentions/index.js", "../../ant-design-vue/es/modal/Modal.js", "../../ant-design-vue/es/_util/hooks/useDestroyed.js", "../../ant-design-vue/es/_util/ActionButton.js", "../../ant-design-vue/es/modal/ConfirmDialog.js", "../../ant-design-vue/es/modal/destroyFns.js", "../../ant-design-vue/es/modal/confirm.js", "../../ant-design-vue/es/modal/useModal/HookModal.js", "../../ant-design-vue/es/modal/useModal/index.js", "../../ant-design-vue/es/modal/index.js", "../../ant-design-vue/es/statistic/Number.js", "../../ant-design-vue/es/statistic/style/index.js", "../../ant-design-vue/es/statistic/Statistic.js", "../../ant-design-vue/es/statistic/utils.js", "../../ant-design-vue/es/statistic/Countdown.js", "../../ant-design-vue/es/statistic/index.js", "../../ant-design-vue/es/_util/transButton.js", "../../ant-design-vue/es/space/index.js", "../../ant-design-vue/es/page-header/style/index.js", "../../ant-design-vue/es/page-header/index.js", "../../ant-design-vue/es/popconfirm/style/index.js", "../../ant-design-vue/es/popconfirm/index.js", "../../ant-design-vue/es/progress/props.js", "../../ant-design-vue/es/progress/utils.js", "../../ant-design-vue/es/progress/Line.js", "../../ant-design-vue/es/vc-progress/src/common.js", "../../ant-design-vue/es/vc-progress/src/types.js", "../../ant-design-vue/es/vc-progress/src/Line.js", "../../ant-design-vue/es/vc-progress/src/Circle.js", "../../ant-design-vue/es/progress/Circle.js", "../../ant-design-vue/es/progress/Steps.js", "../../ant-design-vue/es/progress/style/index.js", "../../ant-design-vue/es/progress/progress.js", "../../ant-design-vue/es/progress/index.js", "../../ant-design-vue/es/rate/util.js", "../../ant-design-vue/es/rate/Star.js", "../../ant-design-vue/es/rate/style/index.js", "../../ant-design-vue/es/rate/index.js", "../../ant-design-vue/es/result/noFound.js", "../../ant-design-vue/es/result/serverError.js", "../../ant-design-vue/es/result/unauthorized.js", "../../ant-design-vue/es/result/style/index.js", "../../ant-design-vue/es/result/index.js", "../../ant-design-vue/es/row/index.js", "../../ant-design-vue/es/vc-slider/src/common/Track.js", "../../ant-design-vue/es/vc-slider/src/common/Steps.js", "../../ant-design-vue/es/vc-slider/src/common/Marks.js", "../../ant-design-vue/es/vc-slider/src/Handle.js", "../../ant-design-vue/es/vc-slider/src/utils.js", "../../ant-design-vue/es/vc-slider/src/common/createSlider.js", "../../ant-design-vue/es/vc-slider/src/Slider.js", "../../ant-design-vue/es/vc-slider/src/Range.js", "../../ant-design-vue/es/slider/SliderTooltip.js", "../../ant-design-vue/es/slider/style/index.js", "../../ant-design-vue/es/slider/index.js", "../../ant-design-vue/es/vc-steps/Step.js", "../../ant-design-vue/es/vc-steps/Steps.js", "../../ant-design-vue/es/vc-steps/index.js", "../../ant-design-vue/es/steps/style/custom-icon.js", "../../ant-design-vue/es/steps/style/label-placement.js", "../../ant-design-vue/es/steps/style/nav.js", "../../ant-design-vue/es/steps/style/progress.js", "../../ant-design-vue/es/steps/style/progress-dot.js", "../../ant-design-vue/es/steps/style/rtl.js", "../../ant-design-vue/es/steps/style/small.js", "../../ant-design-vue/es/steps/style/vertical.js", "../../ant-design-vue/es/steps/style/inline.js", "../../ant-design-vue/es/steps/style/index.js", "../../ant-design-vue/es/steps/index.js", "../../ant-design-vue/es/switch/style/index.js", "../../ant-design-vue/es/switch/index.js", "../../ant-design-vue/es/vc-table/context/TableContext.js", "../../ant-design-vue/es/vc-table/utils/valueUtil.js", "../../ant-design-vue/es/table/context.js", "../../ant-design-vue/es/vc-table/utils/legacyUtil.js", "../../ant-design-vue/es/vc-table/context/HoverContext.js", "../../ant-design-vue/es/vc-table/context/StickyContext.js", "../../ant-design-vue/es/vc-table/Cell/index.js", "../../ant-design-vue/es/vc-table/utils/fixUtil.js", "../../ant-design-vue/es/vc-table/Header/DragHandle.js", "../../ant-design-vue/es/vc-table/Header/HeaderRow.js", "../../ant-design-vue/es/vc-table/Header/Header.js", "../../ant-design-vue/es/vc-table/context/ExpandedRowContext.js", "../../ant-design-vue/es/vc-table/Body/ExpandedRow.js", "../../ant-design-vue/es/vc-table/Body/MeasureCell.js", "../../ant-design-vue/es/vc-table/context/BodyContext.js", "../../ant-design-vue/es/vc-table/Body/BodyRow.js", "../../ant-design-vue/es/vc-table/hooks/useFlattenRecords.js", "../../ant-design-vue/es/vc-table/context/ResizeContext.js", "../../ant-design-vue/es/vc-table/Body/index.js", "../../ant-design-vue/es/vc-table/constant.js", "../../ant-design-vue/es/vc-table/hooks/useColumns.js", "../../ant-design-vue/es/vc-table/hooks/useFrame.js", "../../ant-design-vue/es/vc-table/hooks/useStickyOffsets.js", "../../ant-design-vue/es/vc-table/ColGroup.js", "../../ant-design-vue/es/vc-table/Panel/index.js", "../../ant-design-vue/es/vc-table/Footer/Summary.js", "../../ant-design-vue/es/vc-table/Footer/Row.js", "../../ant-design-vue/es/vc-table/context/SummaryContext.js", "../../ant-design-vue/es/vc-table/Footer/Cell.js", "../../ant-design-vue/es/vc-table/Footer/index.js", "../../ant-design-vue/es/vc-table/utils/expandUtil.js", "../../ant-design-vue/es/vc-table/stickyScrollBar.js", "../../ant-design-vue/es/vc-table/hooks/useSticky.js", "../../ant-design-vue/es/vc-table/FixedHolder/index.js", "../../ant-design-vue/es/_util/reactivePick.js", "../../ant-design-vue/es/vc-table/Table.js", "../../ant-design-vue/es/vc-table/index.js", "../../ant-design-vue/es/_util/extendsObject.js", "../../ant-design-vue/es/table/hooks/usePagination.js", "../../ant-design-vue/es/table/hooks/useLazyKVMap.js", "../../ant-design-vue/es/table/hooks/useSelection.js", "../../ant-design-vue/es/table/util.js", "../../ant-design-vue/es/table/hooks/useSorter.js", "../../ant-design-vue/es/table/hooks/useFilter/FilterWrapper.js", "../../ant-design-vue/es/table/hooks/useFilter/FilterSearch.js", "../../ant-design-vue/es/vc-tree/MotionTreeNode.js", "../../ant-design-vue/es/vc-tree/utils/diffUtil.js", "../../ant-design-vue/es/vc-tree/NodeList.js", "../../ant-design-vue/es/vc-tree/DropIndicator.js", "../../ant-design-vue/es/vc-tree/Tree.js", "../../ant-design-vue/es/vc-tree/index.js", "../../ant-design-vue/es/tree/utils/iconUtil.js", "../../ant-design-vue/es/tree/utils/dropIndicator.js", "../../ant-design-vue/es/tree/style/index.js", "../../ant-design-vue/es/tree/Tree.js", "../../ant-design-vue/es/tree/utils/dictUtil.js", "../../ant-design-vue/es/tree/DirectoryTree.js", "../../ant-design-vue/es/tree/index.js", "../../ant-design-vue/es/vc-util/isEqual.js", "../../ant-design-vue/es/table/hooks/useFilter/FilterDropdown.js", "../../ant-design-vue/es/table/hooks/useFilter/index.js", "../../ant-design-vue/es/table/hooks/useTitleColumns.js", "../../ant-design-vue/es/table/ExpandIcon.js", "../../ant-design-vue/es/table/hooks/useColumns.js", "../../ant-design-vue/es/table/style/bordered.js", "../../ant-design-vue/es/table/style/ellipsis.js", "../../ant-design-vue/es/table/style/empty.js", "../../ant-design-vue/es/table/style/expand.js", "../../ant-design-vue/es/table/style/filter.js", "../../ant-design-vue/es/table/style/fixed.js", "../../ant-design-vue/es/table/style/pagination.js", "../../ant-design-vue/es/table/style/radius.js", "../../ant-design-vue/es/table/style/rtl.js", "../../ant-design-vue/es/table/style/selection.js", "../../ant-design-vue/es/table/style/size.js", "../../ant-design-vue/es/table/style/resize.js", "../../ant-design-vue/es/table/style/sorter.js", "../../ant-design-vue/es/table/style/sticky.js", "../../ant-design-vue/es/table/style/summary.js", "../../ant-design-vue/es/table/style/index.js", "../../ant-design-vue/es/table/Table.js", "../../ant-design-vue/es/table/Column.js", "../../ant-design-vue/es/table/ColumnGroup.js", "../../ant-design-vue/es/table/index.js", "../../ant-design-vue/es/transfer/search.js", "../../ant-design-vue/es/transfer/ListItem.js", "../../ant-design-vue/es/transfer/ListBody.js", "../../ant-design-vue/es/_util/transKeys.js", "../../ant-design-vue/es/transfer/list.js", "../../ant-design-vue/es/transfer/operation.js", "../../ant-design-vue/es/transfer/style/index.js", "../../ant-design-vue/es/transfer/index.js", "../../ant-design-vue/es/vc-tree-select/utils/valueUtil.js", "../../ant-design-vue/es/vc-tree-select/TreeSelectContext.js", "../../ant-design-vue/es/vc-tree-select/OptionList.js", "../../ant-design-vue/es/vc-tree-select/utils/strategyUtil.js", "../../ant-design-vue/es/vc-tree-select/TreeNode.js", "../../ant-design-vue/es/vc-tree-select/utils/legacyUtil.js", "../../ant-design-vue/es/vc-tree-select/hooks/useTreeData.js", "../../ant-design-vue/es/vc-tree-select/hooks/useCache.js", "../../ant-design-vue/es/vc-tree-select/hooks/useDataEntities.js", "../../ant-design-vue/es/vc-tree-select/hooks/useCheckedKeys.js", "../../ant-design-vue/es/vc-tree-select/hooks/useFilterTreeData.js", "../../ant-design-vue/es/vc-tree-select/utils/warningPropsUtil.js", "../../ant-design-vue/es/vc-tree-select/TreeSelect.js", "../../ant-design-vue/es/vc-tree-select/index.js", "../../ant-design-vue/es/tree-select/style/index.js", "../../ant-design-vue/es/tree-select/index.js", "../../ant-design-vue/es/time-picker/time-picker.js", "../../ant-design-vue/es/time-picker/dayjs.js", "../../ant-design-vue/es/time-picker/index.js", "../../ant-design-vue/es/timeline/TimelineItem.js", "../../ant-design-vue/es/timeline/style/index.js", "../../ant-design-vue/es/timeline/Timeline.js", "../../ant-design-vue/es/timeline/index.js", "../../ant-design-vue/es/typography/style/mixins.js", "../../ant-design-vue/es/typography/style/index.js", "../../ant-design-vue/es/typography/Editable.js", "../../ant-design-vue/es/typography/util.js", "../../ant-design-vue/es/typography/Typography.js", "../../ant-design-vue/es/_util/copy-to-clipboard/toggle-selection.js", "../../ant-design-vue/es/_util/copy-to-clipboard/index.js", "../../ant-design-vue/es/typography/Base.js", "../../ant-design-vue/es/typography/Link.js", "../../ant-design-vue/es/typography/Paragraph.js", "../../ant-design-vue/es/typography/Text.js", "../../ant-design-vue/es/typography/Title.js", "../../ant-design-vue/es/typography/index.js", "../../ant-design-vue/es/vc-upload/request.js", "../../ant-design-vue/es/vc-upload/uid.js", "../../ant-design-vue/es/vc-upload/attr-accept.js", "../../ant-design-vue/es/vc-upload/traverseFileTree.js", "../../ant-design-vue/es/vc-upload/interface.js", "../../ant-design-vue/es/vc-upload/AjaxUploader.js", "../../ant-design-vue/es/vc-upload/Upload.js", "../../ant-design-vue/es/vc-upload/index.js", "../../ant-design-vue/es/upload/interface.js", "../../ant-design-vue/es/upload/utils.js", "../../ant-design-vue/es/upload/UploadList/ListItem.js", "../../ant-design-vue/es/upload/UploadList/index.js", "../../ant-design-vue/es/upload/style/dragger.js", "../../ant-design-vue/es/upload/style/list.js", "../../ant-design-vue/es/upload/style/motion.js", "../../ant-design-vue/es/upload/style/picture.js", "../../ant-design-vue/es/upload/style/rtl.js", "../../ant-design-vue/es/upload/style/index.js", "../../ant-design-vue/es/upload/Upload.js", "../../ant-design-vue/es/upload/Dragger.js", "../../ant-design-vue/es/upload/index.js", "../../ant-design-vue/es/watermark/utils.js", "../../ant-design-vue/es/_util/hooks/_vueuse/useMutationObserver.js", "../../ant-design-vue/es/watermark/index.js", "../../ant-design-vue/es/segmented/style/index.js", "../../ant-design-vue/es/segmented/src/MotionThumb.js", "../../ant-design-vue/es/segmented/src/segmented.js", "../../ant-design-vue/es/segmented/src/index.js", "../../ant-design-vue/es/segmented/index.js", "../../ant-design-vue/es/qrcode/style/index.js", "../../ant-design-vue/es/qrcode/interface.js", "../../ant-design-vue/es/qrcode/qrcodegen.js", "../../ant-design-vue/es/qrcode/QRCode.js", "../../ant-design-vue/es/qrcode/index.js", "../../ant-design-vue/es/vc-tour/util.js", "../../ant-design-vue/es/vc-tour/hooks/useTarget.js", "../../ant-design-vue/es/vc-tour/interface.js", "../../ant-design-vue/es/vc-tour/TourStep/DefaultPanel.js", "../../ant-design-vue/es/vc-tour/TourStep/index.js", "../../ant-design-vue/es/_util/hooks/useId.js", "../../ant-design-vue/es/vc-tour/Mask.js", "../../ant-design-vue/es/vc-tour/placements.js", "../../ant-design-vue/es/vc-tour/Tour.js", "../../ant-design-vue/es/vc-tour/index.js", "../../ant-design-vue/es/tour/interface.js", "../../ant-design-vue/es/tour/panelRender.js", "../../ant-design-vue/es/tour/useMergedType.js", "../../ant-design-vue/es/tour/style/index.js", "../../ant-design-vue/es/tour/index.js", "../../ant-design-vue/es/app/context.js", "../../ant-design-vue/es/app/style/index.js", "../../ant-design-vue/es/app/index.js", "../../ant-design-vue/es/flex/utils.js", "../../ant-design-vue/es/flex/style/index.js", "../../ant-design-vue/es/_util/gapSize.js", "../../ant-design-vue/es/flex/interface.js", "../../ant-design-vue/es/flex/index.js", "../../ant-design-vue/es/theme/themes/dark/colorAlgorithm.js", "../../ant-design-vue/es/theme/themes/dark/colors.js", "../../ant-design-vue/es/theme/themes/dark/index.js", "../../ant-design-vue/es/theme/themes/compact/genCompactSizeMapToken.js", "../../ant-design-vue/es/theme/themes/compact/index.js", "../../ant-design-vue/es/theme/index.js", "../../ant-design-vue/es/index.js"], - "sourcesContent": ["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));", "!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));", "export { default as Affix } from './affix';\nexport { default as Anchor, AnchorLink } from './anchor';\nexport { default as AutoComplete, AutoCompleteOptGroup, AutoCompleteOption } from './auto-complete';\nexport { default as Alert } from './alert';\nexport { default as Avatar, AvatarGroup } from './avatar';\nexport { default as Badge, BadgeRibbon } from './badge';\nexport { default as Breadcrumb, BreadcrumbItem, BreadcrumbSeparator } from './breadcrumb';\nexport { default as Button, ButtonGroup } from './button';\nexport { default as Calendar } from './calendar';\nexport { default as Card, CardGrid, CardMeta } from './card';\nexport { default as Collapse, CollapsePanel } from './collapse';\nexport { default as Carousel } from './carousel';\nexport { default as Cascader } from './cascader';\nexport { default as Checkbox, CheckboxGroup } from './checkbox';\nexport { default as Col } from './col';\nexport { default as Comment } from './comment';\nexport { default as ConfigProvider } from './config-provider';\nexport { default as DatePicker, MonthPicker, WeekPicker, RangePicker, QuarterPicker } from './date-picker';\nexport { default as Descriptions, DescriptionsItem } from './descriptions';\nexport { default as Divider } from './divider';\nexport { default as Dropdown, DropdownButton } from './dropdown';\nexport { default as Drawer } from './drawer';\nexport { default as Empty } from './empty';\nexport { default as FloatButton, FloatButtonGroup, BackTop } from './float-button';\nexport { default as Form, FormItem, FormItemRest } from './form';\nexport { default as Grid } from './grid';\nexport { default as Input, InputGroup, InputPassword, InputSearch, Textarea } from './input';\nexport { default as Image, ImagePreviewGroup } from './image';\nexport { default as InputNumber } from './input-number';\nexport { default as Layout, LayoutHeader, LayoutSider, LayoutFooter, LayoutContent } from './layout';\nexport { default as List, ListItem, ListItemMeta } from './list';\nexport { default as message } from './message';\nexport { default as Menu, MenuDivider, MenuItem, MenuItemGroup, SubMenu } from './menu';\nexport { default as Mentions, MentionsOption } from './mentions';\nexport { default as Modal } from './modal';\nexport { default as Statistic, StatisticCountdown } from './statistic';\nexport { default as notification } from './notification';\nexport { default as PageHeader } from './page-header';\nexport { default as Pagination } from './pagination';\nexport { default as Popconfirm } from './popconfirm';\nexport { default as Popover } from './popover';\nexport { default as Progress } from './progress';\nexport { default as Radio, RadioButton, RadioGroup } from './radio';\nexport { default as Rate } from './rate';\nexport { default as Result } from './result';\nexport { default as Row } from './row';\nexport { default as Select, SelectOptGroup, SelectOption } from './select';\nexport { default as Skeleton, SkeletonButton, SkeletonAvatar, SkeletonInput, SkeletonImage, SkeletonTitle } from './skeleton';\nexport { default as Slider } from './slider';\nexport { default as Space, Compact } from './space';\nexport { default as Spin } from './spin';\nexport { default as Steps, Step } from './steps';\nexport { default as Switch } from './switch';\nexport { default as Table, TableColumn, TableColumnGroup, TableSummary, TableSummaryRow, TableSummaryCell } from './table';\nexport { default as Transfer } from './transfer';\nexport { default as Tree, TreeNode, DirectoryTree } from './tree';\nexport { default as TreeSelect, TreeSelectNode } from './tree-select';\nexport { default as Tabs, TabPane } from './tabs';\nexport { default as Tag, CheckableTag } from './tag';\nexport { default as TimePicker, TimeRangePicker } from './time-picker';\nexport { default as Timeline, TimelineItem } from './timeline';\nexport { default as Tooltip } from './tooltip';\nexport { default as Typography, TypographyLink, TypographyParagraph, TypographyText, TypographyTitle } from './typography';\nexport { default as Upload, UploadDragger } from './upload';\nexport { default as LocaleProvider } from './locale-provider';\nexport { default as Watermark } from './watermark';\nexport { default as Segmented } from './segmented';\nexport { default as QRCode } from './qrcode';\nexport { default as Tour } from './tour';\nexport { default as App } from './app';\nexport { default as Flex } from './flex';", "export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}", "import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}", "import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}", "export const isFunction = val => typeof val === 'function';\nexport const controlDefaultValue = Symbol('controlDefaultValue');\nexport const isArray = Array.isArray;\nexport const isString = val => typeof val === 'string';\nexport const isSymbol = val => typeof val === 'symbol';\nexport const isObject = val => val !== null && typeof val === 'object';\nconst onRE = /^on[^a-z]/;\nconst isOn = key => onRE.test(key);\nconst cacheStringFunction = fn => {\n const cache = Object.create(null);\n return str => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(str => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(str => {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\nconst capitalize = cacheStringFunction(str => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n// change from vue sourcecode\nfunction resolvePropValue(options, props, key, value) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n value = opt.type !== Function && isFunction(defaultValue) ? defaultValue() : defaultValue;\n }\n // boolean casting\n if (opt.type === Boolean) {\n if (!hasOwn(props, key) && !hasDefault) {\n value = false;\n } else if (value === '') {\n value = true;\n }\n }\n }\n return value;\n}\nexport function getDataAndAriaProps(props) {\n return Object.keys(props).reduce((memo, key) => {\n if (key.startsWith('data-') || key.startsWith('aria-')) {\n memo[key] = props[key];\n }\n return memo;\n }, {});\n}\nexport function toPx(val) {\n if (typeof val === 'number') return `${val}px`;\n return val;\n}\nexport function renderHelper(v) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let defaultV = arguments.length > 2 ? arguments[2] : undefined;\n if (typeof v === 'function') {\n return v(props);\n }\n return v !== null && v !== void 0 ? v : defaultV;\n}\nexport function wrapPromiseFn(openFn) {\n let closeFn;\n const closePromise = new Promise(resolve => {\n closeFn = openFn(() => {\n resolve(true);\n });\n });\n const result = () => {\n closeFn === null || closeFn === void 0 ? void 0 : closeFn();\n };\n result.then = (filled, rejected) => closePromise.then(filled, rejected);\n result.promise = closePromise;\n return result;\n}\nexport { isOn, cacheStringFunction, camelize, hyphenate, capitalize, resolvePropValue };", "import { isArray, isString, isObject } from './util';\nfunction classNames() {\n const classes = [];\n for (let i = 0; i < arguments.length; i++) {\n const value = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (!value) continue;\n if (isString(value)) {\n classes.push(value);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const inner = classNames(value[i]);\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n classes.push(name);\n }\n }\n }\n }\n return classes.join(' ');\n}\nexport default classNames;", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "const isValid = value => {\n return value !== undefined && value !== null && value !== '';\n};\nexport default isValid;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst initDefaultProps = (types, defaultProps) => {\n const propTypes = _extends({}, types);\n Object.keys(defaultProps).forEach(k => {\n const prop = propTypes[k];\n if (prop) {\n if (prop.type || prop.default) {\n prop.default = defaultProps[k];\n } else if (prop.def) {\n prop.def(defaultProps[k]);\n } else {\n propTypes[k] = {\n type: prop,\n default: defaultProps[k]\n };\n }\n } else {\n throw new Error(`not have ${k} prop`);\n }\n });\n return propTypes;\n};\nexport default initDefaultProps;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from '../classNames';\nimport { isVNode, Fragment, Comment, Text } from 'vue';\nimport { camelize, hyphenate, isOn, resolvePropValue } from '../util';\nimport isValid from '../isValid';\nimport initDefaultProps from './initDefaultProps';\n// function getType(fn) {\n// const match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n// return match ? match[1] : '';\n// }\nconst splitAttrs = attrs => {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = {};\n const onEvents = {};\n const extraAttrs = {};\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n eventAttrs[key[2].toLowerCase() + key.slice(3)] = attrs[key];\n onEvents[key] = attrs[key];\n } else {\n extraAttrs[key] = attrs[key];\n }\n }\n return {\n onEvents,\n events: eventAttrs,\n extraAttrs\n };\n};\nconst parseStyleText = function () {\n let cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let camel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const res = {};\n const listDelimiter = /;(?![^(]*\\))/g;\n const propertyDelimiter = /:(.+)/;\n if (typeof cssText === 'object') return cssText;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n const tmp = item.split(propertyDelimiter);\n if (tmp.length > 1) {\n const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim();\n res[k] = tmp[1].trim();\n }\n }\n });\n return res;\n};\nconst hasProp = (instance, prop) => {\n return instance[prop] !== undefined;\n};\nexport const skipFlattenKey = Symbol('skipFlatten');\nconst flattenChildren = function () {\n let children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let filterEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const temp = Array.isArray(children) ? children : [children];\n const res = [];\n temp.forEach(child => {\n if (Array.isArray(child)) {\n res.push(...flattenChildren(child, filterEmpty));\n } else if (child && child.type === Fragment) {\n if (child.key === skipFlattenKey) {\n res.push(child);\n } else {\n res.push(...flattenChildren(child.children, filterEmpty));\n }\n } else if (child && isVNode(child)) {\n if (filterEmpty && !isEmptyElement(child)) {\n res.push(child);\n } else if (!filterEmpty) {\n res.push(child);\n }\n } else if (isValid(child)) {\n res.push(child);\n }\n });\n return res;\n};\nconst getSlot = function (self) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (isVNode(self)) {\n if (self.type === Fragment) {\n return name === 'default' ? flattenChildren(self.children) : [];\n } else if (self.children && self.children[name]) {\n return flattenChildren(self.children[name](options));\n } else {\n return [];\n }\n } else {\n const res = self.$slots[name] && self.$slots[name](options);\n return flattenChildren(res);\n }\n};\nconst findDOMNode = instance => {\n var _a;\n let node = ((_a = instance === null || instance === void 0 ? void 0 : instance.vnode) === null || _a === void 0 ? void 0 : _a.el) || instance && (instance.$el || instance);\n while (node && !node.tagName) {\n node = node.nextSibling;\n }\n return node;\n};\nconst getOptionProps = instance => {\n const res = {};\n if (instance.$ && instance.$.vnode) {\n const props = instance.$.vnode.props || {};\n Object.keys(instance.$props).forEach(k => {\n const v = instance.$props[k];\n const hyphenateKey = hyphenate(k);\n if (v !== undefined || hyphenateKey in props) {\n res[k] = v; // 直接取 $props[k]\n }\n });\n } else if (isVNode(instance) && typeof instance.type === 'object') {\n const originProps = instance.props || {};\n const props = {};\n Object.keys(originProps).forEach(key => {\n props[camelize(key)] = originProps[key];\n });\n const options = instance.type.props || {};\n Object.keys(options).forEach(k => {\n const v = resolvePropValue(options, props, k, props[k]);\n if (v !== undefined || k in props) {\n res[k] = v;\n }\n });\n }\n return res;\n};\nconst getComponent = function (instance) {\n let prop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : instance;\n let execute = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n let com = undefined;\n if (instance.$) {\n const temp = instance[prop];\n if (temp !== undefined) {\n return typeof temp === 'function' && execute ? temp(options) : temp;\n } else {\n com = instance.$slots[prop];\n com = execute && com ? com(options) : com;\n }\n } else if (isVNode(instance)) {\n const temp = instance.props && instance.props[prop];\n if (temp !== undefined && instance.props !== null) {\n return typeof temp === 'function' && execute ? temp(options) : temp;\n } else if (instance.type === Fragment) {\n com = instance.children;\n } else if (instance.children && instance.children[prop]) {\n com = instance.children[prop];\n com = execute && com ? com(options) : com;\n }\n }\n if (Array.isArray(com)) {\n com = flattenChildren(com);\n com = com.length === 1 ? com[0] : com;\n com = com.length === 0 ? undefined : com;\n }\n return com;\n};\nconst getKey = ele => {\n const key = ele.key;\n return key;\n};\nexport function getEvents() {\n let ele = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let on = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let props = {};\n if (ele.$) {\n props = _extends(_extends({}, props), ele.$attrs);\n } else {\n props = _extends(_extends({}, props), ele.props);\n }\n return splitAttrs(props)[on ? 'onEvents' : 'events'];\n}\nexport function getClass(ele) {\n const props = (isVNode(ele) ? ele.props : ele.$attrs) || {};\n const tempCls = props.class || {};\n let cls = {};\n if (typeof tempCls === 'string') {\n tempCls.split(' ').forEach(c => {\n cls[c.trim()] = true;\n });\n } else if (Array.isArray(tempCls)) {\n classNames(tempCls).split(' ').forEach(c => {\n cls[c.trim()] = true;\n });\n } else {\n cls = _extends(_extends({}, cls), tempCls);\n }\n return cls;\n}\nexport function getStyle(ele, camel) {\n const props = (isVNode(ele) ? ele.props : ele.$attrs) || {};\n let style = props.style || {};\n if (typeof style === 'string') {\n style = parseStyleText(style, camel);\n } else if (camel && style) {\n // 驼峰化\n const res = {};\n Object.keys(style).forEach(k => res[camelize(k)] = style[k]);\n return res;\n }\n return style;\n}\nexport function getComponentName(opts) {\n return opts && (opts.Ctor.options.name || opts.tag);\n}\nexport function isFragment(c) {\n return c.length === 1 && c[0].type === Fragment;\n}\nexport function isEmptyContent(c) {\n return c === undefined || c === null || c === '' || Array.isArray(c) && c.length === 0;\n}\nexport function isEmptyElement(c) {\n return c && (c.type === Comment || c.type === Fragment && c.children.length === 0 || c.type === Text && c.children.trim() === '');\n}\nexport function isEmptySlot(c) {\n return !c || c().every(isEmptyElement);\n}\nexport function isStringElement(c) {\n return c && c.type === Text;\n}\nexport function filterEmpty() {\n let children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const res = [];\n children.forEach(child => {\n if (Array.isArray(child)) {\n res.push(...child);\n } else if ((child === null || child === void 0 ? void 0 : child.type) === Fragment) {\n res.push(...filterEmpty(child.children));\n } else {\n res.push(child);\n }\n });\n return res.filter(c => !isEmptyElement(c));\n}\nexport function filterEmptyWithUndefined(children) {\n if (children) {\n const coms = filterEmpty(children);\n return coms.length ? coms : undefined;\n } else {\n return children;\n }\n}\nfunction isValidElement(element) {\n if (Array.isArray(element) && element.length === 1) {\n element = element[0];\n }\n return element && element.__v_isVNode && typeof element.type !== 'symbol'; // remove text node\n}\nfunction getPropsSlot(slots, props) {\n let prop = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default';\n var _a, _b;\n return (_a = props[prop]) !== null && _a !== void 0 ? _a : (_b = slots[prop]) === null || _b === void 0 ? void 0 : _b.call(slots);\n}\nexport const getTextFromElement = ele => {\n if (isValidElement(ele) && isStringElement(ele[0])) {\n return ele[0].children;\n }\n return ele;\n};\nexport { splitAttrs, hasProp, getOptionProps, getComponent, getKey, parseStyleText, initDefaultProps, isValidElement, camelize, getSlot, findDOMNode, flattenChildren, getPropsSlot };\nexport default hasProp;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { defineComponent, getCurrentInstance, onMounted, onUnmounted, onUpdated, reactive, watch } from 'vue';\nimport { findDOMNode } from '../_util/props-util';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'ResizeObserver',\n props: {\n disabled: Boolean,\n onResize: Function\n },\n emits: ['resize'],\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const state = reactive({\n width: 0,\n height: 0,\n offsetHeight: 0,\n offsetWidth: 0\n });\n let currentElement = null;\n let resizeObserver = null;\n const destroyObserver = () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n resizeObserver = null;\n }\n };\n const onResize = entries => {\n const {\n onResize\n } = props;\n const target = entries[0].target;\n const {\n width,\n height\n } = target.getBoundingClientRect();\n const {\n offsetWidth,\n offsetHeight\n } = target;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n const fixedWidth = Math.floor(width);\n const fixedHeight = Math.floor(height);\n if (state.width !== fixedWidth || state.height !== fixedHeight || state.offsetWidth !== offsetWidth || state.offsetHeight !== offsetHeight) {\n const size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth,\n offsetHeight\n };\n _extends(state, size);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(() => {\n onResize(_extends(_extends({}, size), {\n offsetWidth,\n offsetHeight\n }), target);\n });\n }\n }\n };\n const instance = getCurrentInstance();\n const registerObserver = () => {\n const {\n disabled\n } = props;\n // Unregister if disabled\n if (disabled) {\n destroyObserver();\n return;\n }\n // Unregister if element changed\n const element = findDOMNode(instance);\n const elementChanged = element !== currentElement;\n if (elementChanged) {\n destroyObserver();\n currentElement = element;\n }\n if (!resizeObserver && element) {\n resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(element);\n }\n };\n onMounted(() => {\n registerObserver();\n });\n onUpdated(() => {\n registerObserver();\n });\n onUnmounted(() => {\n destroyObserver();\n });\n watch(() => props.disabled, () => {\n registerObserver();\n }, {\n flush: 'post'\n });\n return () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)[0];\n };\n }\n});", "let raf = callback => setTimeout(callback, 16);\nlet caf = num => clearTimeout(num);\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = callback => window.requestAnimationFrame(callback);\n caf = handle => window.cancelAnimationFrame(handle);\n}\nlet rafUUID = 0;\nconst rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nexport default function wrapperRaf(callback) {\n let times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n const id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n // Trigger\n callback();\n } else {\n // Next raf\n const realId = raf(() => {\n callRef(leftTimes - 1);\n });\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n}\nwrapperRaf.cancel = id => {\n const realId = rafIds.get(id);\n cleanup(realId);\n return caf(realId);\n};", "import raf from './raf';\nfunction throttleByAnimationFrame(fn) {\n let requestId;\n const later = args => () => {\n requestId = null;\n fn(...args);\n };\n const throttled = function () {\n if (requestId == null) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n requestId = raf(later(args));\n }\n };\n throttled.cancel = () => {\n raf.cancel(requestId);\n requestId = null;\n };\n return throttled;\n}\nexport default throttleByAnimationFrame;", "// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport const tuple = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args;\n};\nexport const tupleNum = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return args;\n};\nexport const withInstall = comp => {\n const c = comp;\n c.install = function (app) {\n app.component(c.displayName || c.name, comp);\n };\n return comp;\n};\nexport function eventType() {\n return {\n type: [Function, Array]\n };\n}\nexport function objectType(defaultVal) {\n return {\n type: Object,\n default: defaultVal\n };\n}\nexport function booleanType(defaultVal) {\n return {\n type: Boolean,\n default: defaultVal\n };\n}\nexport function functionType(defaultVal) {\n return {\n type: Function,\n default: defaultVal\n };\n}\nexport function anyType(defaultVal, required) {\n const type = {\n validator: () => true,\n default: defaultVal\n };\n return required ? type : type;\n}\nexport function vNodeType() {\n return {\n validator: () => true\n };\n}\nexport function arrayType(defaultVal) {\n return {\n type: Array,\n default: defaultVal\n };\n}\nexport function stringType(defaultVal) {\n return {\n type: String,\n default: defaultVal\n };\n}\nexport function someType(types, defaultVal) {\n return types ? {\n type: types,\n default: defaultVal\n } : anyType(defaultVal);\n}", "// Test via a getter in the options object to see if the passive property is accessed\nlet supportsPassive = false;\ntry {\n const opts = Object.defineProperty({}, 'passive', {\n get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\nexport default supportsPassive;", "import supportsPassive from '../../_util/supportsPassive';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n if (target && target.addEventListener) {\n let opt = option;\n if (opt === undefined && supportsPassive && (eventType === 'touchstart' || eventType === 'touchmove' || eventType === 'wheel')) {\n opt = {\n passive: false\n };\n }\n target.addEventListener(eventType, cb, opt);\n }\n return {\n remove: () => {\n if (target && target.removeEventListener) {\n target.removeEventListener(eventType, cb);\n }\n }\n };\n}", "import addEventListener from '../vc-util/Dom/addEventListener';\nimport supportsPassive from '../_util/supportsPassive';\nexport function getTargetRect(target) {\n return target !== window ? target.getBoundingClientRect() : {\n top: 0,\n bottom: window.innerHeight\n };\n}\nexport function getFixedTop(placeholderRect, targetRect, offsetTop) {\n if (offsetTop !== undefined && targetRect.top > placeholderRect.top - offsetTop) {\n return `${offsetTop + targetRect.top}px`;\n }\n return undefined;\n}\nexport function getFixedBottom(placeholderRect, targetRect, offsetBottom) {\n if (offsetBottom !== undefined && targetRect.bottom < placeholderRect.bottom + offsetBottom) {\n const targetBottomOffset = window.innerHeight - targetRect.bottom;\n return `${offsetBottom + targetBottomOffset}px`;\n }\n return undefined;\n}\n// ======================== Observer ========================\nconst TRIGGER_EVENTS = ['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'];\nlet observerEntities = [];\nexport function getObserverEntities() {\n // Only used in test env. Can be removed if refactor.\n return observerEntities;\n}\nexport function addObserveTarget(target, affix) {\n if (!target) return;\n let entity = observerEntities.find(item => item.target === target);\n if (entity) {\n entity.affixList.push(affix);\n } else {\n entity = {\n target,\n affixList: [affix],\n eventHandlers: {}\n };\n observerEntities.push(entity);\n // Add listener\n TRIGGER_EVENTS.forEach(eventName => {\n entity.eventHandlers[eventName] = addEventListener(target, eventName, () => {\n entity.affixList.forEach(targetAffix => {\n const {\n lazyUpdatePosition\n } = targetAffix.exposed;\n lazyUpdatePosition();\n }, (eventName === 'touchstart' || eventName === 'touchmove') && supportsPassive ? {\n passive: true\n } : false);\n });\n });\n }\n}\nexport function removeObserveTarget(affix) {\n const observerEntity = observerEntities.find(oriObserverEntity => {\n const hasAffix = oriObserverEntity.affixList.some(item => item === affix);\n if (hasAffix) {\n oriObserverEntity.affixList = oriObserverEntity.affixList.filter(item => item !== affix);\n }\n return hasAffix;\n });\n if (observerEntity && observerEntity.affixList.length === 0) {\n observerEntities = observerEntities.filter(item => item !== observerEntity);\n // Remove listener\n TRIGGER_EVENTS.forEach(eventName => {\n const handler = observerEntity.eventHandlers[eventName];\n if (handler && handler.remove) {\n handler.remove();\n }\n });\n }\n}", "import { computed, inject, provide } from 'vue';\nimport { objectType } from '../_util/type';\nexport const defaultIconPrefixCls = 'anticon';\nexport const GlobalFormContextKey = Symbol('GlobalFormContextKey');\nexport const useProvideGlobalForm = state => {\n provide(GlobalFormContextKey, state);\n};\nexport const useInjectGlobalForm = () => {\n return inject(GlobalFormContextKey, {\n validateMessages: computed(() => undefined)\n });\n};\nexport const GlobalConfigContextKey = Symbol('GlobalConfigContextKey');\nexport const configProviderProps = () => ({\n iconPrefixCls: String,\n getTargetContainer: {\n type: Function\n },\n getPopupContainer: {\n type: Function\n },\n prefixCls: String,\n getPrefixCls: {\n type: Function\n },\n renderEmpty: {\n type: Function\n },\n transformCellText: {\n type: Function\n },\n csp: objectType(),\n input: objectType(),\n autoInsertSpaceInButton: {\n type: Boolean,\n default: undefined\n },\n locale: objectType(),\n pageHeader: objectType(),\n componentSize: {\n type: String\n },\n componentDisabled: {\n type: Boolean,\n default: undefined\n },\n direction: {\n type: String,\n default: 'ltr'\n },\n space: objectType(),\n virtual: {\n type: Boolean,\n default: undefined\n },\n dropdownMatchSelectWidth: {\n type: [Number, Boolean],\n default: true\n },\n form: objectType(),\n pagination: objectType(),\n theme: objectType(),\n select: objectType(),\n wave: objectType()\n});\nexport const configProviderKey = Symbol('configProvider');\nexport const defaultConfigProvider = {\n getPrefixCls: (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? `ant-${suffixCls}` : 'ant';\n },\n iconPrefixCls: computed(() => defaultIconPrefixCls),\n getPopupContainer: computed(() => () => document.body),\n direction: computed(() => 'ltr')\n};\nexport const useConfigContextInject = () => {\n return inject(configProviderKey, defaultConfigProvider);\n};\nexport const useConfigContextProvider = props => {\n return provide(configProviderKey, props);\n};", "import { computed, inject, ref, provide } from 'vue';\nconst DisabledContextKey = Symbol('DisabledContextKey');\nexport const useInjectDisabled = () => {\n return inject(DisabledContextKey, ref(undefined));\n};\nexport const useProviderDisabled = disabled => {\n const parentDisabled = useInjectDisabled();\n provide(DisabledContextKey, computed(() => {\n var _a;\n return (_a = disabled.value) !== null && _a !== void 0 ? _a : parentDisabled.value;\n }));\n return disabled;\n};", "export default {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: '',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages'\n};", "const locale = {\n locale: 'en_US',\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'Ok',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};\nexport default locale;", "const locale = {\n placeholder: 'Select time',\n rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from '../../vc-picker/locale/en_US';\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nconst locale = {\n lang: _extends({\n placeholder: 'Select date',\n yearPlaceholder: 'Select year',\n quarterPlaceholder: 'Select quarter',\n monthPlaceholder: 'Select month',\n weekPlaceholder: 'Select week',\n rangePlaceholder: ['Start date', 'End date'],\n rangeYearPlaceholder: ['Start year', 'End year'],\n rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n rangeMonthPlaceholder: ['Start month', 'End month'],\n rangeWeekPlaceholder: ['Start week', 'End week']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;", "import enUS from '../../date-picker/locale/en_US';\nexport default enUS;", "/* eslint-disable no-template-curly-in-string */\nimport Pagination from '../vc-pagination/locale/en_US';\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nconst typeTemplate = '${label} is not a valid ${type}';\nconst localeValues = {\n locale: 'en',\n Pagination,\n DatePicker,\n TimePicker,\n Calendar,\n global: {\n placeholder: 'Please select'\n },\n Table: {\n filterTitle: 'Filter menu',\n filterConfirm: 'OK',\n filterReset: 'Reset',\n filterEmptyText: 'No filters',\n filterCheckall: 'Select all items',\n filterSearchPlaceholder: 'Search in filters',\n emptyText: 'No data',\n selectAll: 'Select current page',\n selectInvert: 'Invert current page',\n selectNone: 'Clear all data',\n selectionAll: 'Select all data',\n sortTitle: 'Sort',\n expand: 'Expand row',\n collapse: 'Collapse row',\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting'\n },\n Tour: {\n Next: 'Next',\n Previous: 'Previous',\n Finish: 'Finish'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Cancel',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Cancel'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Search here',\n itemUnit: 'item',\n itemsUnit: 'items',\n remove: 'Remove',\n selectCurrent: 'Select current page',\n removeCurrent: 'Remove current page',\n selectAll: 'Select all data',\n removeAll: 'Remove all data',\n selectInvert: 'Invert current page'\n },\n Upload: {\n uploading: 'Uploading...',\n removeFile: 'Remove file',\n uploadError: 'Upload error',\n previewFile: 'Preview file',\n downloadFile: 'Download file'\n },\n Empty: {\n description: 'No data'\n },\n Icon: {\n icon: 'icon'\n },\n Text: {\n edit: 'Edit',\n copy: 'Copy',\n copied: 'Copied',\n expand: 'Expand'\n },\n PageHeader: {\n back: 'Back'\n },\n Form: {\n optional: '(optional)',\n defaultValidateMessages: {\n default: 'Field validation error for ${label}',\n required: 'Please enter ${label}',\n enum: '${label} must be one of [${enum}]',\n whitespace: '${label} cannot be a blank character',\n date: {\n format: '${label} date format is invalid',\n parse: '${label} cannot be converted to a date',\n invalid: '${label} is an invalid date'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} must be ${len} characters',\n min: '${label} must be at least ${min} characters',\n max: '${label} must be up to ${max} characters',\n range: '${label} must be between ${min}-${max} characters'\n },\n number: {\n len: '${label} must be equal to ${len}',\n min: '${label} must be minimum ${min}',\n max: '${label} must be maximum ${max}',\n range: '${label} must be between ${min}-${max}'\n },\n array: {\n len: 'Must be ${len} ${label}',\n min: 'At least ${min} ${label}',\n max: 'At most ${max} ${label}',\n range: 'The amount of ${label} must be between ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} does not match the pattern ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Preview'\n },\n QRCode: {\n expired: 'QR code expired',\n refresh: 'Refresh',\n scanned: 'Scanned'\n }\n};\nexport default localeValues;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unref, inject, defineComponent, computed } from 'vue';\nimport defaultLocaleData from './en_US';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'LocaleReceiver',\n props: {\n componentName: String,\n defaultLocale: {\n type: [Object, Function]\n },\n children: {\n type: Function\n }\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const localeData = inject('localeData', {});\n const locale = computed(() => {\n const {\n componentName = 'global',\n defaultLocale\n } = props;\n const locale = defaultLocale || defaultLocaleData[componentName || 'global'];\n const {\n antLocale\n } = localeData;\n const localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n return _extends(_extends({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n });\n const localeCode = computed(() => {\n const {\n antLocale\n } = localeData;\n const localeCode = antLocale && antLocale.locale;\n // Had use LocaleProvide but didn't set locale\n if (antLocale && antLocale.exist && !localeCode) {\n return defaultLocaleData.locale;\n }\n return localeCode;\n });\n return () => {\n const children = props.children || slots.default;\n const {\n antLocale\n } = localeData;\n return children === null || children === void 0 ? void 0 : children(locale.value, localeCode.value, antLocale);\n };\n }\n});\nexport function useLocaleReceiver(componentName, defaultLocale, propsLocale) {\n const localeData = inject('localeData', {});\n const componentLocale = computed(() => {\n const {\n antLocale\n } = localeData;\n const locale = unref(defaultLocale) || defaultLocaleData[componentName || 'global'];\n const localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n return _extends(_extends(_extends({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {}), unref(propsLocale) || {});\n });\n return [componentLocale];\n}", "import LocaleReceiver from '../locale/LocaleReceiver';\nexport * from '../locale/LocaleReceiver';\nexport default LocaleReceiver;", "/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n", "const SPLIT = '%';\nclass Entity {\n constructor(instanceId) {\n /** @private Internal cache map. Do not access this directly */\n this.cache = new Map();\n this.instanceId = instanceId;\n }\n get(keys) {\n return this.cache.get(Array.isArray(keys) ? keys.join(SPLIT) : keys) || null;\n }\n update(keys, valueFn) {\n const path = Array.isArray(keys) ? keys.join(SPLIT) : keys;\n const prevValue = this.cache.get(path);\n const nextValue = valueFn(prevValue);\n if (nextValue === null) {\n this.cache.delete(path);\n } else {\n this.cache.set(path, nextValue);\n }\n }\n}\nexport default Entity;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { provide, defineComponent, unref, inject, watch, shallowRef, getCurrentInstance } from 'vue';\nimport CacheEntity from './Cache';\nimport { arrayType, booleanType, objectType, someType, stringType, withInstall } from '../type';\nexport const ATTR_TOKEN = 'data-token-hash';\nexport const ATTR_MARK = 'data-css-hash';\nexport const ATTR_CACHE_PATH = 'data-cache-path';\n// Mark css-in-js instance in style element\nexport const CSS_IN_JS_INSTANCE = '__cssinjs_instance__';\nexport function createCache() {\n const cssinjsInstanceId = Math.random().toString(12).slice(2);\n // Tricky SSR: Move all inline style to the head.\n // PS: We do not recommend tricky mode.\n if (typeof document !== 'undefined' && document.head && document.body) {\n const styles = document.body.querySelectorAll(`style[${ATTR_MARK}]`) || [];\n const {\n firstChild\n } = document.head;\n Array.from(styles).forEach(style => {\n style[CSS_IN_JS_INSTANCE] = style[CSS_IN_JS_INSTANCE] || cssinjsInstanceId;\n // Not force move if no head\n // Not force move if no head\n if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n document.head.insertBefore(style, firstChild);\n }\n });\n // Deduplicate of moved styles\n const styleHash = {};\n Array.from(document.querySelectorAll(`style[${ATTR_MARK}]`)).forEach(style => {\n var _a;\n const hash = style.getAttribute(ATTR_MARK);\n if (styleHash[hash]) {\n if (style[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) {\n (_a = style.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(style);\n }\n } else {\n styleHash[hash] = true;\n }\n });\n }\n return new CacheEntity(cssinjsInstanceId);\n}\nconst StyleContextKey = Symbol('StyleContextKey');\n// fix: https://github.com/vueComponent/ant-design-vue/issues/7023\nconst getCache = () => {\n var _a, _b, _c;\n const instance = getCurrentInstance();\n let cache;\n if (instance && instance.appContext) {\n const globalCache = (_c = (_b = (_a = instance.appContext) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.globalProperties) === null || _c === void 0 ? void 0 : _c.__ANTDV_CSSINJS_CACHE__;\n if (globalCache) {\n cache = globalCache;\n } else {\n cache = createCache();\n if (instance.appContext.config.globalProperties) {\n instance.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__ = cache;\n }\n }\n } else {\n cache = createCache();\n }\n return cache;\n};\nconst defaultStyleContext = {\n cache: createCache(),\n defaultCache: true,\n hashPriority: 'low'\n};\n// fix: https://github.com/vueComponent/ant-design-vue/issues/6912\nexport const useStyleInject = () => {\n const cache = getCache();\n return inject(StyleContextKey, shallowRef(_extends(_extends({}, defaultStyleContext), {\n cache\n })));\n};\nexport const useStyleProvider = props => {\n const parentContext = useStyleInject();\n const context = shallowRef(_extends(_extends({}, defaultStyleContext), {\n cache: createCache()\n }));\n watch([() => unref(props), parentContext], () => {\n const mergedContext = _extends({}, parentContext.value);\n const propsValue = unref(props);\n Object.keys(propsValue).forEach(key => {\n const value = propsValue[key];\n if (propsValue[key] !== undefined) {\n mergedContext[key] = value;\n }\n });\n const {\n cache\n } = propsValue;\n mergedContext.cache = mergedContext.cache || createCache();\n mergedContext.defaultCache = !cache && parentContext.value.defaultCache;\n context.value = mergedContext;\n }, {\n immediate: true\n });\n provide(StyleContextKey, context);\n return context;\n};\nexport const styleProviderProps = () => ({\n autoClear: booleanType(),\n /** @private Test only. Not work in production. */\n mock: stringType(),\n /**\n * Only set when you need ssr to extract style on you own.\n * If not provided, it will auto create `;\n }\n const orderStyles = styleKeys.map(key => {\n const cachePath = key.slice(matchPrefix.length).replace(/%/g, '|');\n const [styleStr, tokenKey, styleId, effectStyle, clientOnly, order] = cache.cache.get(key)[1];\n // Skip client only style\n if (clientOnly) {\n return null;\n }\n // ====================== Style ======================\n // Used for vc-util\n const sharedAttrs = {\n 'data-vc-order': 'prependQueue',\n 'data-vc-priority': `${order}`\n };\n let keyStyleText = toStyleStr(styleStr, tokenKey, styleId, sharedAttrs);\n // Save cache path with hash mapping\n cachePathMap[cachePath] = styleId;\n // =============== Create effect style ===============\n if (effectStyle) {\n Object.keys(effectStyle).forEach(effectKey => {\n // Effect style can be reused\n if (!effectStyles[effectKey]) {\n effectStyles[effectKey] = true;\n keyStyleText += toStyleStr(normalizeStyle(effectStyle[effectKey]), tokenKey, `_effect-${effectKey}`, sharedAttrs);\n }\n });\n }\n const ret = [order, keyStyleText];\n return ret;\n }).filter(o => o);\n orderStyles.sort((o1, o2) => o1[0] - o2[0]).forEach(_ref2 => {\n let [, style] = _ref2;\n styleText += style;\n });\n // ==================== Fill Cache Path ====================\n styleText += toStyleStr(`.${ATTR_CACHE_MAP}{content:\"${serializeCacheMap(cachePathMap)}\";}`, undefined, undefined, {\n [ATTR_CACHE_MAP]: ATTR_CACHE_MAP\n });\n return styleText;\n}", "class Keyframe {\n constructor(name, style) {\n this._keyframe = true;\n this.name = name;\n this.style = style;\n }\n getName() {\n let hashId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return hashId ? `${hashId}-${this.name}` : this.name;\n }\n}\nexport default Keyframe;", "function splitValues(value) {\n if (typeof value === 'number') {\n return [value];\n }\n const splitStyle = String(value).split(/\\s+/);\n // Combine styles split in brackets, like `calc(1px + 2px)`\n let temp = '';\n let brackets = 0;\n return splitStyle.reduce((list, item) => {\n if (item.includes('(')) {\n temp += item;\n brackets += item.split('(').length - 1;\n } else if (item.includes(')')) {\n temp += ` ${item}`;\n brackets -= item.split(')').length - 1;\n if (brackets === 0) {\n list.push(temp);\n temp = '';\n }\n } else if (brackets > 0) {\n temp += ` ${item}`;\n } else {\n list.push(item);\n }\n return list;\n }, []);\n}\nfunction noSplit(list) {\n list.notSplit = true;\n return list;\n}\nconst keyMap = {\n // Inset\n inset: ['top', 'right', 'bottom', 'left'],\n insetBlock: ['top', 'bottom'],\n insetBlockStart: ['top'],\n insetBlockEnd: ['bottom'],\n insetInline: ['left', 'right'],\n insetInlineStart: ['left'],\n insetInlineEnd: ['right'],\n // Margin\n marginBlock: ['marginTop', 'marginBottom'],\n marginBlockStart: ['marginTop'],\n marginBlockEnd: ['marginBottom'],\n marginInline: ['marginLeft', 'marginRight'],\n marginInlineStart: ['marginLeft'],\n marginInlineEnd: ['marginRight'],\n // Padding\n paddingBlock: ['paddingTop', 'paddingBottom'],\n paddingBlockStart: ['paddingTop'],\n paddingBlockEnd: ['paddingBottom'],\n paddingInline: ['paddingLeft', 'paddingRight'],\n paddingInlineStart: ['paddingLeft'],\n paddingInlineEnd: ['paddingRight'],\n // Border\n borderBlock: noSplit(['borderTop', 'borderBottom']),\n borderBlockStart: noSplit(['borderTop']),\n borderBlockEnd: noSplit(['borderBottom']),\n borderInline: noSplit(['borderLeft', 'borderRight']),\n borderInlineStart: noSplit(['borderLeft']),\n borderInlineEnd: noSplit(['borderRight']),\n // Border width\n borderBlockWidth: ['borderTopWidth', 'borderBottomWidth'],\n borderBlockStartWidth: ['borderTopWidth'],\n borderBlockEndWidth: ['borderBottomWidth'],\n borderInlineWidth: ['borderLeftWidth', 'borderRightWidth'],\n borderInlineStartWidth: ['borderLeftWidth'],\n borderInlineEndWidth: ['borderRightWidth'],\n // Border style\n borderBlockStyle: ['borderTopStyle', 'borderBottomStyle'],\n borderBlockStartStyle: ['borderTopStyle'],\n borderBlockEndStyle: ['borderBottomStyle'],\n borderInlineStyle: ['borderLeftStyle', 'borderRightStyle'],\n borderInlineStartStyle: ['borderLeftStyle'],\n borderInlineEndStyle: ['borderRightStyle'],\n // Border color\n borderBlockColor: ['borderTopColor', 'borderBottomColor'],\n borderBlockStartColor: ['borderTopColor'],\n borderBlockEndColor: ['borderBottomColor'],\n borderInlineColor: ['borderLeftColor', 'borderRightColor'],\n borderInlineStartColor: ['borderLeftColor'],\n borderInlineEndColor: ['borderRightColor'],\n // Border radius\n borderStartStartRadius: ['borderTopLeftRadius'],\n borderStartEndRadius: ['borderTopRightRadius'],\n borderEndStartRadius: ['borderBottomLeftRadius'],\n borderEndEndRadius: ['borderBottomRightRadius']\n};\nfunction skipCheck(value) {\n return {\n _skip_check_: true,\n value\n };\n}\n/**\n * Convert css logical properties to legacy properties.\n * Such as: `margin-block-start` to `margin-top`.\n * Transform list:\n * - inset\n * - margin\n * - padding\n * - border\n */\nconst transform = {\n visit: cssObj => {\n const clone = {};\n Object.keys(cssObj).forEach(key => {\n const value = cssObj[key];\n const matchValue = keyMap[key];\n if (matchValue && (typeof value === 'number' || typeof value === 'string')) {\n const values = splitValues(value);\n if (matchValue.length && matchValue.notSplit) {\n // not split means always give same value like border\n matchValue.forEach(matchKey => {\n clone[matchKey] = skipCheck(value);\n });\n } else if (matchValue.length === 1) {\n // Handle like `marginBlockStart` => `marginTop`\n clone[matchValue[0]] = skipCheck(value);\n } else if (matchValue.length === 2) {\n // Handle like `marginBlock` => `marginTop` & `marginBottom`\n matchValue.forEach((matchKey, index) => {\n var _a;\n clone[matchKey] = skipCheck((_a = values[index]) !== null && _a !== void 0 ? _a : values[0]);\n });\n } else if (matchValue.length === 4) {\n // Handle like `inset` => `top` & `right` & `bottom` & `left`\n matchValue.forEach((matchKey, index) => {\n var _a, _b;\n clone[matchKey] = skipCheck((_b = (_a = values[index]) !== null && _a !== void 0 ? _a : values[index - 2]) !== null && _b !== void 0 ? _b : values[0]);\n });\n } else {\n clone[key] = value;\n }\n } else {\n clone[key] = value;\n }\n });\n return clone;\n }\n};\nexport default transform;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * respect https://github.com/cuth/postcss-pxtorem\n */\nimport unitless from '@emotion/unitless';\nconst pxRegex = /url\\([^)]+\\)|var\\([^)]+\\)|(\\d*\\.?\\d+)px/g;\nfunction toFixed(number, precision) {\n const multiplier = Math.pow(10, precision + 1),\n wholeNumber = Math.floor(number * multiplier);\n return Math.round(wholeNumber / 10) * 10 / multiplier;\n}\nconst transform = function () {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n rootValue = 16,\n precision = 5,\n mediaQuery = false\n } = options;\n const pxReplace = (m, $1) => {\n if (!$1) return m;\n const pixels = parseFloat($1);\n // covenant: pixels <= 1, not transform to rem @zombieJ\n if (pixels <= 1) return m;\n const fixedVal = toFixed(pixels / rootValue, precision);\n return `${fixedVal}rem`;\n };\n const visit = cssObj => {\n const clone = _extends({}, cssObj);\n Object.entries(cssObj).forEach(_ref => {\n let [key, value] = _ref;\n if (typeof value === 'string' && value.includes('px')) {\n const newValue = value.replace(pxRegex, pxReplace);\n clone[key] = newValue;\n }\n // no unit\n if (!unitless[key] && typeof value === 'number' && value !== 0) {\n clone[key] = `${value}px`.replace(pxRegex, pxReplace);\n }\n // Media queries\n const mergedKey = key.trim();\n if (mergedKey.startsWith('@') && mergedKey.includes('px') && mediaQuery) {\n const newKey = key.replace(pxRegex, pxReplace);\n clone[newKey] = clone[key];\n delete clone[key];\n }\n });\n return clone;\n };\n return {\n visit\n };\n};\nexport default transform;", "import useCacheToken from './hooks/useCacheToken';\nimport useStyleRegister, { extractStyle } from './hooks/useStyleRegister';\nimport Keyframes from './Keyframes';\nimport { legacyNotSelectorLinter, logicalPropertiesLinter, parentSelectorLinter } from './linters';\nimport { createCache, useStyleInject, useStyleProvider, StyleProvider } from './StyleContext';\nimport { createTheme, Theme } from './theme';\nimport legacyLogicalPropertiesTransformer from './transformers/legacyLogicalProperties';\nimport px2remTransformer from './transformers/px2rem';\nimport { supportLogicProps, supportWhere } from './util';\nconst cssinjs = {\n Theme,\n createTheme,\n useStyleRegister,\n useCacheToken,\n createCache,\n useStyleInject,\n useStyleProvider,\n Keyframes,\n extractStyle,\n // Transformer\n legacyLogicalPropertiesTransformer,\n px2remTransformer,\n // Linters\n logicalPropertiesLinter,\n legacyNotSelectorLinter,\n parentSelectorLinter,\n // cssinjs\n StyleProvider\n};\nexport { Theme, createTheme, useStyleRegister, useCacheToken, createCache, useStyleInject, useStyleProvider, Keyframes, extractStyle,\n// Transformer\nlegacyLogicalPropertiesTransformer, px2remTransformer,\n// Linters\nlogicalPropertiesLinter, legacyNotSelectorLinter, parentSelectorLinter,\n// cssinjs\nStyleProvider };\nexport const _experimental = {\n supportModernCSS: () => supportWhere() && supportLogicProps()\n};\nexport default cssinjs;", "export default '4.1.2';", "/* eslint import/no-unresolved: 0 */\n// @ts-ignore\nimport version from './version';\nexport default version;", "export const PresetColors = ['blue', 'purple', 'cyan', 'green', 'magenta', 'pink', 'red', 'orange', 'yellow', 'volcano', 'geekblue', 'lime', 'gold'];", "const genControlHeight = token => {\n const {\n controlHeight\n } = token;\n return {\n controlHeightSM: controlHeight * 0.75,\n controlHeightXS: controlHeight * 0.5,\n controlHeightLG: controlHeight * 1.25\n };\n};\nexport default genControlHeight;", "export default function genSizeMapToken(token) {\n const {\n sizeUnit,\n sizeStep\n } = token;\n return {\n sizeXXL: sizeUnit * (sizeStep + 8),\n sizeXL: sizeUnit * (sizeStep + 4),\n sizeLG: sizeUnit * (sizeStep + 2),\n sizeMD: sizeUnit * (sizeStep + 1),\n sizeMS: sizeUnit * sizeStep,\n size: sizeUnit * sizeStep,\n sizeSM: sizeUnit * (sizeStep - 1),\n sizeXS: sizeUnit * (sizeStep - 2),\n sizeXXS: sizeUnit * (sizeStep - 3) // 4\n };\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const defaultPresetColors = {\n blue: '#1677ff',\n purple: '#722ED1',\n cyan: '#13C2C2',\n green: '#52C41A',\n magenta: '#EB2F96',\n pink: '#eb2f96',\n red: '#F5222D',\n orange: '#FA8C16',\n yellow: '#FADB14',\n volcano: '#FA541C',\n geekblue: '#2F54EB',\n gold: '#FAAD14',\n lime: '#A0D911'\n};\nconst seedToken = _extends(_extends({}, defaultPresetColors), {\n // Color\n colorPrimary: '#1677ff',\n colorSuccess: '#52c41a',\n colorWarning: '#faad14',\n colorError: '#ff4d4f',\n colorInfo: '#1677ff',\n colorTextBase: '',\n colorBgBase: '',\n // Font\n fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n'Noto Color Emoji'`,\n fontSize: 14,\n // Line\n lineWidth: 1,\n lineType: 'solid',\n // Motion\n motionUnit: 0.1,\n motionBase: 0,\n motionEaseOutCirc: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n motionEaseInOutCirc: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n motionEaseOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n motionEaseInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',\n motionEaseOutBack: 'cubic-bezier(0.12, 0.4, 0.29, 1.46)',\n motionEaseInBack: 'cubic-bezier(0.71, -0.46, 0.88, 0.6)',\n motionEaseInQuint: 'cubic-bezier(0.755, 0.05, 0.855, 0.06)',\n motionEaseOutQuint: 'cubic-bezier(0.23, 1, 0.32, 1)',\n // Radius\n borderRadius: 6,\n // Size\n sizeUnit: 4,\n sizeStep: 4,\n sizePopupArrow: 16,\n // Control Base\n controlHeight: 32,\n // zIndex\n zIndexBase: 0,\n zIndexPopupBase: 1000,\n // Image\n opacityImage: 1,\n // Wireframe\n wireframe: false\n});\nexport default seedToken;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { TinyColor } from '@ctrl/tinycolor';\nexport default function genColorMapToken(seed, _ref) {\n let {\n generateColorPalettes,\n generateNeutralColorPalettes\n } = _ref;\n const {\n colorSuccess: colorSuccessBase,\n colorWarning: colorWarningBase,\n colorError: colorErrorBase,\n colorInfo: colorInfoBase,\n colorPrimary: colorPrimaryBase,\n colorBgBase,\n colorTextBase\n } = seed;\n const primaryColors = generateColorPalettes(colorPrimaryBase);\n const successColors = generateColorPalettes(colorSuccessBase);\n const warningColors = generateColorPalettes(colorWarningBase);\n const errorColors = generateColorPalettes(colorErrorBase);\n const infoColors = generateColorPalettes(colorInfoBase);\n const neutralColors = generateNeutralColorPalettes(colorBgBase, colorTextBase);\n return _extends(_extends({}, neutralColors), {\n colorPrimaryBg: primaryColors[1],\n colorPrimaryBgHover: primaryColors[2],\n colorPrimaryBorder: primaryColors[3],\n colorPrimaryBorderHover: primaryColors[4],\n colorPrimaryHover: primaryColors[5],\n colorPrimary: primaryColors[6],\n colorPrimaryActive: primaryColors[7],\n colorPrimaryTextHover: primaryColors[8],\n colorPrimaryText: primaryColors[9],\n colorPrimaryTextActive: primaryColors[10],\n colorSuccessBg: successColors[1],\n colorSuccessBgHover: successColors[2],\n colorSuccessBorder: successColors[3],\n colorSuccessBorderHover: successColors[4],\n colorSuccessHover: successColors[4],\n colorSuccess: successColors[6],\n colorSuccessActive: successColors[7],\n colorSuccessTextHover: successColors[8],\n colorSuccessText: successColors[9],\n colorSuccessTextActive: successColors[10],\n colorErrorBg: errorColors[1],\n colorErrorBgHover: errorColors[2],\n colorErrorBorder: errorColors[3],\n colorErrorBorderHover: errorColors[4],\n colorErrorHover: errorColors[5],\n colorError: errorColors[6],\n colorErrorActive: errorColors[7],\n colorErrorTextHover: errorColors[8],\n colorErrorText: errorColors[9],\n colorErrorTextActive: errorColors[10],\n colorWarningBg: warningColors[1],\n colorWarningBgHover: warningColors[2],\n colorWarningBorder: warningColors[3],\n colorWarningBorderHover: warningColors[4],\n colorWarningHover: warningColors[4],\n colorWarning: warningColors[6],\n colorWarningActive: warningColors[7],\n colorWarningTextHover: warningColors[8],\n colorWarningText: warningColors[9],\n colorWarningTextActive: warningColors[10],\n colorInfoBg: infoColors[1],\n colorInfoBgHover: infoColors[2],\n colorInfoBorder: infoColors[3],\n colorInfoBorderHover: infoColors[4],\n colorInfoHover: infoColors[4],\n colorInfo: infoColors[6],\n colorInfoActive: infoColors[7],\n colorInfoTextHover: infoColors[8],\n colorInfoText: infoColors[9],\n colorInfoTextActive: infoColors[10],\n colorBgMask: new TinyColor('#000').setAlpha(0.45).toRgbString(),\n colorWhite: '#fff'\n });\n}", "const genRadius = radiusBase => {\n let radiusLG = radiusBase;\n let radiusSM = radiusBase;\n let radiusXS = radiusBase;\n let radiusOuter = radiusBase;\n // radiusLG\n if (radiusBase < 6 && radiusBase >= 5) {\n radiusLG = radiusBase + 1;\n } else if (radiusBase < 16 && radiusBase >= 6) {\n radiusLG = radiusBase + 2;\n } else if (radiusBase >= 16) {\n radiusLG = 16;\n }\n // radiusSM\n if (radiusBase < 7 && radiusBase >= 5) {\n radiusSM = 4;\n } else if (radiusBase < 8 && radiusBase >= 7) {\n radiusSM = 5;\n } else if (radiusBase < 14 && radiusBase >= 8) {\n radiusSM = 6;\n } else if (radiusBase < 16 && radiusBase >= 14) {\n radiusSM = 7;\n } else if (radiusBase >= 16) {\n radiusSM = 8;\n }\n // radiusXS\n if (radiusBase < 6 && radiusBase >= 2) {\n radiusXS = 1;\n } else if (radiusBase >= 6) {\n radiusXS = 2;\n }\n // radiusOuter\n if (radiusBase > 4 && radiusBase < 8) {\n radiusOuter = 4;\n } else if (radiusBase >= 8) {\n radiusOuter = 6;\n }\n return {\n borderRadius: radiusBase > 16 ? 16 : radiusBase,\n borderRadiusXS: radiusXS,\n borderRadiusSM: radiusSM,\n borderRadiusLG: radiusLG,\n borderRadiusOuter: radiusOuter\n };\n};\nexport default genRadius;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport genRadius from './genRadius';\nexport default function genCommonMapToken(token) {\n const {\n motionUnit,\n motionBase,\n borderRadius,\n lineWidth\n } = token;\n return _extends({\n // motion\n motionDurationFast: `${(motionBase + motionUnit).toFixed(1)}s`,\n motionDurationMid: `${(motionBase + motionUnit * 2).toFixed(1)}s`,\n motionDurationSlow: `${(motionBase + motionUnit * 3).toFixed(1)}s`,\n // line\n lineWidthBold: lineWidth + 1\n }, genRadius(borderRadius));\n}", "import { TinyColor } from '@ctrl/tinycolor';\nexport const getAlphaColor = (baseColor, alpha) => new TinyColor(baseColor).setAlpha(alpha).toRgbString();\nexport const getSolidColor = (baseColor, brightness) => {\n const instance = new TinyColor(baseColor);\n return instance.darken(brightness).toHexString();\n};", "import { generate } from '@ant-design/colors';\nimport { getAlphaColor, getSolidColor } from './colorAlgorithm';\nexport const generateColorPalettes = baseColor => {\n const colors = generate(baseColor);\n return {\n 1: colors[0],\n 2: colors[1],\n 3: colors[2],\n 4: colors[3],\n 5: colors[4],\n 6: colors[5],\n 7: colors[6],\n 8: colors[4],\n 9: colors[5],\n 10: colors[6]\n // 8: colors[7],\n // 9: colors[8],\n // 10: colors[9],\n };\n};\nexport const generateNeutralColorPalettes = (bgBaseColor, textBaseColor) => {\n const colorBgBase = bgBaseColor || '#fff';\n const colorTextBase = textBaseColor || '#000';\n return {\n colorBgBase,\n colorTextBase,\n colorText: getAlphaColor(colorTextBase, 0.88),\n colorTextSecondary: getAlphaColor(colorTextBase, 0.65),\n colorTextTertiary: getAlphaColor(colorTextBase, 0.45),\n colorTextQuaternary: getAlphaColor(colorTextBase, 0.25),\n colorFill: getAlphaColor(colorTextBase, 0.15),\n colorFillSecondary: getAlphaColor(colorTextBase, 0.06),\n colorFillTertiary: getAlphaColor(colorTextBase, 0.04),\n colorFillQuaternary: getAlphaColor(colorTextBase, 0.02),\n colorBgLayout: getSolidColor(colorBgBase, 4),\n colorBgContainer: getSolidColor(colorBgBase, 0),\n colorBgElevated: getSolidColor(colorBgBase, 0),\n colorBgSpotlight: getAlphaColor(colorTextBase, 0.85),\n colorBorder: getSolidColor(colorBgBase, 15),\n colorBorderSecondary: getSolidColor(colorBgBase, 6)\n };\n};", "// https://zhuanlan.zhihu.com/p/32746810\nexport default function getFontSizes(base) {\n const fontSizes = new Array(10).fill(null).map((_, index) => {\n const i = index - 1;\n const baseSize = base * Math.pow(2.71828, i / 5);\n const intSize = index > 1 ? Math.floor(baseSize) : Math.ceil(baseSize);\n // Convert to even\n return Math.floor(intSize / 2) * 2;\n });\n fontSizes[1] = base;\n return fontSizes.map(size => {\n const height = size + 8;\n return {\n size,\n lineHeight: height / size\n };\n });\n}", "import genFontSizes from './genFontSizes';\nconst genFontMapToken = fontSize => {\n const fontSizePairs = genFontSizes(fontSize);\n const fontSizes = fontSizePairs.map(pair => pair.size);\n const lineHeights = fontSizePairs.map(pair => pair.lineHeight);\n return {\n fontSizeSM: fontSizes[0],\n fontSize: fontSizes[1],\n fontSizeLG: fontSizes[2],\n fontSizeXL: fontSizes[3],\n fontSizeHeading1: fontSizes[6],\n fontSizeHeading2: fontSizes[5],\n fontSizeHeading3: fontSizes[4],\n fontSizeHeading4: fontSizes[3],\n fontSizeHeading5: fontSizes[2],\n lineHeight: lineHeights[1],\n lineHeightLG: lineHeights[2],\n lineHeightSM: lineHeights[0],\n lineHeightHeading1: lineHeights[6],\n lineHeightHeading2: lineHeights[5],\n lineHeightHeading3: lineHeights[4],\n lineHeightHeading4: lineHeights[3],\n lineHeightHeading5: lineHeights[2]\n };\n};\nexport default genFontMapToken;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { generate } from '@ant-design/colors';\nimport genControlHeight from '../shared/genControlHeight';\nimport genSizeMapToken from '../shared/genSizeMapToken';\nimport { defaultPresetColors } from '../seed';\nimport genColorMapToken from '../shared/genColorMapToken';\nimport genCommonMapToken from '../shared/genCommonMapToken';\nimport { generateColorPalettes, generateNeutralColorPalettes } from './colors';\nimport genFontMapToken from '../shared/genFontMapToken';\nexport default function derivative(token) {\n const colorPalettes = Object.keys(defaultPresetColors).map(colorKey => {\n const colors = generate(token[colorKey]);\n return new Array(10).fill(1).reduce((prev, _, i) => {\n prev[`${colorKey}-${i + 1}`] = colors[i];\n return prev;\n }, {});\n }).reduce((prev, cur) => {\n prev = _extends(_extends({}, prev), cur);\n return prev;\n }, {});\n return _extends(_extends(_extends(_extends(_extends(_extends(_extends({}, token), colorPalettes), genColorMapToken(token, {\n generateColorPalettes,\n generateNeutralColorPalettes\n })), genFontMapToken(token.fontSize)), genSizeMapToken(token)), genControlHeight(token)), genCommonMapToken(token));\n}", "import { TinyColor } from '@ctrl/tinycolor';\nfunction isStableColor(color) {\n return color >= 0 && color <= 255;\n}\nfunction getAlphaColor(frontColor, backgroundColor) {\n const {\n r: fR,\n g: fG,\n b: fB,\n a: originAlpha\n } = new TinyColor(frontColor).toRgb();\n if (originAlpha < 1) {\n return frontColor;\n }\n const {\n r: bR,\n g: bG,\n b: bB\n } = new TinyColor(backgroundColor).toRgb();\n for (let fA = 0.01; fA <= 1; fA += 0.01) {\n const r = Math.round((fR - bR * (1 - fA)) / fA);\n const g = Math.round((fG - bG * (1 - fA)) / fA);\n const b = Math.round((fB - bB * (1 - fA)) / fA);\n if (isStableColor(r) && isStableColor(g) && isStableColor(b)) {\n return new TinyColor({\n r,\n g,\n b,\n a: Math.round(fA * 100) / 100\n }).toRgbString();\n }\n }\n // fallback\n /* istanbul ignore next */\n return new TinyColor({\n r: fR,\n g: fG,\n b: fB,\n a: 1\n }).toRgbString();\n}\nexport default getAlphaColor;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { TinyColor } from '@ctrl/tinycolor';\nimport getAlphaColor from './getAlphaColor';\nimport seedToken from '../themes/seed';\n/**\n * Seed (designer) > Derivative (designer) > Alias (developer).\n *\n * Merge seed & derivative & override token and generate alias token for developer.\n */\nexport default function formatToken(derivativeToken) {\n const {\n override\n } = derivativeToken,\n restToken = __rest(derivativeToken, [\"override\"]);\n const overrideTokens = _extends({}, override);\n Object.keys(seedToken).forEach(token => {\n delete overrideTokens[token];\n });\n const mergedToken = _extends(_extends({}, restToken), overrideTokens);\n const screenXS = 480;\n const screenSM = 576;\n const screenMD = 768;\n const screenLG = 992;\n const screenXL = 1200;\n const screenXXL = 1600;\n const screenXXXL = 2000;\n // Generate alias token\n const aliasToken = _extends(_extends(_extends({}, mergedToken), {\n colorLink: mergedToken.colorInfoText,\n colorLinkHover: mergedToken.colorInfoHover,\n colorLinkActive: mergedToken.colorInfoActive,\n // ============== Background ============== //\n colorFillContent: mergedToken.colorFillSecondary,\n colorFillContentHover: mergedToken.colorFill,\n colorFillAlter: mergedToken.colorFillQuaternary,\n colorBgContainerDisabled: mergedToken.colorFillTertiary,\n // ============== Split ============== //\n colorBorderBg: mergedToken.colorBgContainer,\n colorSplit: getAlphaColor(mergedToken.colorBorderSecondary, mergedToken.colorBgContainer),\n // ============== Text ============== //\n colorTextPlaceholder: mergedToken.colorTextQuaternary,\n colorTextDisabled: mergedToken.colorTextQuaternary,\n colorTextHeading: mergedToken.colorText,\n colorTextLabel: mergedToken.colorTextSecondary,\n colorTextDescription: mergedToken.colorTextTertiary,\n colorTextLightSolid: mergedToken.colorWhite,\n colorHighlight: mergedToken.colorError,\n colorBgTextHover: mergedToken.colorFillSecondary,\n colorBgTextActive: mergedToken.colorFill,\n colorIcon: mergedToken.colorTextTertiary,\n colorIconHover: mergedToken.colorText,\n colorErrorOutline: getAlphaColor(mergedToken.colorErrorBg, mergedToken.colorBgContainer),\n colorWarningOutline: getAlphaColor(mergedToken.colorWarningBg, mergedToken.colorBgContainer),\n // Font\n fontSizeIcon: mergedToken.fontSizeSM,\n // Control\n lineWidth: mergedToken.lineWidth,\n controlOutlineWidth: mergedToken.lineWidth * 2,\n // Checkbox size and expand icon size\n controlInteractiveSize: mergedToken.controlHeight / 2,\n controlItemBgHover: mergedToken.colorFillTertiary,\n controlItemBgActive: mergedToken.colorPrimaryBg,\n controlItemBgActiveHover: mergedToken.colorPrimaryBgHover,\n controlItemBgActiveDisabled: mergedToken.colorFill,\n controlTmpOutline: mergedToken.colorFillQuaternary,\n controlOutline: getAlphaColor(mergedToken.colorPrimaryBg, mergedToken.colorBgContainer),\n lineType: mergedToken.lineType,\n borderRadius: mergedToken.borderRadius,\n borderRadiusXS: mergedToken.borderRadiusXS,\n borderRadiusSM: mergedToken.borderRadiusSM,\n borderRadiusLG: mergedToken.borderRadiusLG,\n fontWeightStrong: 600,\n opacityLoading: 0.65,\n linkDecoration: 'none',\n linkHoverDecoration: 'none',\n linkFocusDecoration: 'none',\n controlPaddingHorizontal: 12,\n controlPaddingHorizontalSM: 8,\n paddingXXS: mergedToken.sizeXXS,\n paddingXS: mergedToken.sizeXS,\n paddingSM: mergedToken.sizeSM,\n padding: mergedToken.size,\n paddingMD: mergedToken.sizeMD,\n paddingLG: mergedToken.sizeLG,\n paddingXL: mergedToken.sizeXL,\n paddingContentHorizontalLG: mergedToken.sizeLG,\n paddingContentVerticalLG: mergedToken.sizeMS,\n paddingContentHorizontal: mergedToken.sizeMS,\n paddingContentVertical: mergedToken.sizeSM,\n paddingContentHorizontalSM: mergedToken.size,\n paddingContentVerticalSM: mergedToken.sizeXS,\n marginXXS: mergedToken.sizeXXS,\n marginXS: mergedToken.sizeXS,\n marginSM: mergedToken.sizeSM,\n margin: mergedToken.size,\n marginMD: mergedToken.sizeMD,\n marginLG: mergedToken.sizeLG,\n marginXL: mergedToken.sizeXL,\n marginXXL: mergedToken.sizeXXL,\n boxShadow: `\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n `,\n boxShadowSecondary: `\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowTertiary: `\n 0 1px 2px 0 rgba(0, 0, 0, 0.03),\n 0 1px 6px -1px rgba(0, 0, 0, 0.02),\n 0 2px 4px 0 rgba(0, 0, 0, 0.02)\n `,\n screenXS,\n screenXSMin: screenXS,\n screenXSMax: screenSM - 1,\n screenSM,\n screenSMMin: screenSM,\n screenSMMax: screenMD - 1,\n screenMD,\n screenMDMin: screenMD,\n screenMDMax: screenLG - 1,\n screenLG,\n screenLGMin: screenLG,\n screenLGMax: screenXL - 1,\n screenXL,\n screenXLMin: screenXL,\n screenXLMax: screenXXL - 1,\n screenXXL,\n screenXXLMin: screenXXL,\n screenXXLMax: screenXXXL - 1,\n screenXXXL,\n screenXXXLMin: screenXXXL,\n // FIXME: component box-shadow, should be removed\n boxShadowPopoverArrow: '3px 3px 7px rgba(0, 0, 0, 0.1)',\n boxShadowCard: `\n 0 1px 2px -2px ${new TinyColor('rgba(0, 0, 0, 0.16)').toRgbString()},\n 0 3px 6px 0 ${new TinyColor('rgba(0, 0, 0, 0.12)').toRgbString()},\n 0 5px 12px 4px ${new TinyColor('rgba(0, 0, 0, 0.09)').toRgbString()}\n `,\n boxShadowDrawerRight: `\n -6px 0 16px 0 rgba(0, 0, 0, 0.08),\n -3px 0 6px -4px rgba(0, 0, 0, 0.12),\n -9px 0 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerLeft: `\n 6px 0 16px 0 rgba(0, 0, 0, 0.08),\n 3px 0 6px -4px rgba(0, 0, 0, 0.12),\n 9px 0 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerUp: `\n 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowDrawerDown: `\n 0 -6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 -3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 -9px 28px 8px rgba(0, 0, 0, 0.05)\n `,\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0, 0, 0, 0.08)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08)'\n }), overrideTokens);\n return aliasToken;\n}", "// eslint-disable-next-line import/prefer-default-export\nexport const operationUnit = token => ({\n // FIXME: This use link but is a operation unit. Seems should be a colorPrimary.\n // And Typography use this to generate link style which should not do this.\n color: token.colorLink,\n textDecoration: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: `color ${token.motionDurationSlow}`,\n '&:focus, &:hover': {\n color: token.colorLinkHover\n },\n '&:active': {\n color: token.colorLinkActive\n }\n});", "export const roundedArrow = (width, innerRadius, outerRadius, bgColor, boxShadow) => {\n const unitWidth = width / 2;\n const ax = 0;\n const ay = unitWidth;\n const bx = outerRadius * 1 / Math.sqrt(2);\n const by = unitWidth - outerRadius * (1 - 1 / Math.sqrt(2));\n const cx = unitWidth - innerRadius * (1 / Math.sqrt(2));\n const cy = outerRadius * (Math.sqrt(2) - 1) + innerRadius * (1 / Math.sqrt(2));\n const dx = 2 * unitWidth - cx;\n const dy = cy;\n const ex = 2 * unitWidth - bx;\n const ey = by;\n const fx = 2 * unitWidth - ax;\n const fy = ay;\n const shadowWidth = unitWidth * Math.sqrt(2) + outerRadius * (Math.sqrt(2) - 2);\n const polygonOffset = outerRadius * (Math.sqrt(2) - 1);\n return {\n pointerEvents: 'none',\n width,\n height: width,\n overflow: 'hidden',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n width: shadowWidth,\n height: shadowWidth,\n bottom: 0,\n insetInline: 0,\n margin: 'auto',\n borderRadius: {\n _skip_check_: true,\n value: `0 0 ${innerRadius}px 0`\n },\n transform: 'translateY(50%) rotate(-135deg)',\n boxShadow,\n zIndex: 0,\n background: 'transparent'\n },\n '&::before': {\n position: 'absolute',\n bottom: 0,\n insetInlineStart: 0,\n width,\n height: width / 2,\n background: bgColor,\n clipPath: {\n _multi_value_: true,\n value: [`polygon(${polygonOffset}px 100%, 50% ${polygonOffset}px, ${2 * unitWidth - polygonOffset}px 100%, ${polygonOffset}px 100%)`, `path('M ${ax} ${ay} A ${outerRadius} ${outerRadius} 0 0 0 ${bx} ${by} L ${cx} ${cy} A ${innerRadius} ${innerRadius} 0 0 1 ${dx} ${dy} L ${ex} ${ey} A ${outerRadius} ${outerRadius} 0 0 0 ${fx} ${fy} Z')`]\n },\n content: '\"\"'\n }\n };\n};", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { PresetColors } from '../theme/interface';\nexport function genPresetColor(token, genCss) {\n return PresetColors.reduce((prev, colorKey) => {\n const lightColor = token[`${colorKey}-1`];\n const lightBorderColor = token[`${colorKey}-3`];\n const darkColor = token[`${colorKey}-6`];\n const textColor = token[`${colorKey}-7`];\n return _extends(_extends({}, prev), genCss(colorKey, {\n lightColor,\n lightBorderColor,\n darkColor,\n textColor\n }));\n }, {});\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport { operationUnit } from './operationUnit';\nexport { roundedArrow } from './roundedArrow';\nexport { genPresetColor } from './presetColor';\nexport const textEllipsis = {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n};\nexport const resetComponent = token => ({\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n color: token.colorText,\n fontSize: token.fontSize,\n // font-variant: @font-variant-base;\n lineHeight: token.lineHeight,\n listStyle: 'none',\n // font-feature-settings: @font-feature-settings-base;\n fontFamily: token.fontFamily\n});\nexport const resetIcon = () => ({\n display: 'inline-flex',\n alignItems: 'center',\n color: 'inherit',\n fontStyle: 'normal',\n lineHeight: 0,\n textAlign: 'center',\n textTransform: 'none',\n // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n verticalAlign: '-0.125em',\n textRendering: 'optimizeLegibility',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n '> *': {\n lineHeight: 1\n },\n svg: {\n display: 'inline-block'\n }\n});\nexport const clearFix = () => ({\n // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229\n '&::before': {\n display: 'table',\n content: '\"\"'\n },\n '&::after': {\n // https://github.com/ant-design/ant-design/issues/21864\n display: 'table',\n clear: 'both',\n content: '\"\"'\n }\n});\nexport const genLinkStyle = token => ({\n a: {\n color: token.colorLink,\n textDecoration: token.linkDecoration,\n backgroundColor: 'transparent',\n outline: 'none',\n cursor: 'pointer',\n transition: `color ${token.motionDurationSlow}`,\n '-webkit-text-decoration-skip': 'objects',\n '&:hover': {\n color: token.colorLinkHover\n },\n '&:active': {\n color: token.colorLinkActive\n },\n [`&:active,\n &:hover`]: {\n textDecoration: token.linkHoverDecoration,\n outline: 0\n },\n // https://github.com/ant-design/ant-design/issues/22503\n '&:focus': {\n textDecoration: token.linkFocusDecoration,\n outline: 0\n },\n '&[disabled]': {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }\n }\n});\nexport const genCommonStyle = (token, componentPrefixCls) => {\n const {\n fontFamily,\n fontSize\n } = token;\n const rootPrefixSelector = `[class^=\"${componentPrefixCls}\"], [class*=\" ${componentPrefixCls}\"]`;\n return {\n [rootPrefixSelector]: {\n fontFamily,\n fontSize,\n boxSizing: 'border-box',\n '&::before, &::after': {\n boxSizing: 'border-box'\n },\n [rootPrefixSelector]: {\n boxSizing: 'border-box',\n '&::before, &::after': {\n boxSizing: 'border-box'\n }\n }\n }\n };\n};\nexport const genFocusOutline = token => ({\n outline: `${token.lineWidthBold}px solid ${token.colorPrimaryBorder}`,\n outlineOffset: 1,\n transition: 'outline-offset 0s, outline 0s'\n});\nexport const genFocusStyle = token => ({\n '&:focus-visible': _extends({}, genFocusOutline(token))\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable no-redeclare */\nimport { useStyleRegister } from '../../_util/cssinjs';\nimport { genCommonStyle, genLinkStyle } from '../../style';\nimport { mergeToken, statisticToken, useToken } from '../internal';\nimport { computed } from 'vue';\nimport { useConfigContextInject } from '../../config-provider/context';\nexport default function genComponentStyleHook(component, styleFn, getDefaultToken) {\n return _prefixCls => {\n const prefixCls = computed(() => _prefixCls === null || _prefixCls === void 0 ? void 0 : _prefixCls.value);\n const [theme, token, hashId] = useToken();\n const {\n getPrefixCls,\n iconPrefixCls\n } = useConfigContextInject();\n const rootPrefixCls = computed(() => getPrefixCls());\n const sharedInfo = computed(() => {\n return {\n theme: theme.value,\n token: token.value,\n hashId: hashId.value,\n path: ['Shared', rootPrefixCls.value]\n };\n });\n // Generate style for all a tags in antd component.\n useStyleRegister(sharedInfo, () => [{\n // Link\n '&': genLinkStyle(token.value)\n }]);\n const componentInfo = computed(() => {\n return {\n theme: theme.value,\n token: token.value,\n hashId: hashId.value,\n path: [component, prefixCls.value, iconPrefixCls.value]\n };\n });\n return [useStyleRegister(componentInfo, () => {\n const {\n token: proxyToken,\n flush\n } = statisticToken(token.value);\n const defaultComponentToken = typeof getDefaultToken === 'function' ? getDefaultToken(proxyToken) : getDefaultToken;\n const mergedComponentToken = _extends(_extends({}, defaultComponentToken), token.value[component]);\n const componentCls = `.${prefixCls.value}`;\n const mergedToken = mergeToken(proxyToken, {\n componentCls,\n prefixCls: prefixCls.value,\n iconCls: `.${iconPrefixCls.value}`,\n antCls: `.${rootPrefixCls.value}`\n }, mergedComponentToken);\n const styleInterpolation = styleFn(mergedToken, {\n hashId: hashId.value,\n prefixCls: prefixCls.value,\n rootPrefixCls: rootPrefixCls.value,\n iconPrefixCls: iconPrefixCls.value,\n overrideComponentToken: token.value[component]\n });\n flush(component, mergedComponentToken);\n return [genCommonStyle(token.value, prefixCls.value), styleInterpolation];\n }), hashId];\n };\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst enableStatistic = process.env.NODE_ENV !== 'production' || typeof CSSINJS_STATISTIC !== 'undefined';\nlet recording = true;\n/**\n * This function will do as `Object.assign` in production. But will use Object.defineProperty:get to\n * pass all value access in development. To support statistic field usage with alias token.\n */\nexport function merge() {\n for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {\n objs[_key] = arguments[_key];\n }\n /* istanbul ignore next */\n if (!enableStatistic) {\n return _extends({}, ...objs);\n }\n recording = false;\n const ret = {};\n objs.forEach(obj => {\n const keys = Object.keys(obj);\n keys.forEach(key => {\n Object.defineProperty(ret, key, {\n configurable: true,\n enumerable: true,\n get: () => obj[key]\n });\n });\n });\n recording = true;\n return ret;\n}\n/** @private Internal Usage. Not use in your production. */\nexport const statistic = {};\n/** @private Internal Usage. Not use in your production. */\n// eslint-disable-next-line camelcase\nexport const _statistic_build_ = {};\n/* istanbul ignore next */\nfunction noop() {}\n/** Statistic token usage case. Should use `merge` function if you do not want spread record. */\nexport default function statisticToken(token) {\n let tokenKeys;\n let proxy = token;\n let flush = noop;\n if (enableStatistic) {\n tokenKeys = new Set();\n proxy = new Proxy(token, {\n get(obj, prop) {\n if (recording) {\n tokenKeys.add(prop);\n }\n return obj[prop];\n }\n });\n flush = (componentName, componentToken) => {\n statistic[componentName] = {\n global: Array.from(tokenKeys),\n component: componentToken\n };\n };\n }\n return {\n token: proxy,\n keys: tokenKeys,\n flush\n };\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createTheme, useCacheToken, useStyleRegister } from '../_util/cssinjs';\nimport version from '../version';\nimport { PresetColors } from './interface';\nimport defaultDerivative from './themes/default';\nimport defaultSeedToken from './themes/seed';\nimport formatToken from './util/alias';\nimport genComponentStyleHook from './util/genComponentStyleHook';\nimport statisticToken, { merge as mergeToken, statistic } from './util/statistic';\nimport { objectType } from '../_util/type';\nimport { triggerRef, unref, defineComponent, provide, computed, inject, watch, shallowRef } from 'vue';\nconst defaultTheme = createTheme(defaultDerivative);\nexport {\n// colors\nPresetColors,\n// Statistic\nstatistic, statisticToken, mergeToken,\n// hooks\nuseStyleRegister, genComponentStyleHook };\n// ================================ Context =================================\n// To ensure snapshot stable. We disable hashed in test env.\nexport const defaultConfig = {\n token: defaultSeedToken,\n hashed: true\n};\n//defaultConfig\nconst DesignTokenContextKey = Symbol('DesignTokenContext');\nexport const globalDesignTokenApi = shallowRef();\nexport const useDesignTokenProvider = value => {\n provide(DesignTokenContextKey, value);\n watch(value, () => {\n globalDesignTokenApi.value = unref(value);\n triggerRef(globalDesignTokenApi);\n }, {\n immediate: true,\n deep: true\n });\n};\nexport const useDesignTokenInject = () => {\n return inject(DesignTokenContextKey, computed(() => globalDesignTokenApi.value || defaultConfig));\n};\nexport const DesignTokenProvider = defineComponent({\n props: {\n value: objectType()\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n useDesignTokenProvider(computed(() => props.value));\n return () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n };\n }\n});\n// ================================== Hook ==================================\nexport function useToken() {\n const designTokenContext = inject(DesignTokenContextKey, computed(() => globalDesignTokenApi.value || defaultConfig));\n const salt = computed(() => `${version}-${designTokenContext.value.hashed || ''}`);\n const mergedTheme = computed(() => designTokenContext.value.theme || defaultTheme);\n const cacheToken = useCacheToken(mergedTheme, computed(() => [defaultSeedToken, designTokenContext.value.token]), computed(() => ({\n salt: salt.value,\n override: _extends({\n override: designTokenContext.value.token\n }, designTokenContext.value.components),\n formatToken\n })));\n return [mergedTheme, computed(() => cacheToken.value[0]), computed(() => designTokenContext.value.hashed ? cacheToken.value[1] : '')];\n}", "import { createVNode as _createVNode } from \"vue\";\nimport { useToken } from '../theme/internal';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { defineComponent, computed } from 'vue';\nconst Empty = defineComponent({\n compatConfig: {\n MODE: 3\n },\n setup() {\n const [, token] = useToken();\n const themeStyle = computed(() => {\n const bgColor = new TinyColor(token.value.colorBgBase);\n // Dark Theme need more dark of this\n if (bgColor.toHsl().l < 0.5) {\n return {\n opacity: 0.65\n };\n }\n return {};\n });\n return () => _createVNode(\"svg\", {\n \"style\": themeStyle.value,\n \"width\": \"184\",\n \"height\": \"152\",\n \"viewBox\": \"0 0 184 152\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n }, [_createVNode(\"g\", {\n \"fill\": \"none\",\n \"fill-rule\": \"evenodd\"\n }, [_createVNode(\"g\", {\n \"transform\": \"translate(24 31.67)\"\n }, [_createVNode(\"ellipse\", {\n \"fill-opacity\": \".8\",\n \"fill\": \"#F5F5F7\",\n \"cx\": \"67.797\",\n \"cy\": \"106.89\",\n \"rx\": \"67.797\",\n \"ry\": \"12.668\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n \"fill\": \"#AEB8C2\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n \"fill\": \"url(#linearGradient-1)\",\n \"transform\": \"translate(13.56)\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n \"fill\": \"#F5F5F7\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n \"fill\": \"#DCE0E6\"\n }, null)]), _createVNode(\"path\", {\n \"d\": \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n \"fill\": \"#DCE0E6\"\n }, null), _createVNode(\"g\", {\n \"transform\": \"translate(149.65 15.383)\",\n \"fill\": \"#FFF\"\n }, [_createVNode(\"ellipse\", {\n \"cx\": \"20.654\",\n \"cy\": \"3.167\",\n \"rx\": \"2.849\",\n \"ry\": \"2.815\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }, null)])])]);\n }\n});\nEmpty.PRESENTED_IMAGE_DEFAULT = true;\nexport default Empty;", "import { createVNode as _createVNode } from \"vue\";\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { computed, defineComponent } from 'vue';\nimport { useToken } from '../theme/internal';\nconst Simple = defineComponent({\n compatConfig: {\n MODE: 3\n },\n setup() {\n const [, token] = useToken();\n const color = computed(() => {\n const {\n colorFill,\n colorFillTertiary,\n colorFillQuaternary,\n colorBgContainer\n } = token.value;\n return {\n borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexString(),\n shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexString(),\n contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexString()\n };\n });\n return () => _createVNode(\"svg\", {\n \"width\": \"64\",\n \"height\": \"41\",\n \"viewBox\": \"0 0 64 41\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n }, [_createVNode(\"g\", {\n \"transform\": \"translate(0 1)\",\n \"fill\": \"none\",\n \"fill-rule\": \"evenodd\"\n }, [_createVNode(\"ellipse\", {\n \"fill\": color.value.shadowColor,\n \"cx\": \"32\",\n \"cy\": \"33\",\n \"rx\": \"32\",\n \"ry\": \"7\"\n }, null), _createVNode(\"g\", {\n \"fill-rule\": \"nonzero\",\n \"stroke\": color.value.borderColor\n }, [_createVNode(\"path\", {\n \"d\": \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }, null), _createVNode(\"path\", {\n \"d\": \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n \"fill\": color.value.contentColor\n }, null)])])]);\n }\n});\nSimple.PRESENTED_IMAGE_SIMPLE = true;\nexport default Simple;", "import { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedEmptyStyle = token => {\n const {\n componentCls,\n margin,\n marginXS,\n marginXL,\n fontSize,\n lineHeight\n } = token;\n return {\n [componentCls]: {\n marginInline: marginXS,\n fontSize,\n lineHeight,\n textAlign: 'center',\n // 原来 &-image 没有父子结构,现在为了外层承担我们的hashId,改成父子结果\n [`${componentCls}-image`]: {\n height: token.emptyImgHeight,\n marginBottom: marginXS,\n opacity: token.opacityImage,\n img: {\n height: '100%'\n },\n svg: {\n height: '100%',\n margin: 'auto'\n }\n },\n // 原来 &-footer 没有父子结构,现在为了外层承担我们的hashId,改成父子结果\n [`${componentCls}-footer`]: {\n marginTop: margin\n },\n '&-normal': {\n marginBlock: marginXL,\n color: token.colorTextDisabled,\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightMD\n }\n },\n '&-small': {\n marginBlock: marginXS,\n color: token.colorTextDisabled,\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightSM\n }\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Empty', token => {\n const {\n componentCls,\n controlHeightLG\n } = token;\n const emptyToken = mergeToken(token, {\n emptyImgCls: `${componentCls}-img`,\n emptyImgHeight: controlHeightLG * 2.5,\n emptyImgHeightMD: controlHeightLG,\n emptyImgHeightSM: controlHeightLG * 0.875\n });\n return [genSharedEmptyStyle(emptyToken)];\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport { filterEmpty } from '../_util/props-util';\nimport { anyType, objectType, withInstall } from '../_util/type';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useStyle from './style';\nconst defaultEmptyImg = _createVNode(DefaultEmptyImg, null, null);\nconst simpleEmptyImg = _createVNode(SimpleEmptyImg, null, null);\nexport const emptyProps = () => ({\n prefixCls: String,\n imageStyle: objectType(),\n image: anyType(),\n description: anyType()\n});\nconst Empty = defineComponent({\n name: 'AEmpty',\n compatConfig: {\n MODE: 3\n },\n inheritAttrs: false,\n props: emptyProps(),\n setup(props, _ref) {\n let {\n slots = {},\n attrs\n } = _ref;\n const {\n direction,\n prefixCls: prefixClsRef\n } = useConfigInject('empty', props);\n const [wrapSSR, hashId] = useStyle(prefixClsRef);\n return () => {\n var _a, _b;\n const prefixCls = prefixClsRef.value;\n const _c = _extends(_extends({}, props), attrs),\n {\n image = ((_a = slots.image) === null || _a === void 0 ? void 0 : _a.call(slots)) || defaultEmptyImg,\n description = ((_b = slots.description) === null || _b === void 0 ? void 0 : _b.call(slots)) || undefined,\n imageStyle,\n class: className = ''\n } = _c,\n restProps = __rest(_c, [\"image\", \"description\", \"imageStyle\", \"class\"]);\n return wrapSSR(_createVNode(LocaleReceiver, {\n \"componentName\": \"Empty\",\n \"children\": locale => {\n const des = typeof description !== 'undefined' ? description : locale.description;\n const alt = typeof des === 'string' ? des : 'empty';\n let imageNode = null;\n if (typeof image === 'string') {\n imageNode = _createVNode(\"img\", {\n \"alt\": alt,\n \"src\": image\n }, null);\n } else {\n imageNode = image;\n }\n return _createVNode(\"div\", _objectSpread({\n \"class\": classNames(prefixCls, className, hashId.value, {\n [`${prefixCls}-normal`]: image === simpleEmptyImg,\n [`${prefixCls}-rtl`]: direction.value === 'rtl'\n })\n }, restProps), [_createVNode(\"div\", {\n \"class\": `${prefixCls}-image`,\n \"style\": imageStyle\n }, [imageNode]), des && _createVNode(\"p\", {\n \"class\": `${prefixCls}-description`\n }, [des]), slots.default && _createVNode(\"div\", {\n \"class\": `${prefixCls}-footer`\n }, [filterEmpty(slots.default())])]);\n }\n }, null));\n };\n }\n});\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nexport default withInstall(Empty);", "import { createVNode as _createVNode } from \"vue\";\nimport Empty from '../empty';\nimport useConfigInject from './hooks/useConfigInject';\nexport const DefaultRenderEmpty = props => {\n const {\n prefixCls\n } = useConfigInject('empty', props);\n const renderHtml = componentName => {\n switch (componentName) {\n case 'Table':\n case 'List':\n return _createVNode(Empty, {\n \"image\": Empty.PRESENTED_IMAGE_SIMPLE\n }, null);\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return _createVNode(Empty, {\n \"image\": Empty.PRESENTED_IMAGE_SIMPLE,\n \"class\": `${prefixCls.value}-small`\n }, null);\n default:\n return _createVNode(Empty, null, null);\n }\n };\n return renderHtml(props.componentName);\n};\nfunction renderEmpty(componentName) {\n return _createVNode(DefaultRenderEmpty, {\n \"componentName\": componentName\n }, null);\n}\nexport default renderEmpty;", "import { computed, inject, ref, provide } from 'vue';\nconst SizeContextKey = Symbol('SizeContextKey');\nexport const useInjectSize = () => {\n return inject(SizeContextKey, ref(undefined));\n};\nexport const useProviderSize = size => {\n const parentSize = useInjectSize();\n provide(SizeContextKey, computed(() => size.value || parentSize.value));\n return size;\n};", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { computed, h, inject } from 'vue';\nimport { defaultConfigProvider, configProviderKey } from '../context';\nimport { useInjectDisabled } from '../DisabledContext';\nimport { DefaultRenderEmpty } from '../renderEmpty';\nimport { useInjectSize } from '../SizeContext';\nexport default ((name, props) => {\n const sizeContext = useInjectSize();\n const disabledContext = useInjectDisabled();\n const configProvider = inject(configProviderKey, _extends(_extends({}, defaultConfigProvider), {\n renderEmpty: name => h(DefaultRenderEmpty, {\n componentName: name\n })\n }));\n const prefixCls = computed(() => configProvider.getPrefixCls(name, props.prefixCls));\n const direction = computed(() => {\n var _a, _b;\n return (_a = props.direction) !== null && _a !== void 0 ? _a : (_b = configProvider.direction) === null || _b === void 0 ? void 0 : _b.value;\n });\n const iconPrefixCls = computed(() => {\n var _a;\n return (_a = props.iconPrefixCls) !== null && _a !== void 0 ? _a : configProvider.iconPrefixCls.value;\n });\n const rootPrefixCls = computed(() => configProvider.getPrefixCls());\n const autoInsertSpaceInButton = computed(() => {\n var _a;\n return (_a = configProvider.autoInsertSpaceInButton) === null || _a === void 0 ? void 0 : _a.value;\n });\n const renderEmpty = configProvider.renderEmpty;\n const space = configProvider.space;\n const pageHeader = configProvider.pageHeader;\n const form = configProvider.form;\n const getTargetContainer = computed(() => {\n var _a, _b;\n return (_a = props.getTargetContainer) !== null && _a !== void 0 ? _a : (_b = configProvider.getTargetContainer) === null || _b === void 0 ? void 0 : _b.value;\n });\n const getPopupContainer = computed(() => {\n var _a, _b, _c;\n return (_b = (_a = props.getContainer) !== null && _a !== void 0 ? _a : props.getPopupContainer) !== null && _b !== void 0 ? _b : (_c = configProvider.getPopupContainer) === null || _c === void 0 ? void 0 : _c.value;\n });\n const dropdownMatchSelectWidth = computed(() => {\n var _a, _b;\n return (_a = props.dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : (_b = configProvider.dropdownMatchSelectWidth) === null || _b === void 0 ? void 0 : _b.value;\n });\n const virtual = computed(() => {\n var _a;\n return (props.virtual === undefined ? ((_a = configProvider.virtual) === null || _a === void 0 ? void 0 : _a.value) !== false : props.virtual !== false) && dropdownMatchSelectWidth.value !== false;\n });\n const size = computed(() => props.size || sizeContext.value);\n const autocomplete = computed(() => {\n var _a, _b, _c;\n return (_a = props.autocomplete) !== null && _a !== void 0 ? _a : (_c = (_b = configProvider.input) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.autocomplete;\n });\n const disabled = computed(() => {\n var _a;\n return (_a = props.disabled) !== null && _a !== void 0 ? _a : disabledContext.value;\n });\n const csp = computed(() => {\n var _a;\n return (_a = props.csp) !== null && _a !== void 0 ? _a : configProvider.csp;\n });\n const wave = computed(() => {\n var _a, _b;\n return (_a = props.wave) !== null && _a !== void 0 ? _a : (_b = configProvider.wave) === null || _b === void 0 ? void 0 : _b.value;\n });\n return {\n configProvider,\n prefixCls,\n direction,\n size,\n getTargetContainer,\n getPopupContainer,\n space,\n pageHeader,\n form,\n autoInsertSpaceInButton,\n renderEmpty,\n virtual,\n dropdownMatchSelectWidth,\n rootPrefixCls,\n getPrefixCls: configProvider.getPrefixCls,\n autocomplete,\n csp,\n iconPrefixCls,\n disabled,\n select: configProvider.select,\n wave\n };\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nfunction omit(obj, fields) {\n // eslint-disable-next-line prefer-object-spread\n const shallowCopy = _extends({}, obj);\n for (let i = 0; i < fields.length; i += 1) {\n const key = fields[i];\n delete shallowCopy[key];\n }\n return shallowCopy;\n}\nexport default omit;", "import { genComponentStyleHook, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedAffixStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [componentCls]: {\n position: 'fixed',\n zIndex: token.zIndexPopup\n }\n };\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Affix', token => {\n const affixToken = mergeToken(token, {\n zIndexPopup: token.zIndexBase + 10\n });\n return [genSharedAffixStyle(affixToken)];\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nimport { defineComponent, shallowRef, reactive, watch, onMounted, getCurrentInstance, computed, onUnmounted, onUpdated } from 'vue';\nimport classNames from '../_util/classNames';\nimport ResizeObserver from '../vc-resize-observer';\nimport throttleByAnimationFrame from '../_util/throttleByAnimationFrame';\nimport { withInstall } from '../_util/type';\nimport { addObserveTarget, removeObserveTarget, getTargetRect, getFixedTop, getFixedBottom } from './utils';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport omit from '../_util/omit';\nimport useStyle from './style';\nfunction getDefaultTarget() {\n return typeof window !== 'undefined' ? window : null;\n}\nvar AffixStatus;\n(function (AffixStatus) {\n AffixStatus[AffixStatus[\"None\"] = 0] = \"None\";\n AffixStatus[AffixStatus[\"Prepare\"] = 1] = \"Prepare\";\n})(AffixStatus || (AffixStatus = {}));\n// Affix\nexport const affixProps = () => ({\n /**\n * 距离窗口顶部达到指定偏移量后触发\n */\n offsetTop: Number,\n /** 距离窗口底部达到指定偏移量后触发 */\n offsetBottom: Number,\n /** 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */\n target: {\n type: Function,\n default: getDefaultTarget\n },\n prefixCls: String,\n /** 固定状态改变时触发的回调函数 */\n onChange: Function,\n onTestUpdatePosition: Function\n});\nconst Affix = defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'AAffix',\n inheritAttrs: false,\n props: affixProps(),\n setup(props, _ref) {\n let {\n slots,\n emit,\n expose,\n attrs\n } = _ref;\n const placeholderNode = shallowRef();\n const fixedNode = shallowRef();\n const state = reactive({\n affixStyle: undefined,\n placeholderStyle: undefined,\n status: AffixStatus.None,\n lastAffix: false,\n prevTarget: null,\n timeout: null\n });\n const currentInstance = getCurrentInstance();\n const offsetTop = computed(() => {\n return props.offsetBottom === undefined && props.offsetTop === undefined ? 0 : props.offsetTop;\n });\n const offsetBottom = computed(() => props.offsetBottom);\n const measure = () => {\n const {\n status,\n lastAffix\n } = state;\n const {\n target\n } = props;\n if (status !== AffixStatus.Prepare || !fixedNode.value || !placeholderNode.value || !target) {\n return;\n }\n const targetNode = target();\n if (!targetNode) {\n return;\n }\n const newState = {\n status: AffixStatus.None\n };\n const placeholderRect = getTargetRect(placeholderNode.value);\n if (placeholderRect.top === 0 && placeholderRect.left === 0 && placeholderRect.width === 0 && placeholderRect.height === 0) {\n return;\n }\n const targetRect = getTargetRect(targetNode);\n const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value);\n const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value);\n if (placeholderRect.top === 0 && placeholderRect.left === 0 && placeholderRect.width === 0 && placeholderRect.height === 0) {\n return;\n }\n if (fixedTop !== undefined) {\n const width = `${placeholderRect.width}px`;\n const height = `${placeholderRect.height}px`;\n newState.affixStyle = {\n position: 'fixed',\n top: fixedTop,\n width,\n height\n };\n newState.placeholderStyle = {\n width,\n height\n };\n } else if (fixedBottom !== undefined) {\n const width = `${placeholderRect.width}px`;\n const height = `${placeholderRect.height}px`;\n newState.affixStyle = {\n position: 'fixed',\n bottom: fixedBottom,\n width,\n height\n };\n newState.placeholderStyle = {\n width,\n height\n };\n }\n newState.lastAffix = !!newState.affixStyle;\n if (lastAffix !== newState.lastAffix) {\n emit('change', newState.lastAffix);\n }\n // update state\n _extends(state, newState);\n };\n const prepareMeasure = () => {\n _extends(state, {\n status: AffixStatus.Prepare,\n affixStyle: undefined,\n placeholderStyle: undefined\n });\n // Test if `updatePosition` called\n if (process.env.NODE_ENV === 'test') {\n emit('testUpdatePosition');\n }\n };\n const updatePosition = throttleByAnimationFrame(() => {\n prepareMeasure();\n });\n const lazyUpdatePosition = throttleByAnimationFrame(() => {\n const {\n target\n } = props;\n const {\n affixStyle\n } = state;\n // Check position change before measure to make Safari smooth\n if (target && affixStyle) {\n const targetNode = target();\n if (targetNode && placeholderNode.value) {\n const targetRect = getTargetRect(targetNode);\n const placeholderRect = getTargetRect(placeholderNode.value);\n const fixedTop = getFixedTop(placeholderRect, targetRect, offsetTop.value);\n const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom.value);\n if (fixedTop !== undefined && affixStyle.top === fixedTop || fixedBottom !== undefined && affixStyle.bottom === fixedBottom) {\n return;\n }\n }\n }\n // Directly call prepare measure since it's already throttled.\n prepareMeasure();\n });\n expose({\n updatePosition,\n lazyUpdatePosition\n });\n watch(() => props.target, val => {\n const newTarget = (val === null || val === void 0 ? void 0 : val()) || null;\n if (state.prevTarget !== newTarget) {\n removeObserveTarget(currentInstance);\n if (newTarget) {\n addObserveTarget(newTarget, currentInstance);\n // Mock Event object.\n updatePosition();\n }\n state.prevTarget = newTarget;\n }\n });\n watch(() => [props.offsetTop, props.offsetBottom], updatePosition);\n onMounted(() => {\n const {\n target\n } = props;\n if (target) {\n // [Legacy] Wait for parent component ref has its value.\n // We should use target as directly element instead of function which makes element check hard.\n state.timeout = setTimeout(() => {\n addObserveTarget(target(), currentInstance);\n // Mock Event object.\n updatePosition();\n });\n }\n });\n onUpdated(() => {\n measure();\n });\n onUnmounted(() => {\n clearTimeout(state.timeout);\n removeObserveTarget(currentInstance);\n updatePosition.cancel();\n // https://github.com/ant-design/ant-design/issues/22683\n lazyUpdatePosition.cancel();\n });\n const {\n prefixCls\n } = useConfigInject('affix', props);\n const [wrapSSR, hashId] = useStyle(prefixCls);\n return () => {\n var _a;\n const {\n affixStyle,\n placeholderStyle,\n status\n } = state;\n const className = classNames({\n [prefixCls.value]: affixStyle,\n [hashId.value]: true\n });\n const restProps = omit(props, ['prefixCls', 'offsetTop', 'offsetBottom', 'target', 'onChange', 'onTestUpdatePosition']);\n return wrapSSR(_createVNode(ResizeObserver, {\n \"onResize\": updatePosition\n }, {\n default: () => [_createVNode(\"div\", _objectSpread(_objectSpread(_objectSpread({}, restProps), attrs), {}, {\n \"ref\": placeholderNode,\n \"data-measure-status\": status\n }), [affixStyle && _createVNode(\"div\", {\n \"style\": placeholderStyle,\n \"aria-hidden\": \"true\"\n }, null), _createVNode(\"div\", {\n \"class\": className,\n \"ref\": fixedNode,\n \"style\": affixStyle\n }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])])]\n }));\n };\n }\n});\nexport default withInstall(Affix);", "// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┐ ┏ ━ ━ ━ ┓\n * │ target │ frame\n * └────────┘ ┗ ━ ━ ━ ┛\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──┐\n * ┏━│━━│━┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * ┗━│━━│━┛\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐\n * │┃ ┃│ do nothing\n * └───────────┘\n * ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──┐\n * ┏━│━━│━┓ ┏━┌━━┐━┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * ┗━ ━━ ━┛ ┗━ ━━ ━┛\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━┌━━┐━┓\n * │ │\n * from ┃ ┌──┐ ┃ to ┃ │ │ ┃\n * │ │ │ │\n * ┗━│━━│━┛ ┗━│━━│━┛\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━ ━━ ━┓\n *\n * from ┃ ┃ to ┃ ┌──┐ ┃\n * ┌──┐ │ │\n * ┗━│━━│━┛ ┗━└━━┘━┛\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──┐\n * │ │\n * │ │ ┌──┐\n * ┏━│━━│━┓ ┏━│━━│━┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * ┗━ ━━ ━┛ ┗━└━━┘━┛\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nfunction getParentElement(element: Node): Element | null {\n const parent = element.parentElement\n if (parent == null) {\n return (element.getRootNode() as ShadowRoot).host || null\n }\n return parent\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = window as unknown as Window & {\n visualViewport: visualViewport\n }\n\n const { scrollMode, block, inline, boundary, skipOverflowHiddenElements } =\n options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = getParentElement(cursor)\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const { height, width, top, right, bottom, left } =\n frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n const scaleX =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth === 0\n ? 0\n : width / (frame as HTMLElement).offsetWidth\n : 0\n const scaleY =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight === 0\n ? 0\n : height / (frame as HTMLElement).offsetHeight\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll / scaleY,\n frame.scrollHeight - height / scaleY + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll / scaleX,\n frame.scrollWidth - width / scaleX + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n", "import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;", "export function easeInOutCubic(t, b, c, d) {\n const cc = c - b;\n t /= d / 2;\n if (t < 1) {\n return cc / 2 * t * t * t + b;\n }\n return cc / 2 * ((t -= 2) * t * t + 2) + b;\n}", "export function isWindow(obj) {\n return obj !== null && obj !== undefined && obj === obj.window;\n}\nexport default function getScroll(target, top) {\n var _a, _b;\n if (typeof window === 'undefined') {\n return 0;\n }\n const method = top ? 'scrollTop' : 'scrollLeft';\n let result = 0;\n if (isWindow(target)) {\n result = target[top ? 'pageYOffset' : 'pageXOffset'];\n } else if (target instanceof Document) {\n result = target.documentElement[method];\n } else if (target instanceof HTMLElement) {\n result = target[method];\n } else if (target) {\n // According to the type inference, the `target` is `never` type.\n // Since we configured the loose mode type checking, and supports mocking the target with such shape below::\n // `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`,\n // the program may falls into this branch.\n // Check the corresponding tests for details. Don't sure what is the real scenario this happens.\n result = target[method];\n }\n if (target && !isWindow(target) && typeof result !== 'number') {\n result = (_b = ((_a = target.ownerDocument) !== null && _a !== void 0 ? _a : target).documentElement) === null || _b === void 0 ? void 0 : _b[method];\n }\n return result;\n}", "import raf from './raf';\nimport { easeInOutCubic } from './easings';\nimport getScroll, { isWindow } from './getScroll';\nexport default function scrollTo(y) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n getContainer = () => window,\n callback,\n duration = 450\n } = options;\n const container = getContainer();\n const scrollTop = getScroll(container, true);\n const startTime = Date.now();\n const frameFunc = () => {\n const timestamp = Date.now();\n const time = timestamp - startTime;\n const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);\n if (isWindow(container)) {\n container.scrollTo(window.pageXOffset, nextScrollTop);\n } else if (container instanceof Document || container.constructor.name === 'HTMLDocument') {\n container.documentElement.scrollTop = nextScrollTop;\n } else {\n container.scrollTop = nextScrollTop;\n }\n if (time < duration) {\n raf(frameFunc);\n } else if (typeof callback === 'function') {\n callback();\n }\n };\n raf(frameFunc);\n}", "import { computed, inject, provide } from 'vue';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop() {}\nexport const AnchorContextKey = Symbol('anchorContextKey');\nconst useProvideAnchor = state => {\n provide(AnchorContextKey, state);\n};\nconst useInjectAnchor = () => {\n return inject(AnchorContextKey, {\n registerLink: noop,\n unregisterLink: noop,\n scrollTo: noop,\n activeLink: computed(() => ''),\n handleClick: noop,\n direction: computed(() => 'vertical')\n });\n};\nexport { useInjectAnchor, useProvideAnchor };\nexport default useProvideAnchor;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent, textEllipsis } from '../../style';\n// ============================== Shared ==============================\nconst genSharedAnchorStyle = token => {\n const {\n componentCls,\n holderOffsetBlock,\n motionDurationSlow,\n lineWidthBold,\n colorPrimary,\n lineType,\n colorSplit\n } = token;\n return {\n [`${componentCls}-wrapper`]: {\n marginBlockStart: -holderOffsetBlock,\n paddingBlockStart: holderOffsetBlock,\n // delete overflow: auto\n // overflow: 'auto',\n backgroundColor: 'transparent',\n [componentCls]: _extends(_extends({}, resetComponent(token)), {\n position: 'relative',\n paddingInlineStart: lineWidthBold,\n [`${componentCls}-link`]: {\n paddingBlock: token.anchorPaddingBlock,\n paddingInline: `${token.anchorPaddingInline}px 0`,\n '&-title': _extends(_extends({}, textEllipsis), {\n position: 'relative',\n display: 'block',\n marginBlockEnd: token.anchorTitleBlock,\n color: token.colorText,\n transition: `all ${token.motionDurationSlow}`,\n '&:only-child': {\n marginBlockEnd: 0\n }\n }),\n [`&-active > ${componentCls}-link-title`]: {\n color: token.colorPrimary\n },\n // link link\n [`${componentCls}-link`]: {\n paddingBlock: token.anchorPaddingBlockSecondary\n }\n }\n }),\n [`&:not(${componentCls}-wrapper-horizontal)`]: {\n [componentCls]: {\n '&::before': {\n position: 'absolute',\n left: {\n _skip_check_: true,\n value: 0\n },\n top: 0,\n height: '100%',\n borderInlineStart: `${lineWidthBold}px ${lineType} ${colorSplit}`,\n content: '\" \"'\n },\n [`${componentCls}-ink`]: {\n position: 'absolute',\n left: {\n _skip_check_: true,\n value: 0\n },\n display: 'none',\n transform: 'translateY(-50%)',\n transition: `top ${motionDurationSlow} ease-in-out`,\n width: lineWidthBold,\n backgroundColor: colorPrimary,\n [`&${componentCls}-ink-visible`]: {\n display: 'inline-block'\n }\n }\n }\n },\n [`${componentCls}-fixed ${componentCls}-ink ${componentCls}-ink`]: {\n display: 'none'\n }\n }\n };\n};\nconst genSharedAnchorHorizontalStyle = token => {\n const {\n componentCls,\n motionDurationSlow,\n lineWidthBold,\n colorPrimary\n } = token;\n return {\n [`${componentCls}-wrapper-horizontal`]: {\n position: 'relative',\n '&::before': {\n position: 'absolute',\n left: {\n _skip_check_: true,\n value: 0\n },\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n borderBottom: `1px ${token.lineType} ${token.colorSplit}`,\n content: '\" \"'\n },\n [componentCls]: {\n overflowX: 'scroll',\n position: 'relative',\n display: 'flex',\n scrollbarWidth: 'none' /* Firefox */,\n '&::-webkit-scrollbar': {\n display: 'none' /* Safari and Chrome */\n },\n [`${componentCls}-link:first-of-type`]: {\n paddingInline: 0\n },\n [`${componentCls}-ink`]: {\n position: 'absolute',\n bottom: 0,\n transition: `left ${motionDurationSlow} ease-in-out, width ${motionDurationSlow} ease-in-out`,\n height: lineWidthBold,\n backgroundColor: colorPrimary\n }\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Anchor', token => {\n const {\n fontSize,\n fontSizeLG,\n padding,\n paddingXXS\n } = token;\n const anchorToken = mergeToken(token, {\n holderOffsetBlock: paddingXXS,\n anchorPaddingBlock: paddingXXS,\n anchorPaddingBlockSecondary: paddingXXS / 2,\n anchorPaddingInline: padding,\n anchorTitleBlock: fontSize / 14 * 3,\n anchorBallSize: fontSizeLG / 2\n });\n return [genSharedAnchorStyle(anchorToken), genSharedAnchorHorizontalStyle(anchorToken)];\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { createVNode as _createVNode } from \"vue\";\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, watch } from 'vue';\nimport { initDefaultProps } from '../_util/props-util';\nimport classNames from '../_util/classNames';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport { useInjectAnchor } from './context';\nimport { objectType, anyType } from '../_util/type';\nexport const anchorLinkProps = () => ({\n prefixCls: String,\n href: String,\n title: anyType(),\n target: String,\n /* private use */\n customTitleProps: objectType()\n});\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'AAnchorLink',\n inheritAttrs: false,\n props: initDefaultProps(anchorLinkProps(), {\n href: '#'\n }),\n slots: Object,\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n let mergedTitle = null;\n const {\n handleClick: contextHandleClick,\n scrollTo,\n unregisterLink,\n registerLink,\n activeLink\n } = useInjectAnchor();\n const {\n prefixCls\n } = useConfigInject('anchor', props);\n const handleClick = e => {\n const {\n href\n } = props;\n contextHandleClick(e, {\n title: mergedTitle,\n href\n });\n scrollTo(href);\n };\n watch(() => props.href, (val, oldVal) => {\n nextTick(() => {\n unregisterLink(oldVal);\n registerLink(val);\n });\n });\n onMounted(() => {\n registerLink(props.href);\n });\n onBeforeUnmount(() => {\n unregisterLink(props.href);\n });\n return () => {\n var _a;\n const {\n href,\n target,\n title = slots.title,\n customTitleProps = {}\n } = props;\n const pre = prefixCls.value;\n mergedTitle = typeof title === 'function' ? title(customTitleProps) : title;\n const active = activeLink.value === href;\n const wrapperClassName = classNames(`${pre}-link`, {\n [`${pre}-link-active`]: active\n }, attrs.class);\n const titleClassName = classNames(`${pre}-link-title`, {\n [`${pre}-link-title-active`]: active\n });\n return _createVNode(\"div\", _objectSpread(_objectSpread({}, attrs), {}, {\n \"class\": wrapperClassName\n }), [_createVNode(\"a\", {\n \"class\": titleClassName,\n \"href\": href,\n \"title\": typeof mergedTitle === 'string' ? mergedTitle : '',\n \"target\": target,\n \"onClick\": handleClick\n }, [slots.customTitle ? slots.customTitle(customTitleProps) : mergedTitle]), (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]);\n };\n }\n});", "/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n}\n\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport default isPlainObject;\n", "import _isPlainObject from 'is-plain-object'\nimport {\n VueTypeDef,\n VueTypeValidableDef,\n VueProp,\n InferType,\n PropOptions,\n} from './types'\n\nconst ObjProto = Object.prototype\nconst toString = ObjProto.toString\nexport const hasOwn = ObjProto.hasOwnProperty\n\nconst FN_MATCH_REGEXP = /^\\s*function (\\w+)/\n\n// https://github.com/vuejs/vue/blob/dev/src/core/util/props.js#L177\nexport function getType(\n fn: VueProp | (() => any) | (new (...args: any[]) => any),\n): string {\n const type = (fn as VueProp)?.type ?? fn\n if (type) {\n const match = type.toString().match(FN_MATCH_REGEXP)\n return match ? match[1] : ''\n }\n return ''\n}\n\nexport function getNativeType(value: any): string {\n if (value === null || value === undefined) return ''\n const match = value.constructor.toString().match(FN_MATCH_REGEXP)\n return match ? match[1] : ''\n}\n\ntype PlainObject = { [key: string]: any }\nexport const isPlainObject = _isPlainObject as (obj: any) => obj is PlainObject\n\n/**\n * No-op function\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\n/**\n * A function that returns its first argument\n *\n * @param arg - Any argument\n */\nexport const identity = (arg: any) => arg\n\nlet warn: (msg: string) => string | void = identity\n\nif (process.env.NODE_ENV !== 'production') {\n const hasConsole = typeof console !== 'undefined'\n warn = hasConsole\n ? function warn(msg) {\n // eslint-disable-next-line no-console\n console.warn(`[VueTypes warn]: ${msg}`)\n }\n : identity\n}\n\nexport { warn }\n\n/**\n * Checks for a own property in an object\n *\n * @param {object} obj - Object\n * @param {string} prop - Property to check\n */\nexport const has = (obj: T, prop: U) =>\n hasOwn.call(obj, prop)\n\n/**\n * Determines whether the passed value is an integer. Uses `Number.isInteger` if available\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n * @param {*} value - The value to be tested for being an integer.\n * @returns {boolean}\n */\nexport const isInteger =\n Number.isInteger ||\n function isInteger(value: unknown): value is number {\n return (\n typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value\n )\n }\n\n/**\n * Determines whether the passed value is an Array.\n *\n * @param {*} value - The value to be tested for being an array.\n * @returns {boolean}\n */\nexport const isArray =\n Array.isArray ||\n function isArray(value): value is any[] {\n return toString.call(value) === '[object Array]'\n }\n\n/**\n * Checks if a value is a function\n *\n * @param {any} value - Value to check\n * @returns {boolean}\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isFunction = (value: unknown): value is Function =>\n toString.call(value) === '[object Function]'\n\n/**\n * Checks if the passed-in value is a VueTypes type\n * @param value - The value to check\n */\nexport const isVueTypeDef = (\n value: any,\n): value is VueTypeDef | VueTypeValidableDef =>\n isPlainObject(value) && has(value, '_vueTypes_name')\n\n/**\n * Checks if the passed-in value is a Vue prop definition object or a VueTypes type\n * @param value - The value to check\n */\nexport const isComplexType = (value: any): value is VueProp =>\n isPlainObject(value) &&\n (has(value, 'type') ||\n ['_vueTypes_name', 'validator', 'default', 'required'].some((k) =>\n has(value, k),\n ))\n\nexport interface WrappedFn {\n (...args: any[]): any\n __original: (...args: any[]) => any\n}\n\n/**\n * Binds a function to a context and saves a reference to the original.\n *\n * @param fn - Target function\n * @param ctx - New function context\n */\nexport function bindTo(fn: (...args: any[]) => any, ctx: any): WrappedFn {\n return Object.defineProperty(fn.bind(ctx), '__original', {\n value: fn,\n })\n}\n\n/**\n * Returns the original function bounded with `bindTo`. If the passed-in function\n * has not be bound, the function itself will be returned instead.\n *\n * @param fn - Function to unwrap\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function unwrap(fn: T) {\n return (fn as WrappedFn).__original ?? fn\n}\n\n/**\n * Validates a given value against a prop type object.\n *\n * If `silent` is `false` (default) will return a boolean. If it is set to `true`\n * it will return `true` on success or a string error message on failure\n *\n * @param {Object|*} type - Type to use for validation. Either a type object or a constructor\n * @param {*} value - Value to check\n * @param {boolean} silent - Silence warnings\n */\nexport function validateType(\n type: T,\n value: U,\n silent = false,\n): string | boolean {\n let typeToCheck: { [key: string]: any }\n let valid = true\n let expectedType = ''\n if (!isPlainObject(type)) {\n typeToCheck = { type }\n } else {\n typeToCheck = type\n }\n const namePrefix = isVueTypeDef(typeToCheck)\n ? typeToCheck._vueTypes_name + ' - '\n : ''\n\n if (isComplexType(typeToCheck) && typeToCheck.type !== null) {\n if (typeToCheck.type === undefined || typeToCheck.type === true) {\n return valid\n }\n if (!typeToCheck.required && value === undefined) {\n return valid\n }\n if (isArray(typeToCheck.type)) {\n valid = typeToCheck.type.some(\n (type: any) => validateType(type, value, true) === true,\n )\n expectedType = typeToCheck.type\n .map((type: any) => getType(type))\n .join(' or ')\n } else {\n expectedType = getType(typeToCheck)\n\n if (expectedType === 'Array') {\n valid = isArray(value)\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value)\n } else if (\n expectedType === 'String' ||\n expectedType === 'Number' ||\n expectedType === 'Boolean' ||\n expectedType === 'Function'\n ) {\n valid = getNativeType(value) === expectedType\n } else {\n valid = value instanceof typeToCheck.type\n }\n }\n }\n\n if (!valid) {\n const msg = `${namePrefix}value \"${value}\" should be of type \"${expectedType}\"`\n if (silent === false) {\n warn(msg)\n return false\n }\n return msg\n }\n\n if (has(typeToCheck, 'validator') && isFunction(typeToCheck.validator)) {\n const oldWarn = warn\n const warnLog = []\n warn = (msg) => {\n warnLog.push(msg)\n }\n\n valid = typeToCheck.validator(value)\n warn = oldWarn\n\n if (!valid) {\n const msg = (warnLog.length > 1 ? '* ' : '') + warnLog.join('\\n* ')\n warnLog.length = 0\n if (silent === false) {\n warn(msg)\n return valid\n }\n return msg\n }\n }\n return valid\n}\n\n/**\n * Adds `isRequired` and `def` modifiers to an object\n *\n * @param {string} name - Type internal name\n * @param {object} obj - Object to enhance\n */\nexport function toType(name: string, obj: PropOptions) {\n const type: VueTypeDef = Object.defineProperties(obj, {\n _vueTypes_name: {\n value: name,\n writable: true,\n },\n isRequired: {\n get() {\n this.required = true\n return this\n },\n },\n def: {\n value(def?: any) {\n if (def === undefined && !this.default) {\n return this\n }\n if (!isFunction(def) && validateType(this, def, true) !== true) {\n warn(`${this._vueTypes_name} - invalid default value: \"${def}\"`)\n return this\n }\n if (isArray(def)) {\n this.default = () => [...def]\n } else if (isPlainObject(def)) {\n this.default = () => Object.assign({}, def)\n } else {\n this.default = def\n }\n return this\n },\n },\n })\n\n const { validator } = type\n if (isFunction(validator)) {\n type.validator = bindTo(validator, type)\n }\n\n return type\n}\n\n/**\n * Like `toType` but also adds the `validate()` method to the type object\n *\n * @param {string} name - Type internal name\n * @param {object} obj - Object to enhance\n */\nexport function toValidableType(name: string, obj: PropOptions) {\n const type = toType(name, obj)\n return Object.defineProperty(type, 'validate', {\n value(fn: (value: T) => boolean) {\n if (isFunction(this.validator)) {\n warn(\n `${\n this._vueTypes_name\n } - calling .validate() will overwrite the current custom validator function. Validator info:\\n${JSON.stringify(\n this,\n )}`,\n )\n }\n this.validator = bindTo(fn, this)\n return this\n },\n }) as VueTypeValidableDef\n}\n\n/**\n * Clones an object preserving all of it's own keys.\n *\n * @param obj - Object to clone\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function clone(obj: T): T {\n const descriptors = {} as { [P in keyof T]: any }\n Object.getOwnPropertyNames(obj).forEach((key) => {\n descriptors[key as keyof T] = Object.getOwnPropertyDescriptor(obj, key)\n })\n return Object.defineProperties({}, descriptors)\n}\n\n/**\n * Return a new VueTypes type using another type as base.\n *\n * Properties in the `props` object will overwrite those defined in the source one\n * expect for the `validator` function. In that case both functions will be executed in series.\n *\n * @param name - Name of the new type\n * @param source - Source type\n * @param props - Custom type properties\n */\nexport function fromType>(name: string, source: T): T\nexport function fromType<\n T extends VueTypeDef,\n V extends PropOptions>\n>(name: string, source: T, props: V): Omit & V\nexport function fromType<\n T extends VueTypeDef,\n V extends PropOptions>\n>(name: string, source: T, props?: V) {\n // 1. create an exact copy of the source type\n const copy = clone(source)\n\n // 2. give it a new name\n copy._vueTypes_name = name\n\n if (!isPlainObject(props)) {\n return copy\n }\n const { validator, ...rest } = props\n\n // 3. compose the validator function\n // with the one on the source (if present)\n // and ensure it is bound to the copy\n if (isFunction(validator)) {\n let { validator: prevValidator } = copy\n\n if (prevValidator) {\n prevValidator = unwrap(prevValidator)\n }\n\n copy.validator = bindTo(\n prevValidator\n ? function (this: T, value: any) {\n return (\n prevValidator.call(this, value) && validator.call(this, value)\n )\n }\n : validator,\n copy,\n )\n }\n // 4. overwrite the rest, if present\n return Object.assign(copy, rest as V)\n}\n\nexport function indent(string: string) {\n return string.replace(/^(?!\\s*$)/gm, ' ')\n}\n", "import { toType, toValidableType, isInteger } from '../utils'\nimport { PropType } from '../types'\n\nexport const any = () => toValidableType('any', {})\n\nexport const func = any>() =>\n toValidableType('function', {\n type: Function as PropType,\n })\n\nexport const bool = () =>\n toValidableType('boolean', {\n type: Boolean,\n })\n\nexport const string = () =>\n toValidableType('string', {\n type: String,\n })\n\nexport const number = () =>\n toValidableType('number', {\n type: Number,\n })\n\nexport const array = () =>\n toValidableType('array', {\n type: Array,\n })\n\nexport const object = () =>\n toValidableType('object', {\n type: Object,\n })\n\nexport const integer = () =>\n toType('integer', {\n type: Number,\n validator(value) {\n return isInteger(value)\n },\n })\n\nexport const symbol = () =>\n toType('symbol', {\n validator(value) {\n return typeof value === 'symbol'\n },\n })\n", "import { toType, warn } from '../utils'\nimport { ValidatorFunction, VueTypeDef } from '../types'\n\nexport default function custom(\n validatorFn: ValidatorFunction,\n warnMsg = 'custom validation failed',\n) {\n if (typeof validatorFn !== 'function') {\n throw new TypeError(\n '[VueTypes error]: You must provide a function as argument',\n )\n }\n\n return toType(validatorFn.name || '<>', {\n validator(this: VueTypeDef, value: T) {\n const valid = validatorFn(value)\n if (!valid) warn(`${this._vueTypes_name} - ${warnMsg}`)\n return valid\n },\n })\n}\n", "import { Prop } from '../types'\nimport { toType, warn, isArray } from '../utils'\n\nexport default function oneOf(arr: T) {\n if (!isArray(arr)) {\n throw new TypeError(\n '[VueTypes error]: You must provide an array as argument.',\n )\n }\n const msg = `oneOf - value should be one of \"${arr.join('\", \"')}\".`\n const allowedTypes = arr.reduce((ret, v) => {\n if (v !== null && v !== undefined) {\n const constr = (v as any).constructor\n ret.indexOf(constr) === -1 && ret.push(constr)\n }\n return ret\n }, [] as Prop[])\n\n return toType('oneOf', {\n type: allowedTypes.length > 0 ? allowedTypes : undefined,\n validator(value) {\n const valid = arr.indexOf(value) !== -1\n if (!valid) warn(msg)\n return valid\n },\n })\n}\n", "import { Prop, VueProp, InferType, PropType } from '../types'\nimport {\n isArray,\n isComplexType,\n isVueTypeDef,\n isFunction,\n toType,\n validateType,\n warn,\n indent,\n} from '../utils'\n\nexport default function oneOfType<\n U extends VueProp | Prop,\n V = InferType\n>(arr: U[]) {\n if (!isArray(arr)) {\n throw new TypeError(\n '[VueTypes error]: You must provide an array as argument',\n )\n }\n\n let hasCustomValidators = false\n\n let nativeChecks: Prop[] = []\n\n for (let i = 0; i < arr.length; i += 1) {\n const type = arr[i]\n if (isComplexType(type)) {\n if (isVueTypeDef(type) && type._vueTypes_name === 'oneOf') {\n nativeChecks = nativeChecks.concat(type.type as PropType)\n continue\n }\n if (isFunction(type.validator)) {\n hasCustomValidators = true\n }\n if (type.type !== true && type.type) {\n nativeChecks = nativeChecks.concat(type.type)\n continue\n }\n }\n nativeChecks.push(type as Prop)\n }\n\n // filter duplicates\n nativeChecks = nativeChecks.filter((t, i) => nativeChecks.indexOf(t) === i)\n\n if (!hasCustomValidators) {\n // we got just native objects (ie: Array, Object)\n // delegate to Vue native prop check\n return toType('oneOfType', {\n type: nativeChecks,\n })\n }\n\n return toType('oneOfType', {\n type: nativeChecks,\n validator(value) {\n const err: string[] = []\n const valid = arr.some((type) => {\n const t =\n isVueTypeDef(type) && type._vueTypes_name === 'oneOf'\n ? type.type || null\n : type\n const res = validateType(t, value, true)\n if (typeof res === 'string') {\n err.push(res)\n }\n return res === true\n })\n if (!valid) {\n warn(\n `oneOfType - provided value does not match any of the ${\n err.length\n } passed-in validators:\\n${indent(err.join('\\n'))}`,\n )\n }\n\n return valid\n },\n })\n}\n", "import { Prop, VueProp, InferType } from '../types'\nimport { toType, validateType, warn, indent } from '../utils'\n\nexport default function arrayOf | Prop>(type: T) {\n return toType[]>('arrayOf', {\n type: Array,\n validator(values: any[]) {\n let vResult: string | boolean\n const valid = values.every((value) => {\n vResult = validateType(type, value, true)\n return vResult === true\n })\n if (!valid) {\n warn(`arrayOf - value validation error:\\n${indent(vResult as string)}`)\n }\n return valid\n },\n })\n}\n", "import { toType } from '../utils'\nimport { Constructor } from '../types'\n\nexport default function instanceOf(\n instanceConstructor: C,\n) {\n return toType>('instanceOf', {\n type: instanceConstructor,\n })\n}\n", "import { Prop, VueProp, InferType } from '../types'\nimport { toType, validateType, warn, indent } from '../utils'\n\nexport default function objectOf | Prop>(type: T) {\n return toType<{ [key: string]: InferType }>('objectOf', {\n type: Object,\n validator(obj) {\n let vResult: string | boolean\n const valid = Object.keys(obj).every((key) => {\n vResult = validateType(type, obj[key], true)\n return vResult === true\n })\n\n if (!valid) {\n warn(`objectOf - value validation error:\\n${indent(vResult as string)}`)\n }\n return valid\n },\n })\n}\n", "import { Prop, VueProp, VueTypeShape, VueTypeLooseShape } from '../types'\nimport { toType, validateType, warn, isPlainObject, indent } from '../utils'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport default function shape(\n obj: { [K in keyof T]: Prop | VueProp },\n): VueTypeShape {\n const keys = Object.keys(obj)\n const requiredKeys = keys.filter((key) => !!(obj as any)[key]?.required)\n\n const type = toType('shape', {\n type: Object,\n validator(this: VueTypeShape | VueTypeLooseShape, value) {\n if (!isPlainObject(value)) {\n return false\n }\n const valueKeys = Object.keys(value)\n\n // check for required keys (if any)\n if (\n requiredKeys.length > 0 &&\n requiredKeys.some((req) => valueKeys.indexOf(req) === -1)\n ) {\n const missing = requiredKeys.filter(\n (req) => valueKeys.indexOf(req) === -1,\n )\n if (missing.length === 1) {\n warn(`shape - required property \"${missing[0]}\" is not defined.`)\n } else {\n warn(\n `shape - required properties \"${missing.join(\n '\", \"',\n )}\" are not defined.`,\n )\n }\n\n return false\n }\n\n return valueKeys.every((key) => {\n if (keys.indexOf(key) === -1) {\n if ((this as VueTypeLooseShape)._vueTypes_isLoose === true)\n return true\n warn(\n `shape - shape definition does not include a \"${key}\" property. Allowed keys: \"${keys.join(\n '\", \"',\n )}\".`,\n )\n return false\n }\n const type = (obj as any)[key]\n const valid = validateType(type, value[key], true)\n if (typeof valid === 'string') {\n warn(`shape - \"${key}\" property validation error:\\n ${indent(valid)}`)\n }\n return valid === true\n })\n },\n }) as VueTypeShape\n\n Object.defineProperty(type, '_vueTypes_isLoose', {\n writable: true,\n value: false,\n })\n\n Object.defineProperty(type, 'loose', {\n get() {\n this._vueTypes_isLoose = true\n return this\n },\n })\n\n return type\n}\n", "import {\n toType,\n toValidableType,\n validateType,\n isArray,\n isVueTypeDef,\n has,\n fromType,\n} from './utils'\n\nimport {\n VueTypesDefaults,\n ExtendProps,\n VueTypeDef,\n VueTypeValidableDef,\n VueTypeShape,\n VueTypeLooseShape,\n} from './types'\nimport { typeDefaults } from './sensibles'\nimport { PropOptions } from './types'\n\nimport {\n any,\n func,\n bool,\n string,\n number,\n array,\n integer,\n symbol,\n object,\n} from './validators/native'\nimport custom from './validators/custom'\nimport oneOf from './validators/oneof'\nimport oneOfType from './validators/oneoftype'\nimport arrayOf from './validators/arrayof'\nimport instanceOf from './validators/instanceof'\nimport objectOf from './validators/objectof'\nimport shape from './validators/shape'\n\nclass BaseVueTypes {\n static defaults: Partial = {}\n\n static sensibleDefaults: Partial | boolean\n\n static get any() {\n return any()\n }\n static get func() {\n return func().def(this.defaults.func)\n }\n static get bool() {\n return bool().def(this.defaults.bool)\n }\n static get string() {\n return string().def(this.defaults.string)\n }\n static get number() {\n return number().def(this.defaults.number)\n }\n static get array() {\n return array().def(this.defaults.array)\n }\n static get object() {\n return object().def(this.defaults.object)\n }\n static get integer() {\n return integer().def(this.defaults.integer)\n }\n static get symbol() {\n return symbol()\n }\n\n static readonly custom = custom\n static readonly oneOf = oneOf\n static readonly instanceOf = instanceOf\n static readonly oneOfType = oneOfType\n static readonly arrayOf = arrayOf\n static readonly objectOf = objectOf\n static readonly shape = shape\n\n static extend(props: ExtendProps | ExtendProps[]): T {\n if (isArray(props)) {\n props.forEach((p) => this.extend(p))\n return this as any\n }\n\n const { name, validate = false, getter = false, ...opts } = props\n\n if (has(this, name as any)) {\n throw new TypeError(`[VueTypes error]: Type \"${name}\" already defined`)\n }\n\n const { type } = opts\n if (isVueTypeDef(type)) {\n // we are using as base type a vue-type object\n\n // detach the original type\n // we are going to inherit the parent data.\n delete opts.type\n\n if (getter) {\n return Object.defineProperty(this, name, {\n get: () => fromType(name, type, opts as Omit),\n })\n }\n return Object.defineProperty(this, name, {\n value(...args: unknown[]) {\n const t = fromType(name, type, opts as Omit)\n if (t.validator) {\n t.validator = t.validator.bind(t, ...args)\n }\n return t\n },\n })\n }\n\n let descriptor: PropertyDescriptor\n if (getter) {\n descriptor = {\n get() {\n const typeOptions = Object.assign({}, opts as PropOptions)\n if (validate) {\n return toValidableType(name, typeOptions)\n }\n return toType(name, typeOptions)\n },\n enumerable: true,\n }\n } else {\n descriptor = {\n value(...args: T[]) {\n const typeOptions = Object.assign({}, opts as PropOptions)\n let ret: VueTypeDef\n if (validate) {\n ret = toValidableType(name, typeOptions)\n } else {\n ret = toType(name, typeOptions)\n }\n\n if (typeOptions.validator) {\n ret.validator = typeOptions.validator.bind(ret, ...args)\n }\n return ret\n },\n enumerable: true,\n }\n }\n\n return Object.defineProperty(this, name, descriptor)\n }\n\n static utils = {\n validate(value: T, type: U) {\n return validateType(type, value, true) === true\n },\n toType(\n name: string,\n obj: PropOptions,\n validable = false,\n ): VueTypeDef | VueTypeValidableDef {\n return validable ? toValidableType(name, obj) : toType(name, obj)\n },\n }\n}\n\nfunction createTypes(defs: Partial = typeDefaults()) {\n return class extends BaseVueTypes {\n static defaults: Partial = { ...defs }\n\n static get sensibleDefaults() {\n return { ...this.defaults }\n }\n\n static set sensibleDefaults(v: boolean | Partial) {\n if (v === false) {\n this.defaults = {}\n return\n }\n if (v === true) {\n this.defaults = { ...defs }\n return\n }\n this.defaults = { ...v }\n }\n }\n}\n\nexport default class VueTypes extends createTypes() {}\n\nexport {\n any,\n func,\n bool,\n string,\n number,\n array,\n integer,\n symbol,\n object,\n custom,\n oneOf,\n oneOfType,\n arrayOf,\n instanceOf,\n objectOf,\n shape,\n createTypes,\n toType,\n toValidableType,\n validateType,\n fromType,\n}\n\nexport type VueTypesInterface = ReturnType\nexport { VueTypeDef, VueTypeValidableDef, VueTypeShape, VueTypeLooseShape }\n", "import { VueTypesDefaults } from './types'\n\nexport const typeDefaults = (): VueTypesDefaults => ({\n func: () => undefined,\n bool: true,\n string: '',\n number: 0,\n array: () => [],\n object: () => ({}),\n integer: 0,\n})\n", "import { createTypes } from 'vue-types';\nconst PropTypes = createTypes({\n func: undefined,\n bool: undefined,\n string: undefined,\n number: undefined,\n array: undefined,\n object: undefined,\n integer: undefined\n});\nPropTypes.extend([{\n name: 'looseBool',\n getter: true,\n type: Boolean,\n default: undefined\n}, {\n name: 'style',\n getter: true,\n type: [String, Object],\n default: undefined\n}, {\n name: 'VueNode',\n getter: true,\n type: null\n}]);\nexport function withUndefined(type) {\n type.default = undefined;\n return type;\n}\nexport default PropTypes;", "import devWarning, { resetWarned } from './warning';\nexport { resetWarned };\nexport default ((valid, component, message) => {\n devWarning(valid, `[ant-design-vue: ${component}] ${message}`);\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport { defineComponent, nextTick, onBeforeUnmount, onMounted, onUpdated, reactive, ref, computed } from 'vue';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport classNames from '../_util/classNames';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport Affix from '../affix';\nimport scrollTo from '../_util/scrollTo';\nimport getScroll from '../_util/getScroll';\nimport useConfigInject from '../config-provider/hooks/useConfigInject';\nimport useProvideAnchor from './context';\nimport useStyle from './style';\nimport AnchorLink from './AnchorLink';\nimport PropTypes from '../_util/vue-types';\nimport devWarning from '../vc-util/devWarning';\nimport { arrayType } from '../_util/type';\nfunction getDefaultContainer() {\n return window;\n}\nfunction getOffsetTop(element, container) {\n if (!element.getClientRects().length) {\n return 0;\n }\n const rect = element.getBoundingClientRect();\n if (rect.width || rect.height) {\n if (container === window) {\n container = element.ownerDocument.documentElement;\n return rect.top - container.clientTop;\n }\n return rect.top - container.getBoundingClientRect().top;\n }\n return rect.top;\n}\nconst sharpMatcherRegx = /#([\\S ]+)$/;\nexport const anchorProps = () => ({\n prefixCls: String,\n offsetTop: Number,\n bounds: Number,\n affix: {\n type: Boolean,\n default: true\n },\n showInkInFixed: {\n type: Boolean,\n default: false\n },\n getContainer: Function,\n wrapperClass: String,\n wrapperStyle: {\n type: Object,\n default: undefined\n },\n getCurrentAnchor: Function,\n targetOffset: Number,\n items: arrayType(),\n direction: PropTypes.oneOf(['vertical', 'horizontal']).def('vertical'),\n onChange: Function,\n onClick: Function\n});\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'AAnchor',\n inheritAttrs: false,\n props: anchorProps(),\n setup(props, _ref) {\n let {\n emit,\n attrs,\n slots,\n expose\n } = _ref;\n var _a;\n const {\n prefixCls,\n getTargetContainer,\n direction\n } = useConfigInject('anchor', props);\n const anchorDirection = computed(() => {\n var _a;\n return (_a = props.direction) !== null && _a !== void 0 ? _a : 'vertical';\n });\n if (process.env.NODE_ENV !== 'production') {\n devWarning(props.items && typeof slots.default !== 'function', 'Anchor', '`Anchor children` is deprecated. Please use `items` instead.');\n }\n if (process.env.NODE_ENV !== 'production') {\n devWarning(!(anchorDirection.value === 'horizontal' && ((_a = props.items) === null || _a === void 0 ? void 0 : _a.some(n => 'children' in n))), 'Anchor', '`Anchor items#children` is not supported when `Anchor` direction is horizontal.');\n }\n const spanLinkNode = ref(null);\n const anchorRef = ref();\n const state = reactive({\n links: [],\n scrollContainer: null,\n scrollEvent: null,\n animating: false\n });\n const activeLink = ref(null);\n const getContainer = computed(() => {\n const {\n getContainer\n } = props;\n return getContainer || (getTargetContainer === null || getTargetContainer === void 0 ? void 0 : getTargetContainer.value) || getDefaultContainer;\n });\n // func...\n const getCurrentAnchor = function () {\n let offsetTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let bounds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n const linkSections = [];\n const container = getContainer.value();\n state.links.forEach(link => {\n const sharpLinkMatch = sharpMatcherRegx.exec(link.toString());\n if (!sharpLinkMatch) {\n return;\n }\n const target = document.getElementById(sharpLinkMatch[1]);\n if (target) {\n const top = getOffsetTop(target, container);\n if (top < offsetTop + bounds) {\n linkSections.push({\n link,\n top\n });\n }\n }\n });\n if (linkSections.length) {\n const maxSection = linkSections.reduce((prev, curr) => curr.top > prev.top ? curr : prev);\n return maxSection.link;\n }\n return '';\n };\n const setCurrentActiveLink = link => {\n const {\n getCurrentAnchor\n } = props;\n if (activeLink.value === link) {\n return;\n }\n activeLink.value = typeof getCurrentAnchor === 'function' ? getCurrentAnchor(link) : link;\n emit('change', link);\n };\n const handleScrollTo = link => {\n const {\n offsetTop,\n targetOffset\n } = props;\n setCurrentActiveLink(link);\n const sharpLinkMatch = sharpMatcherRegx.exec(link);\n if (!sharpLinkMatch) {\n return;\n }\n const targetElement = document.getElementById(sharpLinkMatch[1]);\n if (!targetElement) {\n return;\n }\n const container = getContainer.value();\n const scrollTop = getScroll(container, true);\n const eleOffsetTop = getOffsetTop(targetElement, container);\n let y = scrollTop + eleOffsetTop;\n y -= targetOffset !== undefined ? targetOffset : offsetTop || 0;\n state.animating = true;\n scrollTo(y, {\n callback: () => {\n state.animating = false;\n },\n getContainer: getContainer.value\n });\n };\n expose({\n scrollTo: handleScrollTo\n });\n const handleScroll = () => {\n if (state.animating) {\n return;\n }\n const {\n offsetTop,\n bounds,\n targetOffset\n } = props;\n const currentActiveLink = getCurrentAnchor(targetOffset !== undefined ? targetOffset : offsetTop || 0, bounds);\n setCurrentActiveLink(currentActiveLink);\n };\n const updateInk = () => {\n const linkNode = anchorRef.value.querySelector(`.${prefixCls.value}-link-title-active`);\n if (linkNode && spanLinkNode.value) {\n const horizontalAnchor = anchorDirection.value === 'horizontal';\n spanLinkNode.value.style.top = horizontalAnchor ? '' : `${linkNode.offsetTop + linkNode.clientHeight / 2}px`;\n spanLinkNode.value.style.height = horizontalAnchor ? '' : `${linkNode.clientHeight}px`;\n spanLinkNode.value.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : '';\n spanLinkNode.value.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : '';\n if (horizontalAnchor) {\n scrollIntoView(linkNode, {\n scrollMode: 'if-needed',\n block: 'nearest'\n });\n }\n }\n };\n useProvideAnchor({\n registerLink: link => {\n if (!state.links.includes(link)) {\n state.links.push(link);\n }\n },\n unregisterLink: link => {\n const index = state.links.indexOf(link);\n if (index !== -1) {\n state.links.splice(index, 1);\n }\n },\n activeLink,\n scrollTo: handleScrollTo,\n handleClick: (e, info) => {\n emit('click', e, info);\n },\n direction: anchorDirection\n });\n onMounted(() => {\n nextTick(() => {\n const container = getContainer.value();\n state.scrollContainer = container;\n state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll);\n handleScroll();\n });\n });\n onBeforeUnmount(() => {\n if (state.scrollEvent) {\n state.scrollEvent.remove();\n }\n });\n onUpdated(() => {\n if (state.scrollEvent) {\n const currentContainer = getContainer.value();\n if (state.scrollContainer !== currentContainer) {\n state.scrollContainer = currentContainer;\n state.scrollEvent.remove();\n state.scrollEvent = addEventListener(state.scrollContainer, 'scroll', handleScroll);\n handleScroll();\n }\n }\n updateInk();\n });\n const createNestedLink = options => Array.isArray(options) ? options.map(option => {\n const {\n children,\n key,\n href,\n target,\n class: cls,\n style,\n title\n } = option;\n return _createVNode(AnchorLink, {\n \"key\": key,\n \"href\": href,\n \"target\": target,\n \"class\": cls,\n \"style\": style,\n \"title\": title,\n \"customTitleProps\": option\n }, {\n default: () => [anchorDirection.value === 'vertical' ? createNestedLink(children) : null],\n customTitle: slots.customTitle\n });\n }) : null;\n const [wrapSSR, hashId] = useStyle(prefixCls);\n return () => {\n var _a;\n const {\n offsetTop,\n affix,\n showInkInFixed\n } = props;\n const pre = prefixCls.value;\n const inkClass = classNames(`${pre}-ink`, {\n [`${pre}-ink-visible`]: activeLink.value\n });\n const wrapperClass = classNames(hashId.value, props.wrapperClass, `${pre}-wrapper`, {\n [`${pre}-wrapper-horizontal`]: anchorDirection.value === 'horizontal',\n [`${pre}-rtl`]: direction.value === 'rtl'\n });\n const anchorClass = classNames(pre, {\n [`${pre}-fixed`]: !affix && !showInkInFixed\n });\n const wrapperStyle = _extends({\n maxHeight: offsetTop ? `calc(100vh - ${offsetTop}px)` : '100vh'\n }, props.wrapperStyle);\n const anchorContent = _createVNode(\"div\", {\n \"class\": wrapperClass,\n \"style\": wrapperStyle,\n \"ref\": anchorRef\n }, [_createVNode(\"div\", {\n \"class\": anchorClass\n }, [_createVNode(\"span\", {\n \"class\": inkClass,\n \"ref\": spanLinkNode\n }, null), Array.isArray(props.items) ? createNestedLink(props.items) : (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);\n return wrapSSR(!affix ? anchorContent : _createVNode(Affix, _objectSpread(_objectSpread({}, attrs), {}, {\n \"offsetTop\": offsetTop,\n \"target\": getContainer.value\n }), {\n default: () => [anchorContent]\n }));\n };\n }\n});", "import Anchor from './Anchor';\nimport AnchorLink from './AnchorLink';\nAnchor.Link = AnchorLink;\n/* istanbul ignore next */\nAnchor.install = function (app) {\n app.component(Anchor.name, Anchor);\n app.component(Anchor.Link.name, Anchor.Link);\n return app;\n};\nexport { AnchorLink, AnchorLink as Link };\nexport default Anchor;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { warning } from '../../vc-util/warning';\nfunction getKey(data, index) {\n const {\n key\n } = data;\n let value;\n if ('value' in data) {\n ({\n value\n } = data);\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return `rc-index-key-${index}`;\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n const {\n label,\n value,\n options\n } = fieldNames || {};\n return {\n label: label || (childrenAsData ? 'children' : 'label'),\n value: value || 'value',\n options: options || 'options'\n };\n}\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n let {\n fieldNames,\n childrenAsData\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const flattenList = [];\n const {\n label: fieldLabel,\n value: fieldValue,\n options: fieldOptions\n } = fillFieldNames(fieldNames, false);\n function dig(list, isGroupOption) {\n list.forEach(data => {\n const label = data[fieldLabel];\n if (isGroupOption || !(fieldOptions in data)) {\n const value = data[fieldValue];\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data,\n label,\n value\n });\n } else {\n let grpLabel = label;\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n const newOption = _extends({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport function getSeparatedContent(text, tokens) {\n if (!tokens || !tokens.length) {\n return null;\n }\n let match = false;\n function separate(str, _ref) {\n let [token, ...restTokens] = _ref;\n if (!token) {\n return [str];\n }\n const list = str.split(token);\n match = match || list.length > 1;\n return list.reduce((prevList, unitStr) => [...prevList, ...separate(unitStr, restTokens)], []).filter(unit => unit);\n }\n const list = separate(text, tokens);\n return match ? list : null;\n}", "import PropTypes from '../_util/vue-types';\nfunction returnEmptyString() {\n return '';\n}\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n return window.document;\n}\nexport function noop() {}\nexport const triggerProps = () => ({\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).def([]),\n showAction: PropTypes.any.def([]),\n hideAction: PropTypes.any.def([]),\n getPopupClassNameFromAlign: PropTypes.any.def(returnEmptyString),\n onPopupVisibleChange: Function,\n afterPopupVisibleChange: PropTypes.func.def(noop),\n popup: PropTypes.any,\n popupStyle: {\n type: Object,\n default: undefined\n },\n prefixCls: PropTypes.string.def('rc-trigger-popup'),\n popupClassName: PropTypes.string.def(''),\n popupPlacement: String,\n builtinPlacements: PropTypes.object,\n popupTransitionName: String,\n popupAnimation: PropTypes.any,\n mouseEnterDelay: PropTypes.number.def(0),\n mouseLeaveDelay: PropTypes.number.def(0.1),\n zIndex: Number,\n focusDelay: PropTypes.number.def(0),\n blurDelay: PropTypes.number.def(0.15),\n getPopupContainer: Function,\n getDocument: PropTypes.func.def(returnDocument),\n forceRender: {\n type: Boolean,\n default: undefined\n },\n destroyPopupOnHide: {\n type: Boolean,\n default: false\n },\n mask: {\n type: Boolean,\n default: false\n },\n maskClosable: {\n type: Boolean,\n default: true\n },\n // onPopupAlign: PropTypes.func.def(noop),\n popupAlign: PropTypes.object.def(() => ({})),\n popupVisible: {\n type: Boolean,\n default: undefined\n },\n defaultPopupVisible: {\n type: Boolean,\n default: false\n },\n maskTransitionName: String,\n maskAnimation: String,\n stretch: String,\n alignPoint: {\n type: Boolean,\n default: undefined\n },\n autoDestroy: {\n type: Boolean,\n default: false\n },\n mobile: Object,\n getTriggerDOMNode: Function\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const innerProps = {\n visible: Boolean,\n prefixCls: String,\n zIndex: Number,\n destroyPopupOnHide: Boolean,\n forceRender: Boolean,\n // Legacy Motion\n animation: [String, Object],\n transitionName: String,\n // Measure\n stretch: {\n type: String\n },\n // Align\n align: {\n type: Object\n },\n point: {\n type: Object\n },\n getRootDomNode: {\n type: Function\n },\n getClassNameFromAlign: {\n type: Function\n },\n onAlign: {\n type: Function\n },\n onMouseenter: {\n type: Function\n },\n onMouseleave: {\n type: Function\n },\n onMousedown: {\n type: Function\n },\n onTouchstart: {\n type: Function\n }\n};\nexport const mobileProps = _extends(_extends({}, innerProps), {\n mobile: {\n type: Object\n }\n});\nexport const popupProps = _extends(_extends({}, innerProps), {\n mask: Boolean,\n mobile: {\n type: Object\n },\n maskAnimation: String,\n maskTransitionName: String\n});", "export function getMotion(_ref) {\n let {\n prefixCls,\n animation,\n transitionName\n } = _ref;\n if (animation) {\n return {\n name: `${prefixCls}-${animation}`\n };\n }\n if (transitionName) {\n return {\n name: transitionName\n };\n }\n return {};\n}", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { withDirectives as _withDirectives, createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport { Transition } from 'vue';\nimport { getMotion } from '../utils/motionUtil';\nexport default function Mask(props) {\n const {\n prefixCls,\n visible,\n zIndex,\n mask,\n maskAnimation,\n maskTransitionName\n } = props;\n if (!mask) {\n return null;\n }\n let motion = {};\n if (maskTransitionName || maskAnimation) {\n motion = getMotion({\n prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n });\n }\n return _createVNode(Transition, _objectSpread({\n \"appear\": true\n }, motion), {\n default: () => [_withDirectives(_createVNode(\"div\", {\n \"style\": {\n zIndex\n },\n \"class\": `${prefixCls}-mask`\n }, null), [[_resolveDirective(\"if\"), visible]])]\n });\n}\nMask.displayName = 'Mask';", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nimport { defineComponent, ref, Transition } from 'vue';\nimport { flattenChildren } from '../../_util/props-util';\nimport classNames from '../../_util/classNames';\nimport { mobileProps } from './interface';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'MobilePopupInner',\n inheritAttrs: false,\n props: mobileProps,\n emits: ['mouseenter', 'mouseleave', 'mousedown', 'touchstart', 'align'],\n setup(props, _ref) {\n let {\n expose,\n slots\n } = _ref;\n const elementRef = ref();\n expose({\n forceAlign: () => {},\n getElement: () => elementRef.value\n });\n return () => {\n var _a;\n const {\n zIndex,\n visible,\n prefixCls,\n mobile: {\n popupClassName,\n popupStyle,\n popupMotion = {},\n popupRender\n } = {}\n } = props;\n // ======================== Render ========================\n const mergedStyle = _extends({\n zIndex\n }, popupStyle);\n let childNode = flattenChildren((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));\n // Wrapper when multiple children\n if (childNode.length > 1) {\n const _childNode = function () {\n return childNode;\n }();\n childNode = _createVNode(\"div\", {\n \"class\": `${prefixCls}-content`\n }, [childNode]);\n }\n // Mobile support additional render\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n const mergedClassName = classNames(prefixCls, popupClassName);\n return _createVNode(Transition, _objectSpread({\n \"ref\": elementRef\n }, popupMotion), {\n default: () => [visible ? _createVNode(\"div\", {\n \"class\": mergedClassName,\n \"style\": mergedStyle\n }, [childNode]) : null]\n });\n };\n }\n});", "var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { onBeforeUnmount, shallowRef, watch, onMounted } from 'vue';\nimport raf from '../../_util/raf';\nconst StatusQueue = ['measure', 'align', null, 'motion'];\nexport default ((visible, doMeasure) => {\n const status = shallowRef(null);\n const rafRef = shallowRef();\n const destroyRef = shallowRef(false);\n function setStatus(nextStatus) {\n if (!destroyRef.value) {\n status.value = nextStatus;\n }\n }\n function cancelRaf() {\n raf.cancel(rafRef.value);\n }\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.value = raf(() => {\n // Only align should be manually trigger\n let newStatus = status.value;\n switch (status.value) {\n case 'align':\n newStatus = 'motion';\n break;\n case 'motion':\n newStatus = 'stable';\n break;\n default:\n }\n setStatus(newStatus);\n callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n watch(visible, () => {\n setStatus('measure');\n }, {\n immediate: true,\n flush: 'post'\n });\n onMounted(() => {\n // Go next status\n watch(status, () => {\n switch (status.value) {\n case 'measure':\n doMeasure();\n break;\n default:\n }\n if (status.value) {\n rafRef.value = raf(() => __awaiter(void 0, void 0, void 0, function* () {\n const index = StatusQueue.indexOf(status.value);\n const nextStatus = StatusQueue[index + 1];\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n }));\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n });\n onBeforeUnmount(() => {\n destroyRef.value = true;\n cancelRaf();\n });\n return [status, goNextStatus];\n});", "import { computed, shallowRef } from 'vue';\nexport default (stretch => {\n const targetSize = shallowRef({\n width: 0,\n height: 0\n });\n function measureStretch(element) {\n targetSize.value = {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n // Merge stretch style\n const style = computed(() => {\n const sizeStyle = {};\n if (stretch.value) {\n const {\n width,\n height\n } = targetSize.value;\n // Stretch with target\n if (stretch.value.indexOf('height') !== -1 && height) {\n sizeStyle.height = `${height}px`;\n } else if (stretch.value.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = `${height}px`;\n }\n if (stretch.value.indexOf('width') !== -1 && width) {\n sizeStyle.width = `${width}px`;\n } else if (stretch.value.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = `${width}px`;\n }\n }\n return sizeStyle;\n });\n return [style, measureStretch];\n});", "let vendorPrefix;\n\nconst jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-',\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0),\n };\n }\n return {\n x: 0,\n y: 0,\n };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n", "import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = Math.floor(box.left);\n y = Math.floor(box.top);\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n const style = elem.style;\n const left = style[LEFT];\n const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const off = offset[key] - originalOffset[key];\n if (key === dir) {\n ret[dir] = originalStyle[dir] + off;\n } else {\n ret[dir] = originalStyle[dir] - off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${which[i]}Width`;\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\nconst domUtils = {\n getParent(element) {\n let parent = element;\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n return parent;\n },\n};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[`scroll${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? Math.floor(elem.getBoundingClientRect().width)\n : Math.floor(elem.getBoundingClientRect().height);\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n mix,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n", "import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\n /*\n

\n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n", "import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n", "import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if (\n (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n (el !== body &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const pos = utils.offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = getOffsetParent(el);\n }\n\n // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let documentHeight = documentElement.scrollHeight;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n const bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n", "import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n", "import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let h;\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n const win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win),\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;\n", "/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y,\n };\n}\n\nexport default getAlignOffset;\n", "import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n };\n}\n\nexport default getElFuturePos;\n", "/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\n );\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n let n;\n if (/%$/.test(str)) {\n n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n", "import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n", "import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { filterEmpty } from './props-util';\nimport { cloneVNode, isVNode, Comment, Fragment, render as VueRender } from 'vue';\nimport warning from './warning';\nexport function cloneElement(vnode) {\n let nodeProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let mergeRef = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let ele = vnode;\n if (Array.isArray(vnode)) {\n ele = filterEmpty(vnode)[0];\n }\n if (!ele) {\n return null;\n }\n const node = cloneVNode(ele, nodeProps, mergeRef);\n // cloneVNode内部是合并属性,这里改成覆盖属性\n node.props = override ? _extends(_extends({}, node.props), nodeProps) : node.props;\n warning(typeof node.props.class !== 'object', 'class must be string');\n return node;\n}\nexport function cloneVNodes(vnodes) {\n let nodeProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return vnodes.map(vnode => cloneElement(vnode, nodeProps, override));\n}\nexport function deepCloneElement(vnode) {\n let nodeProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let mergeRef = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (Array.isArray(vnode)) {\n return vnode.map(item => deepCloneElement(item, nodeProps, override, mergeRef));\n } else {\n // 需要判断是否为vnode方可进行clone操作\n if (!isVNode(vnode)) {\n return vnode;\n }\n const cloned = cloneElement(vnode, nodeProps, override, mergeRef);\n if (Array.isArray(cloned.children)) {\n cloned.children = deepCloneElement(cloned.children);\n }\n return cloned;\n }\n}\nexport function triggerVNodeUpdate(vm, attrs, dom) {\n VueRender(cloneVNode(vm, _extends({}, attrs)), dom);\n}\nconst ensureValidVNode = slot => {\n return (slot || []).some(child => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children)) return false;\n return true;\n }) ? slot : null;\n};\nexport function customRenderSlot(slots, name, props, fallback) {\n var _a;\n const slot = (_a = slots[name]) === null || _a === void 0 ? void 0 : _a.call(slots, props);\n if (ensureValidVNode(slot)) {\n return slot;\n }\n return fallback === null || fallback === void 0 ? void 0 : fallback();\n}", "export default (element => {\n if (!element) {\n return false;\n }\n if (element.offsetParent) {\n return true;\n }\n if (element.getBBox) {\n const box = element.getBBox();\n if (box.width || box.height) {\n return true;\n }\n }\n if (element.getBoundingClientRect) {\n const box = element.getBoundingClientRect();\n if (box.width || box.height) {\n return true;\n }\n }\n return false;\n});", "import contains from '../vc-util/Dom/contains';\nimport ResizeObserver from 'resize-observer-polyfill';\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n let prevWidth = null;\n let prevHeight = null;\n function onResize(_ref) {\n let [{\n target\n }] = _ref;\n if (!document.documentElement.contains(target)) return;\n const {\n width,\n height\n } = target.getBoundingClientRect();\n const fixedWidth = Math.floor(width);\n const fixedHeight = Math.floor(height);\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(() => {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n const resizeObserver = new ResizeObserver(onResize);\n if (element) {\n resizeObserver.observe(element);\n }\n return () => {\n resizeObserver.disconnect();\n };\n}", "export default ((callback, buffer) => {\n let called = false;\n let timeout = null;\n function cancelTrigger() {\n clearTimeout(timeout);\n }\n function trigger(force) {\n if (!called || force === true) {\n if (callback() === false) {\n // Not delay since callback cancelled self\n return;\n }\n called = true;\n cancelTrigger();\n timeout = setTimeout(() => {\n called = false;\n }, buffer.value);\n } else {\n cancelTrigger();\n timeout = setTimeout(() => {\n called = false;\n trigger();\n }, buffer.value);\n }\n }\n return [trigger, () => {\n called = false;\n cancelTrigger();\n }];\n});", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import { nextTick, defineComponent, ref, computed, onMounted, onUpdated, watch, onUnmounted } from 'vue';\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport { cloneElement } from '../_util/vnode';\nimport isVisible from '../vc-util/Dom/isVisible';\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport useBuffer from './hooks/useBuffer';\nimport isEqual from 'lodash-es/isEqual';\nexport const alignProps = {\n align: Object,\n target: [Object, Function],\n onAlign: Function,\n monitorBufferTime: Number,\n monitorWindowResize: Boolean,\n disabled: Boolean\n};\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\nfunction getPoint(point) {\n if (typeof point !== 'object' || !point) return null;\n return point;\n}\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'Align',\n props: alignProps,\n emits: ['align'],\n setup(props, _ref) {\n let {\n expose,\n slots\n } = _ref;\n const cacheRef = ref({});\n const nodeRef = ref();\n const [forceAlign, cancelForceAlign] = useBuffer(() => {\n const {\n disabled: latestDisabled,\n target: latestTarget,\n align: latestAlign,\n onAlign: latestOnAlign\n } = props;\n if (!latestDisabled && latestTarget && nodeRef.value) {\n const source = nodeRef.value;\n let result;\n const element = getElement(latestTarget);\n const point = getPoint(latestTarget);\n cacheRef.value.element = element;\n cacheRef.value.point = point;\n cacheRef.value.align = latestAlign;\n // IE lose focus after element realign\n // We should record activeElement and restore later\n const {\n activeElement\n } = document;\n // We only align when element is visible\n if (element && isVisible(element)) {\n result = alignElement(source, element, latestAlign);\n } else if (point) {\n result = alignPoint(source, point, latestAlign);\n }\n restoreFocus(activeElement, source);\n if (latestOnAlign && result) {\n latestOnAlign(source, result);\n }\n return true;\n }\n return false;\n }, computed(() => props.monitorBufferTime));\n // ===================== Effect =====================\n // Listen for target updated\n const resizeMonitor = ref({\n cancel: () => {}\n });\n // Listen for source updated\n const sourceResizeMonitor = ref({\n cancel: () => {}\n });\n const goAlign = () => {\n const target = props.target;\n const element = getElement(target);\n const point = getPoint(target);\n if (nodeRef.value !== sourceResizeMonitor.value.element) {\n sourceResizeMonitor.value.cancel();\n sourceResizeMonitor.value.element = nodeRef.value;\n sourceResizeMonitor.value.cancel = monitorResize(nodeRef.value, forceAlign);\n }\n if (cacheRef.value.element !== element || !isSamePoint(cacheRef.value.point, point) || !isEqual(cacheRef.value.align, props.align)) {\n forceAlign();\n // Add resize observer\n if (resizeMonitor.value.element !== element) {\n resizeMonitor.value.cancel();\n resizeMonitor.value.element = element;\n resizeMonitor.value.cancel = monitorResize(element, forceAlign);\n }\n }\n };\n onMounted(() => {\n nextTick(() => {\n goAlign();\n });\n });\n onUpdated(() => {\n nextTick(() => {\n goAlign();\n });\n });\n // Listen for disabled change\n watch(() => props.disabled, disabled => {\n if (!disabled) {\n forceAlign();\n } else {\n cancelForceAlign();\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n // Listen for window resize\n const winResizeRef = ref(null);\n watch(() => props.monitorWindowResize, monitorWindowResize => {\n if (monitorWindowResize) {\n if (!winResizeRef.value) {\n winResizeRef.value = addEventListener(window, 'resize', forceAlign);\n }\n } else if (winResizeRef.value) {\n winResizeRef.value.remove();\n winResizeRef.value = null;\n }\n }, {\n flush: 'post'\n });\n onUnmounted(() => {\n resizeMonitor.value.cancel();\n sourceResizeMonitor.value.cancel();\n if (winResizeRef.value) winResizeRef.value.remove();\n cancelForceAlign();\n });\n expose({\n forceAlign: () => forceAlign(true)\n });\n return () => {\n const child = slots === null || slots === void 0 ? void 0 : slots.default();\n if (child) {\n return cloneElement(child[0], {\n ref: nodeRef\n }, true, true);\n }\n return null;\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { nextTick, Transition, TransitionGroup } from 'vue';\nimport { tuple } from './type';\nconst SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nconst getTransitionDirection = placement => {\n if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {\n return `slide-down`;\n }\n return `slide-up`;\n};\nexport const getTransitionProps = function (transitionName) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const transitionProps = transitionName ? _extends({\n name: transitionName,\n appear: true,\n // type: 'animation',\n // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,\n // appearActiveClass: `antdv-base-transtion`,\n // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,\n enterFromClass: `${transitionName}-enter ${transitionName}-enter-prepare ${transitionName}-enter-start`,\n enterActiveClass: `${transitionName}-enter ${transitionName}-enter-prepare`,\n enterToClass: `${transitionName}-enter ${transitionName}-enter-active`,\n leaveFromClass: ` ${transitionName}-leave`,\n leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`,\n leaveToClass: `${transitionName}-leave ${transitionName}-leave-active`\n }, opt) : _extends({\n css: false\n }, opt);\n return transitionProps;\n};\nexport const getTransitionGroupProps = function (transitionName) {\n let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const transitionProps = transitionName ? _extends({\n name: transitionName,\n appear: true,\n // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`,\n appearActiveClass: `${transitionName}`,\n appearToClass: `${transitionName}-appear ${transitionName}-appear-active`,\n enterFromClass: `${transitionName}-appear ${transitionName}-enter ${transitionName}-appear-prepare ${transitionName}-enter-prepare`,\n enterActiveClass: `${transitionName}`,\n enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`,\n leaveActiveClass: `${transitionName} ${transitionName}-leave`,\n leaveToClass: `${transitionName}-leave-active`\n }, opt) : _extends({\n css: false\n }, opt);\n return transitionProps;\n};\n// ================== Collapse Motion ==================\nconst getCollapsedHeight = () => ({\n height: 0,\n opacity: 0\n});\nconst getRealHeight = node => ({\n height: `${node.scrollHeight}px`,\n opacity: 1\n});\nconst getCurrentHeight = node => ({\n height: `${node.offsetHeight}px`\n});\nconst collapseMotion = function () {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'ant-motion-collapse';\n let style = arguments.length > 1 ? arguments[1] : undefined;\n let className = arguments.length > 2 ? arguments[2] : undefined;\n return {\n name,\n appear: true,\n css: true,\n onBeforeEnter: node => {\n className.value = name;\n style.value = getCollapsedHeight(node);\n },\n onEnter: node => {\n nextTick(() => {\n style.value = getRealHeight(node);\n });\n },\n onAfterEnter: () => {\n className.value = '';\n style.value = {};\n },\n onBeforeLeave: node => {\n className.value = name;\n style.value = getCurrentHeight(node);\n },\n onLeave: node => {\n setTimeout(() => {\n style.value = getCollapsedHeight(node);\n });\n },\n onAfterLeave: () => {\n className.value = '';\n style.value = {};\n }\n };\n};\nconst getTransitionName = (rootPrefixCls, motion, transitionName) => {\n if (transitionName !== undefined) {\n return transitionName;\n }\n return `${rootPrefixCls}-${motion}`;\n};\nexport { Transition, TransitionGroup, collapseMotion, getTransitionName, getTransitionDirection };\nexport default Transition;", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withDirectives as _withDirectives, resolveDirective as _resolveDirective, vShow as _vShow, createVNode as _createVNode } from \"vue\";\nimport useVisibleStatus from './useVisibleStatus';\nimport useStretchStyle from './useStretchStyle';\nimport { computed, defineComponent, shallowRef, toRef, Transition, watch, withModifiers } from 'vue';\nimport Align from '../../vc-align/Align';\nimport { getMotion } from '../utils/motionUtil';\nimport { flattenChildren } from '../../_util/props-util';\nimport classNames from '../../_util/classNames';\nimport { innerProps } from './interface';\nimport { getTransitionProps } from '../../_util/transition';\nimport supportsPassive from '../../_util/supportsPassive';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'PopupInner',\n inheritAttrs: false,\n props: innerProps,\n emits: ['mouseenter', 'mouseleave', 'mousedown', 'touchstart', 'align'],\n setup(props, _ref) {\n let {\n expose,\n attrs,\n slots\n } = _ref;\n const alignRef = shallowRef();\n const elementRef = shallowRef();\n const alignedClassName = shallowRef();\n // ======================= Measure ========================\n const [stretchStyle, measureStretchStyle] = useStretchStyle(toRef(props, 'stretch'));\n const doMeasure = () => {\n if (props.stretch) {\n measureStretchStyle(props.getRootDomNode());\n }\n };\n const visible = shallowRef(false);\n let timeoutId;\n watch(() => props.visible, val => {\n clearTimeout(timeoutId);\n if (val) {\n timeoutId = setTimeout(() => {\n visible.value = props.visible;\n });\n } else {\n visible.value = false;\n }\n }, {\n immediate: true\n });\n // ======================== Status ========================\n const [status, goNextStatus] = useVisibleStatus(visible, doMeasure);\n // ======================== Aligns ========================\n const prepareResolveRef = shallowRef();\n // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n const getAlignTarget = () => {\n if (props.point) {\n return props.point;\n }\n return props.getRootDomNode;\n };\n const forceAlign = () => {\n var _a;\n (_a = alignRef.value) === null || _a === void 0 ? void 0 : _a.forceAlign();\n };\n const onInternalAlign = (popupDomNode, matchAlign) => {\n var _a;\n const nextAlignedClassName = props.getClassNameFromAlign(matchAlign);\n const preAlignedClassName = alignedClassName.value;\n if (alignedClassName.value !== nextAlignedClassName) {\n alignedClassName.value = nextAlignedClassName;\n }\n if (status.value === 'align') {\n // Repeat until not more align needed\n if (preAlignedClassName !== nextAlignedClassName) {\n Promise.resolve().then(() => {\n forceAlign();\n });\n } else {\n goNextStatus(() => {\n var _a;\n (_a = prepareResolveRef.value) === null || _a === void 0 ? void 0 : _a.call(prepareResolveRef);\n });\n }\n (_a = props.onAlign) === null || _a === void 0 ? void 0 : _a.call(props, popupDomNode, matchAlign);\n }\n };\n // ======================== Motion ========================\n const motion = computed(() => {\n const m = typeof props.animation === 'object' ? props.animation : getMotion(props);\n ['onAfterEnter', 'onAfterLeave'].forEach(eventName => {\n const originFn = m[eventName];\n m[eventName] = node => {\n goNextStatus();\n // 结束后,强制 stable\n status.value = 'stable';\n originFn === null || originFn === void 0 ? void 0 : originFn(node);\n };\n });\n return m;\n });\n const onShowPrepare = () => {\n return new Promise(resolve => {\n prepareResolveRef.value = resolve;\n });\n };\n watch([motion, status], () => {\n if (!motion.value && status.value === 'motion') {\n goNextStatus();\n }\n }, {\n immediate: true\n });\n expose({\n forceAlign,\n getElement: () => {\n return elementRef.value.$el || elementRef.value;\n }\n });\n const alignDisabled = computed(() => {\n var _a;\n if (((_a = props.align) === null || _a === void 0 ? void 0 : _a.points) && (status.value === 'align' || status.value === 'stable')) {\n return false;\n }\n return true;\n });\n return () => {\n var _a;\n const {\n zIndex,\n align,\n prefixCls,\n destroyPopupOnHide,\n onMouseenter,\n onMouseleave,\n onTouchstart = () => {},\n onMousedown\n } = props;\n const statusValue = status.value;\n // ======================== Render ========================\n const mergedStyle = [_extends(_extends({}, stretchStyle.value), {\n zIndex,\n opacity: statusValue === 'motion' || statusValue === 'stable' || !visible.value ? null : 0,\n // pointerEvents: statusValue === 'stable' ? null : 'none',\n pointerEvents: !visible.value && statusValue !== 'stable' ? 'none' : null\n }), attrs.style];\n let childNode = flattenChildren((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots, {\n visible: props.visible\n }));\n // Wrapper when multiple children\n if (childNode.length > 1) {\n const _childNode = function () {\n return childNode;\n }();\n childNode = _createVNode(\"div\", {\n \"class\": `${prefixCls}-content`\n }, [childNode]);\n }\n const mergedClassName = classNames(prefixCls, attrs.class, alignedClassName.value);\n const hasAnimate = visible.value || !props.visible;\n const transitionProps = hasAnimate ? getTransitionProps(motion.value.name, motion.value) : {};\n return _createVNode(Transition, _objectSpread(_objectSpread({\n \"ref\": elementRef\n }, transitionProps), {}, {\n \"onBeforeEnter\": onShowPrepare\n }), {\n default: () => {\n return !destroyPopupOnHide || props.visible ? _withDirectives(_createVNode(Align, {\n \"target\": getAlignTarget(),\n \"key\": \"popup\",\n \"ref\": alignRef,\n \"monitorWindowResize\": true,\n \"disabled\": alignDisabled.value,\n \"align\": align,\n \"onAlign\": onInternalAlign\n }, {\n default: () => _createVNode(\"div\", {\n \"class\": mergedClassName,\n \"onMouseenter\": onMouseenter,\n \"onMouseleave\": onMouseleave,\n \"onMousedown\": withModifiers(onMousedown, ['capture']),\n [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: withModifiers(onTouchstart, ['capture']),\n \"style\": mergedStyle\n }, [childNode])\n }), [[_vShow, visible.value]]) : null;\n }\n });\n };\n }\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport { defineComponent, shallowRef, watch } from 'vue';\nimport { popupProps } from './interface';\nimport Mask from './Mask';\nimport MobilePopupInner from './MobilePopupInner';\nimport PopupInner from './PopupInner';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'Popup',\n inheritAttrs: false,\n props: popupProps,\n setup(props, _ref) {\n let {\n attrs,\n slots,\n expose\n } = _ref;\n const innerVisible = shallowRef(false);\n const inMobile = shallowRef(false);\n const popupRef = shallowRef();\n const rootRef = shallowRef();\n watch([() => props.visible, () => props.mobile], () => {\n innerVisible.value = props.visible;\n if (props.visible && props.mobile) {\n inMobile.value = true;\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n expose({\n forceAlign: () => {\n var _a;\n (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.forceAlign();\n },\n getElement: () => {\n var _a;\n return (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.getElement();\n }\n });\n return () => {\n const cloneProps = _extends(_extends(_extends({}, props), attrs), {\n visible: innerVisible.value\n });\n const popupNode = inMobile.value ? _createVNode(MobilePopupInner, _objectSpread(_objectSpread({}, cloneProps), {}, {\n \"mobile\": props.mobile,\n \"ref\": popupRef\n }), {\n default: slots.default\n }) : _createVNode(PopupInner, _objectSpread(_objectSpread({}, cloneProps), {}, {\n \"ref\": popupRef\n }), {\n default: slots.default\n });\n return _createVNode(\"div\", {\n \"ref\": rootRef\n }, [_createVNode(Mask, cloneProps, null), popupNode]);\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n const baseAlign = builtinPlacements[placementStr] || {};\n return _extends(_extends({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n const {\n points\n } = align;\n const placements = Object.keys(builtinPlacements);\n for (let i = 0; i < placements.length; i += 1) {\n const placement = placements[i];\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return `${prefixCls}-placement-${placement}`;\n }\n }\n return '';\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { nextTick } from 'vue';\nimport { getOptionProps } from './props-util';\nexport default {\n methods: {\n setState() {\n let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n let newState = typeof state === 'function' ? state(this.$data, this.$props) : state;\n if (this.getDerivedStateFromProps) {\n const s = this.getDerivedStateFromProps(getOptionProps(this), _extends(_extends({}, this.$data), newState));\n if (s === null) {\n return;\n } else {\n newState = _extends(_extends({}, newState), s || {});\n }\n }\n _extends(this.$data, newState);\n if (this._.isMounted) {\n this.$forceUpdate();\n }\n nextTick(() => {\n callback && callback();\n });\n },\n __emit() {\n // 直接调用事件,底层组件不需要vueTool记录events\n // eslint-disable-next-line prefer-rest-params\n const args = [].slice.call(arguments, 0);\n let eventName = args[0];\n eventName = `on${eventName[0].toUpperCase()}${eventName.substring(1)}`;\n const event = this.$props[eventName] || this.$attrs[eventName];\n if (args.length && event) {\n if (Array.isArray(event)) {\n for (let i = 0, l = event.length; i < l; i++) {\n event[i](...args.slice(1));\n }\n } else {\n event(...args.slice(1));\n }\n }\n }\n }\n};", "import { computed, inject, provide } from 'vue';\nconst PortalContextKey = Symbol('PortalContextKey');\nexport const useProvidePortal = function (instance) {\n let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n inTriggerContext: true\n };\n provide(PortalContextKey, {\n inTriggerContext: config.inTriggerContext,\n shouldRender: computed(() => {\n const {\n sPopupVisible,\n popupRef,\n forceRender,\n autoDestroy\n } = instance || {};\n // if (popPortal) return true;\n let shouldRender = false;\n if (sPopupVisible || popupRef || forceRender) {\n shouldRender = true;\n }\n if (!sPopupVisible && autoDestroy) {\n shouldRender = false;\n }\n return shouldRender;\n })\n });\n};\nexport const useInjectPortal = () => {\n useProvidePortal({}, {\n inTriggerContext: false\n });\n const portalContext = inject(PortalContextKey, {\n shouldRender: computed(() => false),\n inTriggerContext: false\n });\n return {\n shouldRender: computed(() => portalContext.shouldRender.value || portalContext.inTriggerContext === false)\n };\n};", "import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport PropTypes from './vue-types';\nimport { defineComponent, nextTick, onBeforeMount, onMounted, onUpdated, Teleport, watch } from 'vue';\nimport { useInjectPortal } from '../vc-trigger/context';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'Portal',\n inheritAttrs: false,\n props: {\n getContainer: PropTypes.func.isRequired,\n didUpdate: Function\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n let isSSR = true;\n // getContainer 不会改变,不用响应式\n let container;\n const {\n shouldRender\n } = useInjectPortal();\n function setContainer() {\n if (shouldRender.value) {\n container = props.getContainer();\n }\n }\n onBeforeMount(() => {\n isSSR = false;\n // drawer\n setContainer();\n });\n onMounted(() => {\n if (container) return;\n // https://github.com/vueComponent/ant-design-vue/issues/6937\n setContainer();\n });\n const stopWatch = watch(shouldRender, () => {\n if (shouldRender.value && !container) {\n container = props.getContainer();\n }\n if (container) {\n stopWatch();\n }\n });\n onUpdated(() => {\n nextTick(() => {\n var _a;\n if (shouldRender.value) {\n (_a = props.didUpdate) === null || _a === void 0 ? void 0 : _a.call(props, props);\n }\n });\n });\n // onBeforeUnmount(() => {\n // if (container && container.parentNode) {\n // container.parentNode.removeChild(container);\n // }\n // });\n return () => {\n var _a;\n if (!shouldRender.value) return null;\n if (isSSR) {\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n }\n return container ? _createVNode(Teleport, {\n \"to\": container\n }, slots) : null;\n };\n }\n});", "/* eslint-disable no-param-reassign */\nlet cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n const inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n const outer = document.createElement('div');\n const outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = '0';\n outerStyle.left = '0';\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n const widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n let widthScroll = inner.offsetWidth;\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n return cached;\n}\nfunction ensureSize(str) {\n const match = str.match(/^(.*)px$/);\n const value = Number(match === null || match === void 0 ? void 0 : match[1]);\n return Number.isNaN(value) ? getScrollBarSize() : value;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n const {\n width,\n height\n } = getComputedStyle(target, '::-webkit-scrollbar');\n return {\n width: ensureSize(width),\n height: ensureSize(height)\n };\n}", "import { computed, watchEffect } from 'vue';\nimport { updateCSS, removeCSS } from '../../vc-util/Dom/dynamicCSS';\nimport getScrollBarSize from '../../_util/getScrollBarSize';\nimport canUseDom from '../../_util/canUseDom';\nconst UNIQUE_ID = `vc-util-locker-${Date.now()}`;\nlet uuid = 0;\n/**../vc-util/Dom/dynam\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}\nexport default function useScrollLocker(lock) {\n const mergedLock = computed(() => !!lock && !!lock.value);\n uuid += 1;\n const id = `${UNIQUE_ID}_${uuid}`;\n watchEffect(onClear => {\n if (!canUseDom()) {\n return;\n }\n if (mergedLock.value) {\n const scrollbarSize = getScrollBarSize();\n const isOverflow = isBodyOverflowing();\n updateCSS(`\nhtml body {\n overflow-y: hidden;\n ${isOverflow ? `width: calc(100% - ${scrollbarSize}px);` : ''}\n}`, id);\n } else {\n removeCSS(id);\n }\n onClear(() => {\n removeCSS(id);\n });\n }, {\n flush: 'post'\n });\n}", "import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport PropTypes from './vue-types';\nimport Portal from './Portal';\nimport { defineComponent, shallowRef, watch, onMounted, onBeforeUnmount, onUpdated, nextTick, computed } from 'vue';\nimport canUseDom from './canUseDom';\nimport raf from './raf';\nimport { booleanType } from './type';\nimport useScrollLocker from './hooks/useScrollLocker';\nlet openCount = 0;\nconst supportDom = canUseDom();\n/** @private Test usage only */\nexport function getOpenCount() {\n return process.env.NODE_ENV === 'test' ? openCount : 0;\n}\nconst getParent = getContainer => {\n if (!supportDom) {\n return null;\n }\n if (getContainer) {\n if (typeof getContainer === 'string') {\n return document.querySelectorAll(getContainer)[0];\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n if (typeof getContainer === 'object' && getContainer instanceof window.HTMLElement) {\n return getContainer;\n }\n }\n return document.body;\n};\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'PortalWrapper',\n inheritAttrs: false,\n props: {\n wrapperClassName: String,\n forceRender: {\n type: Boolean,\n default: undefined\n },\n getContainer: PropTypes.any,\n visible: {\n type: Boolean,\n default: undefined\n },\n autoLock: booleanType(),\n didUpdate: Function\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const container = shallowRef();\n const componentRef = shallowRef();\n const rafId = shallowRef();\n const triggerUpdate = shallowRef(1);\n const defaultContainer = canUseDom() && document.createElement('div');\n const removeCurrentContainer = () => {\n var _a, _b;\n // Portal will remove from `parentNode`.\n // Let's handle this again to avoid refactor issue.\n if (container.value === defaultContainer) {\n (_b = (_a = container.value) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(container.value);\n }\n container.value = null;\n };\n let parent = null;\n const attachToParent = function () {\n let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (force || container.value && !container.value.parentNode) {\n parent = getParent(props.getContainer);\n if (parent) {\n parent.appendChild(container.value);\n return true;\n }\n return false;\n }\n return true;\n };\n const getContainer = () => {\n if (!supportDom) {\n return null;\n }\n if (!container.value) {\n container.value = defaultContainer;\n attachToParent(true);\n }\n setWrapperClassName();\n return container.value;\n };\n const setWrapperClassName = () => {\n const {\n wrapperClassName\n } = props;\n if (container.value && wrapperClassName && wrapperClassName !== container.value.className) {\n container.value.className = wrapperClassName;\n }\n };\n onUpdated(() => {\n setWrapperClassName();\n attachToParent();\n });\n useScrollLocker(computed(() => {\n return props.autoLock && props.visible && canUseDom() && (container.value === document.body || container.value === defaultContainer);\n }));\n onMounted(() => {\n let init = false;\n watch([() => props.visible, () => props.getContainer], (_ref2, _ref3) => {\n let [visible, getContainer] = _ref2;\n let [prevVisible, prevGetContainer] = _ref3;\n // Update count\n if (supportDom) {\n parent = getParent(props.getContainer);\n if (parent === document.body) {\n if (visible && !prevVisible) {\n openCount += 1;\n } else if (init) {\n openCount -= 1;\n }\n }\n }\n if (init) {\n // Clean up container if needed\n const getContainerIsFunc = typeof getContainer === 'function' && typeof prevGetContainer === 'function';\n if (getContainerIsFunc ? getContainer.toString() !== prevGetContainer.toString() : getContainer !== prevGetContainer) {\n removeCurrentContainer();\n }\n }\n init = true;\n }, {\n immediate: true,\n flush: 'post'\n });\n nextTick(() => {\n if (!attachToParent()) {\n rafId.value = raf(() => {\n triggerUpdate.value += 1;\n });\n }\n });\n });\n onBeforeUnmount(() => {\n const {\n visible\n } = props;\n if (supportDom && parent === document.body) {\n // 离开时不会 render, 导到离开时数值不变,改用 func 。。\n openCount = visible && openCount ? openCount - 1 : openCount;\n }\n removeCurrentContainer();\n raf.cancel(rafId.value);\n });\n return () => {\n const {\n forceRender,\n visible\n } = props;\n let portal = null;\n const childProps = {\n getOpenCount: () => openCount,\n getContainer\n };\n if (triggerUpdate.value && (forceRender || visible || componentRef.value)) {\n portal = _createVNode(Portal, {\n \"getContainer\": getContainer,\n \"ref\": componentRef,\n \"didUpdate\": props.didUpdate\n }, {\n default: () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots, childProps);\n }\n });\n }\n return portal;\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { Fragment as _Fragment, createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\nimport { computed, defineComponent, inject, provide, shallowRef } from 'vue';\nimport { triggerProps, noop } from './interface';\nimport contains from '../vc-util/Dom/contains';\nimport raf from '../_util/raf';\nimport { hasProp, getComponent, getEvents, filterEmpty, getSlot, findDOMNode } from '../_util/props-util';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport Popup from './Popup';\nimport { getAlignFromPlacement, getAlignPopupClassName } from './utils/alignUtil';\nimport BaseMixin from '../_util/BaseMixin';\nimport Portal from '../_util/PortalWrapper';\nimport classNames from '../_util/classNames';\nimport { cloneElement } from '../_util/vnode';\nimport supportsPassive from '../_util/supportsPassive';\nimport { useProvidePortal } from './context';\nconst ALL_HANDLERS = ['onClick', 'onMousedown', 'onTouchstart', 'onMouseenter', 'onMouseleave', 'onFocus', 'onBlur', 'onContextmenu'];\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'Trigger',\n mixins: [BaseMixin],\n inheritAttrs: false,\n props: triggerProps(),\n setup(props) {\n const align = computed(() => {\n const {\n popupPlacement,\n popupAlign,\n builtinPlacements\n } = props;\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n });\n const popupRef = shallowRef(null);\n const setPopupRef = val => {\n popupRef.value = val;\n };\n return {\n vcTriggerContext: inject('vcTriggerContext', {}),\n popupRef,\n setPopupRef,\n triggerRef: shallowRef(null),\n align,\n focusTime: null,\n clickOutsideHandler: null,\n contextmenuOutsideHandler1: null,\n contextmenuOutsideHandler2: null,\n touchOutsideHandler: null,\n attachId: null,\n delayTimer: null,\n hasPopupMouseDown: false,\n preClickTime: null,\n preTouchTime: null,\n mouseDownTimeout: null,\n childOriginEvents: {}\n };\n },\n data() {\n const props = this.$props;\n let popupVisible;\n if (this.popupVisible !== undefined) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n ALL_HANDLERS.forEach(h => {\n this[`fire${h}`] = e => {\n this.fireEvents(h, e);\n };\n });\n return {\n prevPopupVisible: popupVisible,\n sPopupVisible: popupVisible,\n point: null\n };\n },\n watch: {\n popupVisible(val) {\n if (val !== undefined) {\n this.prevPopupVisible = this.sPopupVisible;\n this.sPopupVisible = val;\n }\n }\n },\n created() {\n provide('vcTriggerContext', {\n onPopupMouseDown: this.onPopupMouseDown,\n onPopupMouseenter: this.onPopupMouseenter,\n onPopupMouseleave: this.onPopupMouseleave\n });\n useProvidePortal(this);\n },\n deactivated() {\n this.setPopupVisible(false);\n },\n mounted() {\n this.$nextTick(() => {\n this.updatedCal();\n });\n },\n updated() {\n this.$nextTick(() => {\n this.updatedCal();\n });\n },\n beforeUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n },\n methods: {\n updatedCal() {\n const props = this.$props;\n const state = this.$data;\n // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n if (state.sPopupVisible) {\n let currentDocument;\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextmenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n }\n // always hide on mobile\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick, supportsPassive ? {\n passive: false\n } : false);\n }\n // close popup when trigger type contains 'onContextmenu' and document is scrolling.\n if (!this.contextmenuOutsideHandler1 && this.isContextmenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextmenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextmenuClose);\n }\n // close popup when trigger type contains 'onContextmenu' and window is blur.\n if (!this.contextmenuOutsideHandler2 && this.isContextmenuToShow()) {\n this.contextmenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextmenuClose);\n }\n } else {\n this.clearOutsideHandler();\n }\n },\n onMouseenter(e) {\n const {\n mouseEnterDelay\n } = this.$props;\n this.fireEvents('onMouseenter', e);\n this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n },\n onMouseMove(e) {\n this.fireEvents('onMousemove', e);\n this.setPoint(e);\n },\n onMouseleave(e) {\n this.fireEvents('onMouseleave', e);\n this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n },\n onPopupMouseenter() {\n const {\n vcTriggerContext = {}\n } = this;\n if (vcTriggerContext.onPopupMouseenter) {\n vcTriggerContext.onPopupMouseenter();\n }\n this.clearDelayTimer();\n },\n onPopupMouseleave(e) {\n var _a;\n if (e && e.relatedTarget && !e.relatedTarget.setTimeout && contains((_a = this.popupRef) === null || _a === void 0 ? void 0 : _a.getElement(), e.relatedTarget)) {\n return;\n }\n if (this.isMouseLeaveToHide()) {\n this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n }\n const {\n vcTriggerContext = {}\n } = this;\n if (vcTriggerContext.onPopupMouseleave) {\n vcTriggerContext.onPopupMouseleave(e);\n }\n },\n onFocus(e) {\n this.fireEvents('onFocus', e);\n // incase focusin and focusout\n this.clearDelayTimer();\n if (this.isFocusToShow()) {\n this.focusTime = Date.now();\n this.delaySetPopupVisible(true, this.$props.focusDelay);\n }\n },\n onMousedown(e) {\n this.fireEvents('onMousedown', e);\n this.preClickTime = Date.now();\n },\n onTouchstart(e) {\n this.fireEvents('onTouchstart', e);\n this.preTouchTime = Date.now();\n },\n onBlur(e) {\n if (!contains(e.target, e.relatedTarget || document.activeElement)) {\n this.fireEvents('onBlur', e);\n this.clearDelayTimer();\n if (this.isBlurToHide()) {\n this.delaySetPopupVisible(false, this.$props.blurDelay);\n }\n }\n },\n onContextmenu(e) {\n e.preventDefault();\n this.fireEvents('onContextmenu', e);\n this.setPopupVisible(true, e);\n },\n onContextmenuClose() {\n if (this.isContextmenuToShow()) {\n this.close();\n }\n },\n onClick(event) {\n this.fireEvents('onClick', event);\n // focus will trigger click\n if (this.focusTime) {\n let preTime;\n if (this.preClickTime && this.preTouchTime) {\n preTime = Math.min(this.preClickTime, this.preTouchTime);\n } else if (this.preClickTime) {\n preTime = this.preClickTime;\n } else if (this.preTouchTime) {\n preTime = this.preTouchTime;\n }\n if (Math.abs(preTime - this.focusTime) < 20) {\n return;\n }\n this.focusTime = 0;\n }\n this.preClickTime = 0;\n this.preTouchTime = 0;\n // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n if (this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n if (event && event.domEvent) {\n event.domEvent.preventDefault();\n }\n const nextVisible = !this.$data.sPopupVisible;\n if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) {\n this.setPopupVisible(!this.$data.sPopupVisible, event);\n }\n },\n onPopupMouseDown() {\n const {\n vcTriggerContext = {}\n } = this;\n this.hasPopupMouseDown = true;\n clearTimeout(this.mouseDownTimeout);\n this.mouseDownTimeout = setTimeout(() => {\n this.hasPopupMouseDown = false;\n }, 0);\n if (vcTriggerContext.onPopupMouseDown) {\n vcTriggerContext.onPopupMouseDown(...arguments);\n }\n },\n onDocumentClick(event) {\n if (this.$props.mask && !this.$props.maskClosable) {\n return;\n }\n const target = event.target;\n const root = this.getRootDomNode();\n const popupNode = this.getPopupDomNode();\n if (\n // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || this.isContextMenuOnly()) && !contains(popupNode, target) && !this.hasPopupMouseDown) {\n // https://github.com/vuejs/core/issues/4462\n // vue 动画bug导致 https://github.com/vueComponent/ant-design-vue/issues/5259,\n // 改成延时解决\n this.delaySetPopupVisible(false, 0.1);\n }\n },\n getPopupDomNode() {\n var _a;\n // for test\n return ((_a = this.popupRef) === null || _a === void 0 ? void 0 : _a.getElement()) || null;\n },\n getRootDomNode() {\n var _a, _b, _c, _d;\n const {\n getTriggerDOMNode\n } = this.$props;\n if (getTriggerDOMNode) {\n const domNode = ((_b = (_a = this.triggerRef) === null || _a === void 0 ? void 0 : _a.$el) === null || _b === void 0 ? void 0 : _b.nodeName) === '#comment' ? null : findDOMNode(this.triggerRef);\n return findDOMNode(getTriggerDOMNode(domNode));\n }\n try {\n const domNode = ((_d = (_c = this.triggerRef) === null || _c === void 0 ? void 0 : _c.$el) === null || _d === void 0 ? void 0 : _d.nodeName) === '#comment' ? null : findDOMNode(this.triggerRef);\n if (domNode) {\n return domNode;\n }\n } catch (err) {\n // Do nothing\n }\n return findDOMNode(this);\n },\n handleGetPopupClassFromAlign(align) {\n const className = [];\n const props = this.$props;\n const {\n popupPlacement,\n builtinPlacements,\n prefixCls,\n alignPoint,\n getPopupClassNameFromAlign\n } = props;\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n return className.join(' ');\n },\n getPopupAlign() {\n const props = this.$props;\n const {\n popupPlacement,\n popupAlign,\n builtinPlacements\n } = props;\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n },\n getComponent() {\n const mouseProps = {};\n if (this.isMouseEnterToShow()) {\n mouseProps.onMouseenter = this.onPopupMouseenter;\n }\n if (this.isMouseLeaveToHide()) {\n mouseProps.onMouseleave = this.onPopupMouseleave;\n }\n mouseProps.onMousedown = this.onPopupMouseDown;\n mouseProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] = this.onPopupMouseDown;\n const {\n handleGetPopupClassFromAlign,\n getRootDomNode,\n $attrs\n } = this;\n const {\n prefixCls,\n destroyPopupOnHide,\n popupClassName,\n popupAnimation,\n popupTransitionName,\n popupStyle,\n mask,\n maskAnimation,\n maskTransitionName,\n zIndex,\n stretch,\n alignPoint,\n mobile,\n forceRender\n } = this.$props;\n const {\n sPopupVisible,\n point\n } = this.$data;\n const popupProps = _extends(_extends({\n prefixCls,\n destroyPopupOnHide,\n visible: sPopupVisible,\n point: alignPoint ? point : null,\n align: this.align,\n animation: popupAnimation,\n getClassNameFromAlign: handleGetPopupClassFromAlign,\n stretch,\n getRootDomNode,\n mask,\n zIndex,\n transitionName: popupTransitionName,\n maskAnimation,\n maskTransitionName,\n class: popupClassName,\n style: popupStyle,\n onAlign: $attrs.onPopupAlign || noop\n }, mouseProps), {\n ref: this.setPopupRef,\n mobile,\n forceRender\n });\n return _createVNode(Popup, popupProps, {\n default: this.$slots.popup || (() => getComponent(this, 'popup'))\n });\n },\n attachParent(popupContainer) {\n raf.cancel(this.attachId);\n const {\n getPopupContainer,\n getDocument\n } = this.$props;\n const domNode = this.getRootDomNode();\n let mountNode;\n if (!getPopupContainer) {\n mountNode = getDocument(this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n this.attachId = raf(() => {\n this.attachParent(popupContainer);\n });\n }\n },\n getContainer() {\n const {\n $props: props\n } = this;\n const {\n getDocument\n } = props;\n const popupContainer = getDocument(this.getRootDomNode()).createElement('div');\n // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n this.attachParent(popupContainer);\n return popupContainer;\n },\n setPopupVisible(sPopupVisible, event) {\n const {\n alignPoint,\n sPopupVisible: prevPopupVisible,\n onPopupVisibleChange\n } = this;\n this.clearDelayTimer();\n if (prevPopupVisible !== sPopupVisible) {\n if (!hasProp(this, 'popupVisible')) {\n this.setState({\n sPopupVisible,\n prevPopupVisible\n });\n }\n onPopupVisibleChange && onPopupVisibleChange(sPopupVisible);\n }\n // Always record the point position since mouseEnterDelay will delay the show\n if (alignPoint && event && sPopupVisible) {\n this.setPoint(event);\n }\n },\n setPoint(point) {\n const {\n alignPoint\n } = this.$props;\n if (!alignPoint || !point) return;\n this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n },\n handlePortalUpdate() {\n if (this.prevPopupVisible !== this.sPopupVisible) {\n this.afterPopupVisibleChange(this.sPopupVisible);\n }\n },\n delaySetPopupVisible(visible, delayS, event) {\n const delay = delayS * 1000;\n this.clearDelayTimer();\n if (delay) {\n const point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = setTimeout(() => {\n this.setPopupVisible(visible, point);\n this.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n },\n clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n },\n clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n if (this.contextmenuOutsideHandler1) {\n this.contextmenuOutsideHandler1.remove();\n this.contextmenuOutsideHandler1 = null;\n }\n if (this.contextmenuOutsideHandler2) {\n this.contextmenuOutsideHandler2.remove();\n this.contextmenuOutsideHandler2 = null;\n }\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n },\n createTwoChains(event) {\n let fn = () => {};\n const events = getEvents(this);\n if (this.childOriginEvents[event] && events[event]) {\n return this[`fire${event}`];\n }\n fn = this.childOriginEvents[event] || events[event] || fn;\n return fn;\n },\n isClickToShow() {\n const {\n action,\n showAction\n } = this.$props;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n },\n isContextMenuOnly() {\n const {\n action\n } = this.$props;\n return action === 'contextmenu' || action.length === 1 && action[0] === 'contextmenu';\n },\n isContextmenuToShow() {\n const {\n action,\n showAction\n } = this.$props;\n return action.indexOf('contextmenu') !== -1 || showAction.indexOf('contextmenu') !== -1;\n },\n isClickToHide() {\n const {\n action,\n hideAction\n } = this.$props;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n },\n isMouseEnterToShow() {\n const {\n action,\n showAction\n } = this.$props;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseenter') !== -1;\n },\n isMouseLeaveToHide() {\n const {\n action,\n hideAction\n } = this.$props;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseleave') !== -1;\n },\n isFocusToShow() {\n const {\n action,\n showAction\n } = this.$props;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n },\n isBlurToHide() {\n const {\n action,\n hideAction\n } = this.$props;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n },\n forcePopupAlign() {\n var _a;\n if (this.$data.sPopupVisible) {\n (_a = this.popupRef) === null || _a === void 0 ? void 0 : _a.forceAlign();\n }\n },\n fireEvents(type, e) {\n if (this.childOriginEvents[type]) {\n this.childOriginEvents[type](e);\n }\n const event = this.$props[type] || this.$attrs[type];\n if (event) {\n event(e);\n }\n },\n close() {\n this.setPopupVisible(false);\n }\n },\n render() {\n const {\n $attrs\n } = this;\n const children = filterEmpty(getSlot(this));\n const {\n alignPoint,\n getPopupContainer\n } = this.$props;\n const child = children[0];\n this.childOriginEvents = getEvents(child);\n const newChildProps = {\n key: 'trigger'\n };\n if (this.isContextmenuToShow()) {\n newChildProps.onContextmenu = this.onContextmenu;\n } else {\n newChildProps.onContextmenu = this.createTwoChains('onContextmenu');\n }\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMousedown = this.onMousedown;\n newChildProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] = this.onTouchstart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMousedown = this.createTwoChains('onMousedown');\n newChildProps[supportsPassive ? 'onTouchstartPassive' : 'onTouchstart'] = this.createTwoChains('onTouchstart');\n }\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseenter = this.onMouseenter;\n if (alignPoint) {\n newChildProps.onMousemove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseenter = this.createTwoChains('onMouseenter');\n }\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseleave = this.onMouseleave;\n } else {\n newChildProps.onMouseleave = this.createTwoChains('onMouseleave');\n }\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = e => {\n if (e && (!e.relatedTarget || !contains(e.target, e.relatedTarget))) {\n this.createTwoChains('onBlur')(e);\n }\n };\n }\n const childrenClassName = classNames(child && child.props && child.props.class, $attrs.class);\n if (childrenClassName) {\n newChildProps.class = childrenClassName;\n }\n const trigger = cloneElement(child, _extends(_extends({}, newChildProps), {\n ref: 'triggerRef'\n }), true, true);\n const portal = _createVNode(Portal, {\n \"key\": \"portal\",\n \"getContainer\": getPopupContainer && (() => getPopupContainer(this.getRootDomNode())),\n \"didUpdate\": this.handlePortalUpdate,\n \"visible\": this.$data.sPopupVisible\n }, {\n default: this.getComponent\n });\n return _createVNode(_Fragment, null, [trigger, portal]);\n }\n});", "// based on rc-trigger 5.2.10\nimport Trigger from './Trigger';\nimport { triggerProps } from './interface';\nexport { triggerProps };\nexport default Trigger;", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport Trigger from '../vc-trigger';\nimport PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport { computed, ref, defineComponent } from 'vue';\nconst getBuiltInPlacements = dropdownMatchSelectWidth => {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n const adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX,\n adjustY: 1\n }\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX,\n adjustY: 1\n }\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX,\n adjustY: 1\n }\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX,\n adjustY: 1\n }\n }\n };\n};\nconst SelectTrigger = defineComponent({\n name: 'SelectTrigger',\n inheritAttrs: false,\n props: {\n dropdownAlign: Object,\n visible: {\n type: Boolean,\n default: undefined\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n dropdownClassName: String,\n dropdownStyle: PropTypes.object,\n placement: String,\n empty: {\n type: Boolean,\n default: undefined\n },\n prefixCls: String,\n popupClassName: String,\n animation: String,\n transitionName: String,\n getPopupContainer: Function,\n dropdownRender: Function,\n containerWidth: Number,\n dropdownMatchSelectWidth: PropTypes.oneOfType([Number, Boolean]).def(true),\n popupElement: PropTypes.any,\n direction: String,\n getTriggerDOMNode: Function,\n onPopupVisibleChange: Function,\n onPopupMouseEnter: Function,\n onPopupFocusin: Function,\n onPopupFocusout: Function\n },\n setup(props, _ref) {\n let {\n slots,\n attrs,\n expose\n } = _ref;\n const builtInPlacements = computed(() => {\n const {\n dropdownMatchSelectWidth\n } = props;\n return getBuiltInPlacements(dropdownMatchSelectWidth);\n });\n const popupRef = ref();\n expose({\n getPopupElement: () => {\n return popupRef.value;\n }\n });\n return () => {\n const _a = _extends(_extends({}, props), attrs),\n {\n empty = false\n } = _a,\n restProps = __rest(_a, [\"empty\"]);\n const {\n visible,\n dropdownAlign,\n prefixCls,\n popupElement,\n dropdownClassName,\n dropdownStyle,\n direction = 'ltr',\n placement,\n dropdownMatchSelectWidth,\n containerWidth,\n dropdownRender,\n animation,\n transitionName,\n getPopupContainer,\n getTriggerDOMNode,\n onPopupVisibleChange,\n onPopupMouseEnter,\n onPopupFocusin,\n onPopupFocusout\n } = restProps;\n const dropdownPrefixCls = `${prefixCls}-dropdown`;\n let popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender({\n menuNode: popupElement,\n props\n });\n }\n const mergedTransitionName = animation ? `${dropdownPrefixCls}-${animation}` : transitionName;\n const popupStyle = _extends({\n minWidth: `${containerWidth}px`\n }, dropdownStyle);\n if (typeof dropdownMatchSelectWidth === 'number') {\n popupStyle.width = `${dropdownMatchSelectWidth}px`;\n } else if (dropdownMatchSelectWidth) {\n popupStyle.width = `${containerWidth}px`;\n }\n return _createVNode(Trigger, _objectSpread(_objectSpread({}, props), {}, {\n \"showAction\": onPopupVisibleChange ? ['click'] : [],\n \"hideAction\": onPopupVisibleChange ? ['click'] : [],\n \"popupPlacement\": placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n \"builtinPlacements\": builtInPlacements.value,\n \"prefixCls\": dropdownPrefixCls,\n \"popupTransitionName\": mergedTransitionName,\n \"popupAlign\": dropdownAlign,\n \"popupVisible\": visible,\n \"getPopupContainer\": getPopupContainer,\n \"popupClassName\": classNames(dropdownClassName, {\n [`${dropdownPrefixCls}-empty`]: empty\n }),\n \"popupStyle\": popupStyle,\n \"getTriggerDOMNode\": getTriggerDOMNode,\n \"onPopupVisibleChange\": onPopupVisibleChange\n }), {\n default: slots.default,\n popup: () => _createVNode(\"div\", {\n \"ref\": popupRef,\n \"onMouseenter\": onPopupMouseEnter,\n \"onFocusin\": onPopupFocusin,\n \"onFocusout\": onPopupFocusout\n }, [popupNode])\n });\n };\n }\n});\nexport default SelectTrigger;", "/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nconst KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n /**\n * END\n */\n END: 35,\n /**\n * HOME\n */\n HOME: 36,\n /**\n * LEFT\n */\n LEFT: 37,\n /**\n * UP\n */\n UP: 38,\n /**\n * RIGHT\n */\n RIGHT: 39,\n /**\n * DOWN\n */\n DOWN: 40,\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n /**\n * DELETE\n */\n DELETE: 46,\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n /**\n * DASH\n */\n DASH: 189,\n /**\n * EQUALS\n */\n EQUALS: 187,\n /**\n * COMMA\n */\n COMMA: 188,\n /**\n * PERIOD\n */\n PERIOD: 190,\n /**\n * SLASH\n */\n SLASH: 191,\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n const {\n keyCode\n } = e;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;", "import { createVNode as _createVNode } from \"vue\";\nimport PropTypes from '../_util/vue-types';\nconst TransBtn = (props, _ref) => {\n let {\n slots\n } = _ref;\n var _a;\n const {\n class: className,\n customizeIcon,\n customizeIconProps,\n onMousedown,\n onClick\n } = props;\n let icon;\n if (typeof customizeIcon === 'function') {\n icon = customizeIcon(customizeIconProps);\n } else {\n icon = customizeIcon;\n }\n return _createVNode(\"span\", {\n \"class\": className,\n \"onMousedown\": event => {\n event.preventDefault();\n if (onMousedown) {\n onMousedown(event);\n }\n },\n \"style\": {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n \"unselectable\": \"on\",\n \"onClick\": onClick,\n \"aria-hidden\": true\n }, [icon !== undefined ? icon : _createVNode(\"span\", {\n \"class\": className.split(/\\s+/).map(cls => `${cls}-icon`)\n }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);\n};\nTransBtn.inheritAttrs = false;\nTransBtn.displayName = 'TransBtn';\nTransBtn.props = {\n class: String,\n customizeIcon: PropTypes.any,\n customizeIconProps: PropTypes.any,\n onMousedown: Function,\n onClick: Function\n};\nexport default TransBtn;", "function onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) return;\n e.target.composing = false;\n trigger(e.target, 'input');\n}\nfunction trigger(el, type) {\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\nexport function addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nconst antInput = {\n created(el, binding) {\n if (!binding.modifiers || !binding.modifiers.lazy) {\n addEventListener(el, 'compositionstart', onCompositionStart);\n addEventListener(el, 'compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n addEventListener(el, 'change', onCompositionEnd);\n }\n }\n};\nexport default antInput;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nimport { cloneElement } from '../../_util/vnode';\nimport { defineComponent, inject, withDirectives } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport antInput from '../../_util/antInputDirective';\nimport classNames from '../../_util/classNames';\nexport const inputProps = {\n inputRef: PropTypes.any,\n prefixCls: String,\n id: String,\n inputElement: PropTypes.VueNode,\n disabled: {\n type: Boolean,\n default: undefined\n },\n autofocus: {\n type: Boolean,\n default: undefined\n },\n autocomplete: String,\n editable: {\n type: Boolean,\n default: undefined\n },\n activeDescendantId: String,\n value: String,\n open: {\n type: Boolean,\n default: undefined\n },\n tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /** Pass accessibility props to input */\n attrs: PropTypes.object,\n onKeydown: {\n type: Function\n },\n onMousedown: {\n type: Function\n },\n onChange: {\n type: Function\n },\n onPaste: {\n type: Function\n },\n onCompositionstart: {\n type: Function\n },\n onCompositionend: {\n type: Function\n },\n onFocus: {\n type: Function\n },\n onBlur: {\n type: Function\n }\n};\nconst Input = defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'SelectInput',\n inheritAttrs: false,\n props: inputProps,\n setup(props) {\n let blurTimeout = null;\n const VCSelectContainerEvent = inject('VCSelectContainerEvent');\n return () => {\n var _a;\n const {\n prefixCls,\n id,\n inputElement,\n disabled,\n tabindex,\n autofocus,\n autocomplete,\n editable,\n activeDescendantId,\n value,\n onKeydown,\n onMousedown,\n onChange,\n onPaste,\n onCompositionstart,\n onCompositionend,\n onFocus,\n onBlur,\n open,\n inputRef,\n attrs\n } = props;\n let inputNode = inputElement || withDirectives(_createVNode(\"input\", null, null), [[antInput]]);\n const inputProps = inputNode.props || {};\n const {\n onKeydown: onOriginKeyDown,\n onInput: onOriginInput,\n onFocus: onOriginFocus,\n onBlur: onOriginBlur,\n onMousedown: onOriginMouseDown,\n onCompositionstart: onOriginCompositionStart,\n onCompositionend: onOriginCompositionEnd,\n style\n } = inputProps;\n inputNode = cloneElement(inputNode, _extends(_extends(_extends(_extends(_extends({\n type: 'search'\n }, inputProps), {\n id,\n ref: inputRef,\n disabled,\n tabindex,\n autocomplete: autocomplete || 'off',\n autofocus,\n class: classNames(`${prefixCls}-selection-search-input`, (_a = inputNode === null || inputNode === void 0 ? void 0 : inputNode.props) === null || _a === void 0 ? void 0 : _a.class),\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-haspopup': 'listbox',\n 'aria-owns': `${id}_list`,\n 'aria-autocomplete': 'list',\n 'aria-controls': `${id}_list`,\n 'aria-activedescendant': activeDescendantId\n }), attrs), {\n value: editable ? value : '',\n readonly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _extends(_extends({}, style), {\n opacity: editable ? null : 0\n }),\n onKeydown: event => {\n onKeydown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMousedown: event => {\n onMousedown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onInput: event => {\n onChange(event);\n if (onOriginInput) {\n onOriginInput(event);\n }\n },\n onCompositionstart(event) {\n onCompositionstart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionend(event) {\n onCompositionend(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste,\n onFocus: function () {\n clearTimeout(blurTimeout);\n onOriginFocus && onOriginFocus(arguments.length <= 0 ? undefined : arguments[0]);\n onFocus && onFocus(arguments.length <= 0 ? undefined : arguments[0]);\n VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.focus(arguments.length <= 0 ? undefined : arguments[0]);\n },\n onBlur: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n blurTimeout = setTimeout(() => {\n onOriginBlur && onOriginBlur(args[0]);\n onBlur && onBlur(args[0]);\n VCSelectContainerEvent === null || VCSelectContainerEvent === void 0 ? void 0 : VCSelectContainerEvent.blur(args[0]);\n }, 100);\n }\n }), inputNode.type === 'textarea' ? {} : {\n type: 'search'\n }), true, true);\n return inputNode;\n };\n }\n});\nexport default Input;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nconst attributes = `accept acceptcharset accesskey action allowfullscreen allowtransparency\nalt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge\ncharset checked classid classname colspan cols content contenteditable contextmenu\ncontrols coords crossorigin data datetime default defer dir disabled download draggable\nenctype form formaction formenctype formmethod formnovalidate formtarget frameborder\nheaders height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity\nis keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media\nmediagroup method min minlength multiple muted name novalidate nonce open\noptimum pattern placeholder poster preload radiogroup readonly rel required\nreversed role rowspan rows sandbox scope scoped scrolling seamless selected\nshape size sizes span spellcheck src srcdoc srclang srcset start step style\nsummary tabindex target title type usemap value width wmode wrap`;\nconst eventsName = `onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown\n onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick\n onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown\n onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel\n onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough\n onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata\n onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`;\nconst propList = `${attributes} ${eventsName}`.split(/[\\s\\n]+/);\n/* eslint-enable max-len */\nconst ariaPrefix = 'aria-';\nconst dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n let ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _extends({}, ariaOnly);\n }\n const attrs = {};\n Object.keys(props).forEach(key => {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && (propList.includes(key) || propList.includes(key.toLowerCase()))) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}", "import { computed, defineComponent, inject, provide } from 'vue';\nconst OverflowContextProviderKey = Symbol('OverflowContextProviderKey');\nexport const OverflowContextProvider = defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'OverflowContextProvider',\n inheritAttrs: false,\n props: {\n value: {\n type: Object\n }\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n provide(OverflowContextProviderKey, computed(() => props.value));\n return () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n };\n }\n});\nexport const useInjectOverflowContext = () => {\n return inject(OverflowContextProviderKey, computed(() => null));\n};", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { computed, defineComponent, onUnmounted, ref } from 'vue';\nimport ResizeObserver from '../vc-resize-observer';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nconst UNDEFINED = undefined;\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'Item',\n props: {\n prefixCls: String,\n item: PropTypes.any,\n renderItem: Function,\n responsive: Boolean,\n itemKey: {\n type: [String, Number]\n },\n registerSize: Function,\n display: Boolean,\n order: Number,\n component: PropTypes.any,\n invalidate: Boolean\n },\n setup(props, _ref) {\n let {\n slots,\n expose\n } = _ref;\n const mergedHidden = computed(() => props.responsive && !props.display);\n const itemNodeRef = ref();\n expose({\n itemNodeRef\n });\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n props.registerSize(props.itemKey, width);\n }\n onUnmounted(() => {\n internalRegisterSize(null);\n });\n return () => {\n var _a;\n const {\n prefixCls,\n invalidate,\n item,\n renderItem,\n responsive,\n registerSize,\n itemKey,\n display,\n order,\n component: Component = 'div'\n } = props,\n restProps = __rest(props, [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"registerSize\", \"itemKey\", \"display\", \"order\", \"component\"]);\n const children = (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n // ================================ Render ================================\n const childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n let overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden.value ? 0 : 1,\n height: mergedHidden.value ? 0 : UNDEFINED,\n overflowY: mergedHidden.value ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden.value ? 'none' : UNDEFINED,\n position: mergedHidden.value ? 'absolute' : UNDEFINED\n };\n }\n const overflowProps = {};\n if (mergedHidden.value) {\n overflowProps['aria-hidden'] = true;\n }\n // 使用 disabled 避免结构不一致 导致子组件 rerender\n return _createVNode(ResizeObserver, {\n \"disabled\": !responsive,\n \"onResize\": _ref2 => {\n let {\n offsetWidth\n } = _ref2;\n internalRegisterSize(offsetWidth);\n }\n }, {\n default: () => _createVNode(Component, _objectSpread(_objectSpread(_objectSpread({\n \"class\": classNames(!invalidate && prefixCls),\n \"style\": overflowStyle\n }, overflowProps), restProps), {}, {\n \"ref\": itemNodeRef\n }), {\n default: () => [childNode]\n })\n });\n };\n }\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { defineComponent } from 'vue';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { OverflowContextProvider, useInjectOverflowContext } from './context';\nimport Item from './Item';\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'RawItem',\n inheritAttrs: false,\n props: {\n component: PropTypes.any,\n title: PropTypes.any,\n id: String,\n onMouseenter: {\n type: Function\n },\n onMouseleave: {\n type: Function\n },\n onClick: {\n type: Function\n },\n onKeydown: {\n type: Function\n },\n onFocus: {\n type: Function\n },\n role: String,\n tabindex: Number\n },\n setup(props, _ref) {\n let {\n slots,\n attrs\n } = _ref;\n const context = useInjectOverflowContext();\n return () => {\n var _a;\n // Render directly when context not provided\n if (!context.value) {\n const {\n component: Component = 'div'\n } = props,\n restProps = __rest(props, [\"component\"]);\n return _createVNode(Component, _objectSpread(_objectSpread({}, restProps), attrs), {\n default: () => [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]\n });\n }\n const _b = context.value,\n {\n className: contextClassName\n } = _b,\n restContext = __rest(_b, [\"className\"]);\n const {\n class: className\n } = attrs,\n restProps = __rest(attrs, [\"class\"]);\n // Do not pass context to sub item to avoid multiple measure\n return _createVNode(OverflowContextProvider, {\n \"value\": null\n }, {\n default: () => [_createVNode(Item, _objectSpread(_objectSpread(_objectSpread({\n \"class\": classNames(contextClassName, className)\n }, restContext), restProps), props), slots)]\n });\n };\n }\n});", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { computed, defineComponent, shallowRef, watch } from 'vue';\nimport ResizeObserver from '../vc-resize-observer';\nimport classNames from '../_util/classNames';\nimport PropTypes from '../_util/vue-types';\nimport { OverflowContextProvider } from './context';\nimport Item from './Item';\nimport RawItem from './RawItem';\nconst RESPONSIVE = 'responsive';\nconst INVALIDATE = 'invalidate';\nfunction defaultRenderRest(omittedItems) {\n return `+ ${omittedItems.length} ...`;\n}\nconst overflowProps = () => {\n return {\n id: String,\n prefixCls: String,\n data: Array,\n itemKey: [String, Number, Function],\n /** Used for `responsive`. It will limit render node to avoid perf issue */\n itemWidth: {\n type: Number,\n default: 10\n },\n renderItem: Function,\n /** @private Do not use in your production. Render raw node that need wrap Item by developer self */\n renderRawItem: Function,\n maxCount: [Number, String],\n renderRest: Function,\n /** @private Do not use in your production. Render raw node that need wrap Item by developer self */\n renderRawRest: Function,\n suffix: PropTypes.any,\n component: String,\n itemComponent: PropTypes.any,\n /** @private This API may be refactor since not well design */\n onVisibleChange: Function,\n /** When set to `full`, ssr will render full items by default and remove at client side */\n ssr: String,\n onMousedown: Function\n };\n};\nconst Overflow = defineComponent({\n name: 'Overflow',\n inheritAttrs: false,\n props: overflowProps(),\n emits: ['visibleChange'],\n setup(props, _ref) {\n let {\n attrs,\n emit,\n slots\n } = _ref;\n const fullySSR = computed(() => props.ssr === 'full');\n const containerWidth = shallowRef(null);\n const mergedContainerWidth = computed(() => containerWidth.value || 0);\n const itemWidths = shallowRef(new Map());\n const prevRestWidth = shallowRef(0);\n const restWidth = shallowRef(0);\n const suffixWidth = shallowRef(0);\n const suffixFixedStart = shallowRef(null);\n const displayCount = shallowRef(null);\n const mergedDisplayCount = computed(() => {\n if (displayCount.value === null && fullySSR.value) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount.value || 0;\n });\n const restReady = shallowRef(false);\n const itemPrefixCls = computed(() => `${props.prefixCls}-item`);\n // Always use the max width to avoid blink\n const mergedRestWidth = computed(() => Math.max(prevRestWidth.value, restWidth.value));\n // ================================= Data =================================\n const isResponsive = computed(() => !!(props.data.length && props.maxCount === RESPONSIVE));\n const invalidate = computed(() => props.maxCount === INVALIDATE);\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n const showRest = computed(() => isResponsive.value || typeof props.maxCount === 'number' && props.data.length > props.maxCount);\n const mergedData = computed(() => {\n let items = props.data;\n if (isResponsive.value) {\n if (containerWidth.value === null && fullySSR.value) {\n items = props.data;\n } else {\n items = props.data.slice(0, Math.min(props.data.length, mergedContainerWidth.value / props.itemWidth));\n }\n } else if (typeof props.maxCount === 'number') {\n items = props.data.slice(0, props.maxCount);\n }\n return items;\n });\n const omittedItems = computed(() => {\n if (isResponsive.value) {\n return props.data.slice(mergedDisplayCount.value + 1);\n }\n return props.data.slice(mergedData.value.length);\n });\n // ================================= Item =================================\n const getKey = (item, index) => {\n var _a;\n if (typeof props.itemKey === 'function') {\n return props.itemKey(item);\n }\n return (_a = props.itemKey && (item === null || item === void 0 ? void 0 : item[props.itemKey])) !== null && _a !== void 0 ? _a : index;\n };\n const mergedRenderItem = computed(() => props.renderItem || (item => item));\n const updateDisplayCount = (count, notReady) => {\n displayCount.value = count;\n if (!notReady) {\n restReady.value = count < props.data.length - 1;\n emit('visibleChange', count);\n }\n };\n // ================================= Size =================================\n const onOverflowResize = (_, element) => {\n containerWidth.value = element.clientWidth;\n };\n const registerSize = (key, width) => {\n const clone = new Map(itemWidths.value);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n itemWidths.value = clone;\n };\n const registerOverflowSize = (_, width) => {\n prevRestWidth.value = restWidth.value;\n restWidth.value = width;\n };\n const registerSuffixSize = (_, width) => {\n suffixWidth.value = width;\n };\n // ================================ Effect ================================\n const getItemWidth = index => {\n return itemWidths.value.get(getKey(mergedData.value[index], index));\n };\n watch([mergedContainerWidth, itemWidths, restWidth, suffixWidth, () => props.itemKey, mergedData], () => {\n if (mergedContainerWidth.value && mergedRestWidth.value && mergedData.value) {\n let totalWidth = suffixWidth.value;\n const len = mergedData.value.length;\n const lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0);\n suffixFixedStart.value = null;\n return;\n }\n for (let i = 0; i < len; i += 1) {\n const currentItemWidth = getItemWidth(i);\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth.value ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth.value) {\n // Additional check if match the end\n updateDisplayCount(lastIndex);\n suffixFixedStart.value = null;\n break;\n } else if (totalWidth + mergedRestWidth.value > mergedContainerWidth.value) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1);\n suffixFixedStart.value = totalWidth - currentItemWidth - suffixWidth.value + restWidth.value;\n break;\n }\n }\n if (props.suffix && getItemWidth(0) + suffixWidth.value > mergedContainerWidth.value) {\n suffixFixedStart.value = null;\n }\n }\n });\n return () => {\n // ================================ Render ================================\n const displayRest = restReady.value && !!omittedItems.value.length;\n const {\n itemComponent,\n renderRawItem,\n renderRawRest,\n renderRest,\n prefixCls = 'rc-overflow',\n suffix,\n component: Component = 'div',\n id,\n onMousedown\n } = props;\n const {\n class: className,\n style\n } = attrs,\n restAttrs = __rest(attrs, [\"class\", \"style\"]);\n let suffixStyle = {};\n if (suffixFixedStart.value !== null && isResponsive.value) {\n suffixStyle = {\n position: 'absolute',\n left: `${suffixFixedStart.value}px`,\n top: 0\n };\n }\n const itemSharedProps = {\n prefixCls: itemPrefixCls.value,\n responsive: isResponsive.value,\n component: itemComponent,\n invalidate: invalidate.value\n };\n // >>>>> Choice render fun by `renderRawItem`\n const internalRenderItemNode = renderRawItem ? (item, index) => {\n const key = getKey(item, index);\n return _createVNode(OverflowContextProvider, {\n \"key\": key,\n \"value\": _extends(_extends({}, itemSharedProps), {\n order: index,\n item,\n itemKey: key,\n registerSize,\n display: index <= mergedDisplayCount.value\n })\n }, {\n default: () => [renderRawItem(item, index)]\n });\n } : (item, index) => {\n const key = getKey(item, index);\n return _createVNode(Item, _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n \"order\": index,\n \"key\": key,\n \"item\": item,\n \"renderItem\": mergedRenderItem.value,\n \"itemKey\": key,\n \"registerSize\": registerSize,\n \"display\": index <= mergedDisplayCount.value\n }), null);\n };\n // >>>>> Rest node\n let restNode = () => null;\n const restContextProps = {\n order: displayRest ? mergedDisplayCount.value : Number.MAX_SAFE_INTEGER,\n className: `${itemPrefixCls.value} ${itemPrefixCls.value}-rest`,\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n const mergedRenderRest = renderRest || defaultRenderRest;\n restNode = () => _createVNode(Item, _objectSpread(_objectSpread({}, itemSharedProps), restContextProps), {\n default: () => typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems.value) : mergedRenderRest\n });\n } else if (renderRawRest) {\n restNode = () => _createVNode(OverflowContextProvider, {\n \"value\": _extends(_extends({}, itemSharedProps), restContextProps)\n }, {\n default: () => [renderRawRest(omittedItems.value)]\n });\n }\n const overflowNode = () => {\n var _a;\n return _createVNode(Component, _objectSpread({\n \"id\": id,\n \"class\": classNames(!invalidate.value && prefixCls, className),\n \"style\": style,\n \"onMousedown\": onMousedown\n }, restAttrs), {\n default: () => [mergedData.value.map(internalRenderItemNode), showRest.value ? restNode() : null, suffix && _createVNode(Item, _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n \"order\": mergedDisplayCount.value,\n \"class\": `${itemPrefixCls.value}-suffix`,\n \"registerSize\": registerSuffixSize,\n \"display\": true,\n \"style\": suffixStyle\n }), {\n default: () => suffix\n }), (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]\n });\n };\n // 使用 disabled 避免结构不一致 导致子组件 rerender\n return _createVNode(ResizeObserver, {\n \"disabled\": !isResponsive.value,\n \"onResize\": onOverflowResize\n }, {\n default: overflowNode\n });\n };\n }\n});\nOverflow.Item = RawItem;\nOverflow.RESPONSIVE = RESPONSIVE;\nOverflow.INVALIDATE = INVALIDATE;\nexport default Overflow;", "import Overflow from './Overflow';\nexport default Overflow;", "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\nimport { inject, provide } from 'vue';\nconst TreeSelectLegacyContextPropsKey = Symbol('TreeSelectLegacyContextPropsKey');\n// export const LegacySelectContext = defineComponent({\n// compatConfig: { MODE: 3 },\n// name: 'SelectContext',\n// props: {\n// value: { type: Object as PropType },\n// },\n// setup(props, { slots }) {\n// provide(\n// TreeSelectLegacyContextPropsKey,\n// computed(() => props.value),\n// );\n// return () => slots.default?.();\n// },\n// });\nexport function useProvideLegacySelectContext(props) {\n return provide(TreeSelectLegacyContextPropsKey, props);\n}\nexport default function useInjectLegacySelectContext() {\n return inject(TreeSelectLegacyContextPropsKey, {});\n}", "import { Fragment as _Fragment, createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\nimport TransBtn from '../TransBtn';\nimport Input from './Input';\nimport { computed, defineComponent, onMounted, shallowRef, watch } from 'vue';\nimport classNames from '../../_util/classNames';\nimport pickAttrs from '../../_util/pickAttrs';\nimport PropTypes from '../../_util/vue-types';\nimport Overflow from '../../vc-overflow';\nimport useInjectLegacySelectContext from '../../vc-tree-select/LegacyContext';\nconst props = {\n id: String,\n prefixCls: String,\n values: PropTypes.array,\n open: {\n type: Boolean,\n default: undefined\n },\n searchValue: String,\n inputRef: PropTypes.any,\n placeholder: PropTypes.any,\n disabled: {\n type: Boolean,\n default: undefined\n },\n mode: String,\n showSearch: {\n type: Boolean,\n default: undefined\n },\n autofocus: {\n type: Boolean,\n default: undefined\n },\n autocomplete: String,\n activeDescendantId: String,\n tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n removeIcon: PropTypes.any,\n choiceTransitionName: String,\n maxTagCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n maxTagTextLength: Number,\n maxTagPlaceholder: PropTypes.any.def(() => omittedValues => `+ ${omittedValues.length} ...`),\n tagRender: Function,\n onToggleOpen: {\n type: Function\n },\n onRemove: Function,\n onInputChange: Function,\n onInputPaste: Function,\n onInputKeyDown: Function,\n onInputMouseDown: Function,\n onInputCompositionStart: Function,\n onInputCompositionEnd: Function\n};\nconst onPreventMouseDown = event => {\n event.preventDefault();\n event.stopPropagation();\n};\nconst SelectSelector = defineComponent({\n name: 'MultipleSelectSelector',\n inheritAttrs: false,\n props: props,\n setup(props) {\n const measureRef = shallowRef();\n const inputWidth = shallowRef(0);\n const focused = shallowRef(false);\n const legacyTreeSelectContext = useInjectLegacySelectContext();\n const selectionPrefixCls = computed(() => `${props.prefixCls}-selection`);\n // ===================== Search ======================\n const inputValue = computed(() => props.open || props.mode === 'tags' ? props.searchValue : '');\n const inputEditable = computed(() => props.mode === 'tags' || props.showSearch && (props.open || focused.value));\n // We measure width and set to the input immediately\n onMounted(() => {\n watch(inputValue, () => {\n inputWidth.value = measureRef.value.scrollWidth;\n }, {\n flush: 'post',\n immediate: true\n });\n });\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n function defaultRenderSelector(title, content, itemDisabled, closable, onClose) {\n return _createVNode(\"span\", {\n \"class\": classNames(`${selectionPrefixCls.value}-item`, {\n [`${selectionPrefixCls.value}-item-disabled`]: itemDisabled\n }),\n \"title\": typeof title === 'string' || typeof title === 'number' ? title.toString() : undefined\n }, [_createVNode(\"span\", {\n \"class\": `${selectionPrefixCls.value}-item-content`\n }, [content]), closable && _createVNode(TransBtn, {\n \"class\": `${selectionPrefixCls.value}-item-remove`,\n \"onMousedown\": onPreventMouseDown,\n \"onClick\": onClose,\n \"customizeIcon\": props.removeIcon\n }, {\n default: () => [_createTextVNode(\"\\xD7\")]\n })]);\n }\n function customizeRenderSelector(value, content, itemDisabled, closable, onClose, option) {\n var _a;\n const onMouseDown = e => {\n onPreventMouseDown(e);\n props.onToggleOpen(!open);\n };\n let originData = option;\n // For TreeSelect\n if (legacyTreeSelectContext.keyEntities) {\n originData = ((_a = legacyTreeSelectContext.keyEntities[value]) === null || _a === void 0 ? void 0 : _a.node) || {};\n }\n return _createVNode(\"span\", {\n \"key\": value,\n \"onMousedown\": onMouseDown\n }, [props.tagRender({\n label: content,\n value,\n disabled: itemDisabled,\n closable,\n onClose,\n option: originData\n })]);\n }\n function renderItem(valueItem) {\n const {\n disabled: itemDisabled,\n label,\n value,\n option\n } = valueItem;\n const closable = !props.disabled && !itemDisabled;\n let displayLabel = label;\n if (typeof props.maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n const strLabel = String(displayLabel);\n if (strLabel.length > props.maxTagTextLength) {\n displayLabel = `${strLabel.slice(0, props.maxTagTextLength)}...`;\n }\n }\n }\n const onClose = event => {\n var _a;\n if (event) event.stopPropagation();\n (_a = props.onRemove) === null || _a === void 0 ? void 0 : _a.call(props, valueItem);\n };\n return typeof props.tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose, option) : defaultRenderSelector(label, displayLabel, itemDisabled, closable, onClose);\n }\n function renderRest(omittedValues) {\n const {\n maxTagPlaceholder = omittedValues => `+ ${omittedValues.length} ...`\n } = props;\n const content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return defaultRenderSelector(content, content, false);\n }\n return () => {\n const {\n id,\n prefixCls,\n values,\n open,\n inputRef,\n placeholder,\n disabled,\n autofocus,\n autocomplete,\n activeDescendantId,\n tabindex,\n onInputChange,\n onInputPaste,\n onInputKeyDown,\n onInputMouseDown,\n onInputCompositionStart,\n onInputCompositionEnd\n } = props;\n // >>> Input Node\n const inputNode = _createVNode(\"div\", {\n \"class\": `${selectionPrefixCls.value}-search`,\n \"style\": {\n width: inputWidth.value + 'px'\n },\n \"key\": \"input\"\n }, [_createVNode(Input, {\n \"inputRef\": inputRef,\n \"open\": open,\n \"prefixCls\": prefixCls,\n \"id\": id,\n \"inputElement\": null,\n \"disabled\": disabled,\n \"autofocus\": autofocus,\n \"autocomplete\": autocomplete,\n \"editable\": inputEditable.value,\n \"activeDescendantId\": activeDescendantId,\n \"value\": inputValue.value,\n \"onKeydown\": onInputKeyDown,\n \"onMousedown\": onInputMouseDown,\n \"onChange\": onInputChange,\n \"onPaste\": onInputPaste,\n \"onCompositionstart\": onInputCompositionStart,\n \"onCompositionend\": onInputCompositionEnd,\n \"tabindex\": tabindex,\n \"attrs\": pickAttrs(props, true),\n \"onFocus\": () => focused.value = true,\n \"onBlur\": () => focused.value = false\n }, null), _createVNode(\"span\", {\n \"ref\": measureRef,\n \"class\": `${selectionPrefixCls.value}-search-mirror`,\n \"aria-hidden\": true\n }, [inputValue.value, _createTextVNode(\"\\xA0\")])]);\n // >>> Selections\n const selectionNode = _createVNode(Overflow, {\n \"prefixCls\": `${selectionPrefixCls.value}-overflow`,\n \"data\": values,\n \"renderItem\": renderItem,\n \"renderRest\": renderRest,\n \"suffix\": inputNode,\n \"itemKey\": \"key\",\n \"maxCount\": props.maxTagCount,\n \"key\": \"overflow\"\n }, null);\n return _createVNode(_Fragment, null, [selectionNode, !values.length && !inputValue.value && _createVNode(\"span\", {\n \"class\": `${selectionPrefixCls.value}-placeholder`\n }, [placeholder])]);\n };\n }\n});\nexport default SelectSelector;", "import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\nimport pickAttrs from '../../_util/pickAttrs';\nimport Input from './Input';\nimport { Fragment, computed, defineComponent, shallowRef, watch } from 'vue';\nimport PropTypes from '../../_util/vue-types';\nimport useInjectLegacySelectContext from '../../vc-tree-select/LegacyContext';\nconst props = {\n inputElement: PropTypes.any,\n id: String,\n prefixCls: String,\n values: PropTypes.array,\n open: {\n type: Boolean,\n default: undefined\n },\n searchValue: String,\n inputRef: PropTypes.any,\n placeholder: PropTypes.any,\n disabled: {\n type: Boolean,\n default: undefined\n },\n mode: String,\n showSearch: {\n type: Boolean,\n default: undefined\n },\n autofocus: {\n type: Boolean,\n default: undefined\n },\n autocomplete: String,\n activeDescendantId: String,\n tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n activeValue: String,\n backfill: {\n type: Boolean,\n default: undefined\n },\n optionLabelRender: Function,\n onInputChange: Function,\n onInputPaste: Function,\n onInputKeyDown: Function,\n onInputMouseDown: Function,\n onInputCompositionStart: Function,\n onInputCompositionEnd: Function\n};\nconst SingleSelector = defineComponent({\n name: 'SingleSelector',\n setup(props) {\n const inputChanged = shallowRef(false);\n const combobox = computed(() => props.mode === 'combobox');\n const inputEditable = computed(() => combobox.value || props.showSearch);\n const inputValue = computed(() => {\n let inputValue = props.searchValue || '';\n if (combobox.value && props.activeValue && !inputChanged.value) {\n inputValue = props.activeValue;\n }\n return inputValue;\n });\n const legacyTreeSelectContext = useInjectLegacySelectContext();\n watch([combobox, () => props.activeValue], () => {\n if (combobox.value) {\n inputChanged.value = false;\n }\n }, {\n immediate: true\n });\n // Not show text when closed expect combobox mode\n const hasTextInput = computed(() => props.mode !== 'combobox' && !props.open && !props.showSearch ? false : !!inputValue.value);\n const title = computed(() => {\n const item = props.values[0];\n return item && (typeof item.label === 'string' || typeof item.label === 'number') ? item.label.toString() : undefined;\n });\n const renderPlaceholder = () => {\n if (props.values[0]) {\n return null;\n }\n const hiddenStyle = hasTextInput.value ? {\n visibility: 'hidden'\n } : undefined;\n return _createVNode(\"span\", {\n \"class\": `${props.prefixCls}-selection-placeholder`,\n \"style\": hiddenStyle\n }, [props.placeholder]);\n };\n return () => {\n var _a, _b, _c, _d;\n const {\n inputElement,\n prefixCls,\n id,\n values,\n inputRef,\n disabled,\n autofocus,\n autocomplete,\n activeDescendantId,\n open,\n tabindex,\n optionLabelRender,\n onInputKeyDown,\n onInputMouseDown,\n onInputChange,\n onInputPaste,\n onInputCompositionStart,\n onInputCompositionEnd\n } = props;\n const item = values[0];\n let titleNode = null;\n // custom tree-select title by slot\n // For TreeSelect\n if (item && legacyTreeSelectContext.customSlots) {\n const key = (_a = item.key) !== null && _a !== void 0 ? _a : item.value;\n const originData = ((_b = legacyTreeSelectContext.keyEntities[key]) === null || _b === void 0 ? void 0 : _b.node) || {};\n titleNode = legacyTreeSelectContext.customSlots[(_c = originData.slots) === null || _c === void 0 ? void 0 : _c.title] || legacyTreeSelectContext.customSlots.title || item.label;\n if (typeof titleNode === 'function') {\n titleNode = titleNode(originData);\n }\n // else if (treeSelectContext.value.slots.titleRender) {\n // // 因历史 title 是覆盖逻辑,新增 titleRender,所有的 title 都走一遍 titleRender\n // titleNode = treeSelectContext.value.slots.titleRender(item.option?.data || {});\n // }\n } else {\n titleNode = optionLabelRender && item ? optionLabelRender(item.option) : item === null || item === void 0 ? void 0 : item.label;\n }\n return _createVNode(_Fragment, null, [_createVNode(\"span\", {\n \"class\": `${prefixCls}-selection-search`\n }, [_createVNode(Input, {\n \"inputRef\": inputRef,\n \"prefixCls\": prefixCls,\n \"id\": id,\n \"open\": open,\n \"inputElement\": inputElement,\n \"disabled\": disabled,\n \"autofocus\": autofocus,\n \"autocomplete\": autocomplete,\n \"editable\": inputEditable.value,\n \"activeDescendantId\": activeDescendantId,\n \"value\": inputValue.value,\n \"onKeydown\": onInputKeyDown,\n \"onMousedown\": onInputMouseDown,\n \"onChange\": e => {\n inputChanged.value = true;\n onInputChange(e);\n },\n \"onPaste\": onInputPaste,\n \"onCompositionstart\": onInputCompositionStart,\n \"onCompositionend\": onInputCompositionEnd,\n \"tabindex\": tabindex,\n \"attrs\": pickAttrs(props, true)\n }, null)]), !combobox.value && item && !hasTextInput.value && _createVNode(\"span\", {\n \"class\": `${prefixCls}-selection-item`,\n \"title\": title.value\n }, [_createVNode(_Fragment, {\n \"key\": (_d = item.key) !== null && _d !== void 0 ? _d : item.value\n }, [titleNode])]), renderPlaceholder()]);\n };\n }\n});\nSingleSelector.props = props;\nSingleSelector.inheritAttrs = false;\nexport default SingleSelector;", "import KeyCode from '../../_util/KeyCode';\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}", "import { onBeforeUnmount } from 'vue';\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n let duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n let lock = null;\n let timeout;\n onBeforeUnmount(() => {\n clearTimeout(timeout);\n });\n function doLock(locked) {\n if (locked || lock === null) {\n lock = locked;\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n lock = null;\n }, duration);\n }\n return [() => lock, doLock];\n}", "function createRef() {\n const func = node => {\n func.current = node;\n };\n return func;\n}\nexport function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (typeof ref === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n}\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n return node => {\n refs.forEach(ref => {\n fillRef(ref, node);\n });\n };\n}\nexport default createRef;", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { createVNode as _createVNode } from \"vue\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\nimport KeyCode from '../../_util/KeyCode';\nimport MultipleSelector from './MultipleSelector';\nimport SingleSelector from './SingleSelector';\nimport { isValidateOpenKey } from '../utils/keyUtil';\nimport useLock from '../hooks/useLock';\nimport { defineComponent } from 'vue';\nimport createRef from '../../_util/createRef';\nimport PropTypes from '../../_util/vue-types';\nconst Selector = defineComponent({\n name: 'Selector',\n inheritAttrs: false,\n props: {\n id: String,\n prefixCls: String,\n showSearch: {\n type: Boolean,\n default: undefined\n },\n open: {\n type: Boolean,\n default: undefined\n },\n /** Display in the Selector value, it's not same as `value` prop */\n values: PropTypes.array,\n multiple: {\n type: Boolean,\n default: undefined\n },\n mode: String,\n searchValue: String,\n activeValue: String,\n inputElement: PropTypes.any,\n autofocus: {\n type: Boolean,\n default: undefined\n },\n activeDescendantId: String,\n tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n disabled: {\n type: Boolean,\n default: undefined\n },\n placeholder: PropTypes.any,\n removeIcon: PropTypes.any,\n // Tags\n maxTagCount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n maxTagTextLength: Number,\n maxTagPlaceholder: PropTypes.any,\n tagRender: Function,\n optionLabelRender: Function,\n /** Check if `tokenSeparators` contains `\\n` or `\\r\\n` */\n tokenWithEnter: {\n type: Boolean,\n default: undefined\n },\n // Motion\n choiceTransitionName: String,\n onToggleOpen: {\n type: Function\n },\n /** `onSearch` returns go next step boolean to check if need do toggle open */\n onSearch: Function,\n onSearchSubmit: Function,\n onRemove: Function,\n onInputKeyDown: {\n type: Function\n },\n /**\n * @private get real dom for trigger align.\n * This may be removed after React provides replacement of `findDOMNode`\n */\n domRef: Function\n },\n setup(props, _ref) {\n let {\n expose\n } = _ref;\n const inputRef = createRef();\n let compositionStatus = false;\n // ====================== Input ======================\n const [getInputMouseDown, setInputMouseDown] = useLock(0);\n const onInternalInputKeyDown = event => {\n const {\n which\n } = event;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (props.onInputKeyDown) {\n props.onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && props.mode === 'tags' && !compositionStatus && !props.open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n props.onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n props.onToggleOpen(true);\n }\n };\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n const onInternalInputMouseDown = () => {\n setInputMouseDown(true);\n };\n // When paste come, ignore next onChange\n let pastedText = null;\n const triggerOnSearch = value => {\n if (props.onSearch(value, true, compositionStatus) !== false) {\n props.onToggleOpen(true);\n }\n };\n const onInputCompositionStart = () => {\n compositionStatus = true;\n };\n const onInputCompositionEnd = e => {\n compositionStatus = false;\n // Trigger search again to support `tokenSeparators` with typewriting\n if (props.mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n const onInputChange = event => {\n let {\n target: {\n value\n }\n } = event;\n // Pasted text should replace back to origin content\n if (props.tokenWithEnter && pastedText && /[\\r\\n]/.test(pastedText)) {\n // CRLF will be treated as a single space for input element\n const replacedText = pastedText.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedText);\n }\n pastedText = null;\n triggerOnSearch(value);\n };\n const onInputPaste = e => {\n const {\n clipboardData\n } = e;\n const value = clipboardData.getData('text');\n pastedText = value;\n };\n const onClick = _ref2 => {\n let {\n target\n } = _ref2;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n const isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(() => {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n const onMousedown = event => {\n const inputMouseDown = getInputMouseDown();\n if (event.target !== inputRef.current && !inputMouseDown) {\n event.preventDefault();\n }\n if (props.mode !== 'combobox' && (!props.showSearch || !inputMouseDown) || !props.open) {\n if (props.open) {\n props.onSearch('', true, false);\n }\n props.onToggleOpen();\n }\n };\n expose({\n focus: () => {\n inputRef.current.focus();\n },\n blur: () => {\n inputRef.current.blur();\n }\n });\n return () => {\n const {\n prefixCls,\n domRef,\n mode\n } = props;\n const sharedProps = {\n inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange,\n onInputPaste,\n onInputCompositionStart,\n onInputCompositionEnd\n };\n const selectNode = mode === 'multiple' || mode === 'tags' ? _createVNode(MultipleSelector, _objectSpread(_objectSpread({}, props), sharedProps), null) : _createVNode(SingleSelector, _objectSpread(_objectSpread({}, props), sharedProps), null);\n return _createVNode(\"div\", {\n \"ref\": domRef,\n \"class\": `${prefixCls}-selector`,\n \"onClick\": onClick,\n \"onMousedown\": onMousedown\n }, [selectNode]);\n };\n }\n});\nexport default Selector;", "import { onBeforeUnmount, onMounted } from 'vue';\nexport default function useSelectTriggerControl(refs, open, triggerOpen) {\n function onGlobalMouseDown(event) {\n var _a, _b, _c;\n let target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n const elements = [(_a = refs[0]) === null || _a === void 0 ? void 0 : _a.value, (_c = (_b = refs[1]) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.getPopupElement()];\n if (open.value && elements.every(element => element && !element.contains(target) && element !== target)) {\n // Should trigger close\n triggerOpen(false);\n }\n }\n onMounted(() => {\n window.addEventListener('mousedown', onGlobalMouseDown);\n });\n onBeforeUnmount(() => {\n window.removeEventListener('mousedown', onGlobalMouseDown);\n });\n}", "import { onMounted, shallowRef } from 'vue';\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n const bool = shallowRef(false);\n let delay;\n const cancelLatest = () => {\n clearTimeout(delay);\n };\n onMounted(() => {\n cancelLatest();\n });\n const delaySetBool = (value, callback) => {\n cancelLatest();\n delay = setTimeout(() => {\n bool.value = value;\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}", "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\nimport { inject, provide } from 'vue';\nconst BaseSelectContextKey = Symbol('BaseSelectContextKey');\nexport function useProvideBaseSelectProps(props) {\n return provide(BaseSelectContextKey, props);\n}\nexport default function useBaseProps() {\n return inject(BaseSelectContextKey, {});\n}", "export default (() => {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n const agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});", "import { isRef, reactive } from 'vue';\n/**\n * Converts ref to reactive.\n *\n * @see https://vueuse.org/toReactive\n * @param objectRef A ref of object\n */\nexport function toReactive(objectRef) {\n if (!isRef(objectRef)) return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return Reflect.get(objectRef.value, p, receiver);\n },\n set(_, p, value) {\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { resolveDirective as _resolveDirective, createTextVNode as _createTextVNode, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { getSeparatedContent } from './utils/valueUtil';\nimport SelectTrigger from './SelectTrigger';\nimport Selector from './Selector';\nimport useSelectTriggerControl from './hooks/useSelectTriggerControl';\nimport useDelayReset from './hooks/useDelayReset';\nimport TransBtn from './TransBtn';\nimport useLock from './hooks/useLock';\nimport { useProvideBaseSelectProps } from './hooks/useBaseProps';\nimport { computed, defineComponent, onBeforeUnmount, onMounted, provide, shallowRef, toRefs, watch, watchEffect, ref } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, isValidElement } from '../_util/props-util';\nimport isMobile from '../vc-util/isMobile';\nimport KeyCode from '../_util/KeyCode';\nimport { toReactive } from '../_util/toReactive';\nimport classNames from '../_util/classNames';\nimport createRef from '../_util/createRef';\nimport useInjectLegacySelectContext from '../vc-tree-select/LegacyContext';\nimport { cloneElement } from '../_util/vnode';\nconst DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autofocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabindex', 'OptionList', 'notFoundContent'];\nconst baseSelectPrivateProps = () => {\n return {\n prefixCls: String,\n id: String,\n omitDomProps: Array,\n // >>> Value\n displayValues: Array,\n onDisplayValuesChange: Function,\n // >>> Active\n /** Current dropdown list active item string value */\n activeValue: String,\n /** Link search input with target element */\n activeDescendantId: String,\n onActiveValueChange: Function,\n // >>> Search\n searchValue: String,\n /** Trigger onSearch, return false to prevent trigger open event */\n onSearch: Function,\n /** Trigger when search text match the `tokenSeparators`. Will provide split content */\n onSearchSplit: Function,\n maxLength: Number,\n OptionList: PropTypes.any,\n /** Tell if provided `options` is empty */\n emptyOptions: Boolean\n };\n};\nexport const baseSelectPropsWithoutPrivate = () => {\n return {\n showSearch: {\n type: Boolean,\n default: undefined\n },\n tagRender: {\n type: Function\n },\n optionLabelRender: {\n type: Function\n },\n direction: {\n type: String\n },\n // MISC\n tabindex: Number,\n autofocus: Boolean,\n notFoundContent: PropTypes.any,\n placeholder: PropTypes.any,\n onClear: Function,\n choiceTransitionName: String,\n // >>> Mode\n mode: String,\n // >>> Status\n disabled: {\n type: Boolean,\n default: undefined\n },\n loading: {\n type: Boolean,\n default: undefined\n },\n // >>> Open\n open: {\n type: Boolean,\n default: undefined\n },\n defaultOpen: {\n type: Boolean,\n default: undefined\n },\n onDropdownVisibleChange: {\n type: Function\n },\n // >>> Customize Input\n /** @private Internal usage. Do not use in your production. */\n getInputElement: {\n type: Function\n },\n /** @private Internal usage. Do not use in your production. */\n getRawInputElement: {\n type: Function\n },\n // >>> Selector\n maxTagTextLength: Number,\n maxTagCount: {\n type: [String, Number]\n },\n maxTagPlaceholder: PropTypes.any,\n // >>> Search\n tokenSeparators: {\n type: Array\n },\n // >>> Icons\n allowClear: {\n type: Boolean,\n default: undefined\n },\n showArrow: {\n type: Boolean,\n default: undefined\n },\n inputIcon: PropTypes.any,\n /** Clear all icon */\n clearIcon: PropTypes.any,\n /** Selector remove icon */\n removeIcon: PropTypes.any,\n // >>> Dropdown\n animation: String,\n transitionName: String,\n dropdownStyle: {\n type: Object\n },\n dropdownClassName: String,\n dropdownMatchSelectWidth: {\n type: [Boolean, Number],\n default: undefined\n },\n dropdownRender: {\n type: Function\n },\n dropdownAlign: Object,\n placement: {\n type: String\n },\n getPopupContainer: {\n type: Function\n },\n // >>> Focus\n showAction: {\n type: Array\n },\n onBlur: {\n type: Function\n },\n onFocus: {\n type: Function\n },\n // >>> Rest Events\n onKeyup: Function,\n onKeydown: Function,\n onMousedown: Function,\n onPopupScroll: Function,\n onInputKeyDown: Function,\n onMouseenter: Function,\n onMouseleave: Function,\n onClick: Function\n };\n};\nconst baseSelectProps = () => {\n return _extends(_extends({}, baseSelectPrivateProps()), baseSelectPropsWithoutPrivate());\n};\nexport function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n}\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'BaseSelect',\n inheritAttrs: false,\n props: initDefaultProps(baseSelectProps(), {\n showAction: [],\n notFoundContent: 'Not Found'\n }),\n setup(props, _ref) {\n let {\n attrs,\n expose,\n slots\n } = _ref;\n const multiple = computed(() => isMultiple(props.mode));\n const mergedShowSearch = computed(() => props.showSearch !== undefined ? props.showSearch : multiple.value || props.mode === 'combobox');\n const mobile = shallowRef(false);\n onMounted(() => {\n mobile.value = isMobile();\n });\n const legacyTreeSelectContext = useInjectLegacySelectContext();\n // ============================== Refs ==============================\n const containerRef = shallowRef(null);\n const selectorDomRef = createRef();\n const triggerRef = shallowRef(null);\n const selectorRef = shallowRef(null);\n const listRef = shallowRef(null);\n const blurRef = ref(false);\n /** Used for component focused management */\n const [mockFocused, setMockFocused, cancelSetMockFocused] = useDelayReset();\n const focus = () => {\n var _a;\n (_a = selectorRef.value) === null || _a === void 0 ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n (_a = selectorRef.value) === null || _a === void 0 ? void 0 : _a.blur();\n };\n expose({\n focus,\n blur,\n scrollTo: arg => {\n var _a;\n return (_a = listRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(arg);\n }\n });\n const mergedSearchValue = computed(() => {\n var _a;\n if (props.mode !== 'combobox') {\n return props.searchValue;\n }\n const val = (_a = props.displayValues[0]) === null || _a === void 0 ? void 0 : _a.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n });\n // ============================== Open ==============================\n const initOpen = props.open !== undefined ? props.open : props.defaultOpen;\n const innerOpen = shallowRef(initOpen);\n const mergedOpen = shallowRef(initOpen);\n const setInnerOpen = val => {\n innerOpen.value = props.open !== undefined ? props.open : val;\n mergedOpen.value = innerOpen.value;\n };\n watch(() => props.open, () => {\n setInnerOpen(props.open);\n });\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n const emptyListContent = computed(() => !props.notFoundContent && props.emptyOptions);\n watchEffect(() => {\n mergedOpen.value = innerOpen.value;\n if (props.disabled || emptyListContent.value && mergedOpen.value && props.mode === 'combobox') {\n mergedOpen.value = false;\n }\n });\n const triggerOpen = computed(() => emptyListContent.value ? false : mergedOpen.value);\n const onToggleOpen = newOpen => {\n const nextOpen = newOpen !== undefined ? newOpen : !mergedOpen.value;\n if (mergedOpen.value !== nextOpen && !props.disabled) {\n setInnerOpen(nextOpen);\n props.onDropdownVisibleChange && props.onDropdownVisibleChange(nextOpen);\n }\n };\n const tokenWithEnter = computed(() => (props.tokenSeparators || []).some(tokenSeparator => ['\\n', '\\r\\n'].includes(tokenSeparator)));\n const onInternalSearch = (searchText, fromTyping, isCompositing) => {\n var _a, _b;\n let ret = true;\n let newSearchText = searchText;\n (_a = props.onActiveValueChange) === null || _a === void 0 ? void 0 : _a.call(props, null);\n // Check if match the `tokenSeparators`\n const patchLabels = isCompositing ? null : getSeparatedContent(searchText, props.tokenSeparators);\n // Ignore combobox since it's not split-able\n if (props.mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n (_b = props.onSearchSplit) === null || _b === void 0 ? void 0 : _b.call(props, patchLabels);\n // Should close when paste finish\n onToggleOpen(false);\n // Tell Selector that break next actions\n ret = false;\n }\n if (props.onSearch && mergedSearchValue.value !== newSearchText) {\n props.onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n const onInternalSearchSubmit = searchText => {\n var _a;\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n (_a = props.onSearch) === null || _a === void 0 ? void 0 : _a.call(props, searchText, {\n source: 'submit'\n });\n };\n // Close will clean up single mode search text\n watch(mergedOpen, () => {\n if (!mergedOpen.value && !multiple.value && props.mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n watch(() => props.disabled, () => {\n if (innerOpen.value && !!props.disabled) {\n setInnerOpen(false);\n }\n if (props.disabled && !blurRef.value) {\n setMockFocused(false);\n }\n }, {\n immediate: true\n });\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n const [getClearLock, setClearLock] = useLock();\n // KeyDown\n const onInternalKeyDown = function (event) {\n var _a;\n const clearLock = getClearLock();\n const {\n which\n } = event;\n if (which === KeyCode.ENTER) {\n // Do not submit form when type in the input\n if (props.mode !== 'combobox') {\n event.preventDefault();\n }\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen.value) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue.value);\n // Remove value by `backspace`\n if (which === KeyCode.BACKSPACE && !clearLock && multiple.value && !mergedSearchValue.value && props.displayValues.length) {\n const cloneDisplayValues = [...props.displayValues];\n let removedDisplayValue = null;\n for (let i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n const current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n props.onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen.value && listRef.value) {\n listRef.value.onKeydown(event, ...rest);\n }\n (_a = props.onKeydown) === null || _a === void 0 ? void 0 : _a.call(props, event, ...rest);\n };\n // KeyUp\n const onInternalKeyUp = function (event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen.value && listRef.value) {\n listRef.value.onKeyup(event, ...rest);\n }\n if (props.onKeyup) {\n props.onKeyup(event, ...rest);\n }\n };\n // ============================ Selector ============================\n const onSelectorRemove = val => {\n const newValues = props.displayValues.filter(i => i !== val);\n props.onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n const focusRef = shallowRef(false);\n const onContainerFocus = function () {\n setMockFocused(true);\n if (!props.disabled) {\n if (props.onFocus && !focusRef.value) {\n props.onFocus(...arguments);\n }\n // `showAction` should handle `focus` if set\n if (props.showAction && props.showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.value = true;\n };\n const popupFocused = ref(false);\n const onContainerBlur = function () {\n if (popupFocused.value) {\n return;\n }\n blurRef.value = true;\n setMockFocused(false, () => {\n focusRef.value = false;\n blurRef.value = false;\n onToggleOpen(false);\n });\n if (props.disabled) {\n return;\n }\n const searchVal = mergedSearchValue.value;\n if (searchVal) {\n // `tags` mode should move `searchValue` into values\n if (props.mode === 'tags') {\n props.onSearch(searchVal, {\n source: 'submit'\n });\n } else if (props.mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n props.onSearch('', {\n source: 'blur'\n });\n }\n }\n if (props.onBlur) {\n props.onBlur(...arguments);\n }\n };\n const onPopupFocusin = () => {\n popupFocused.value = true;\n };\n const onPopupFocusout = () => {\n popupFocused.value = false;\n };\n provide('VCSelectContainerEvent', {\n focus: onContainerFocus,\n blur: onContainerBlur\n });\n // Give focus back of Select\n const activeTimeoutIds = [];\n onMounted(() => {\n activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n });\n onBeforeUnmount(() => {\n activeTimeoutIds.forEach(timeoutId => clearTimeout(timeoutId));\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n });\n const onInternalMouseDown = function (event) {\n var _a, _b;\n const {\n target\n } = event;\n const popupElement = (_a = triggerRef.value) === null || _a === void 0 ? void 0 : _a.getPopupElement();\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n const timeoutId = setTimeout(() => {\n var _a;\n const index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile.value && !popupElement.contains(document.activeElement)) {\n (_a = selectorRef.value) === null || _a === void 0 ? void 0 : _a.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n (_b = props.onMousedown) === null || _b === void 0 ? void 0 : _b.call(props, event, ...restArgs);\n };\n // ============================= Dropdown ==============================\n const containerWidth = shallowRef(null);\n // const instance = getCurrentInstance();\n const onPopupMouseEnter = () => {\n // We need force update here since popup dom is render async\n // instance.update();\n };\n onMounted(() => {\n watch(triggerOpen, () => {\n var _a;\n if (triggerOpen.value) {\n const newWidth = Math.ceil((_a = containerRef.value) === null || _a === void 0 ? void 0 : _a.offsetWidth);\n if (containerWidth.value !== newWidth && !Number.isNaN(newWidth)) {\n containerWidth.value = newWidth;\n }\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n });\n // Close when click on non-select element\n useSelectTriggerControl([containerRef, triggerRef], triggerOpen, onToggleOpen);\n useProvideBaseSelectProps(toReactive(_extends(_extends({}, toRefs(props)), {\n open: mergedOpen,\n triggerOpen,\n showSearch: mergedShowSearch,\n multiple,\n toggleOpen: onToggleOpen\n })));\n return () => {\n const _a = _extends(_extends({}, props), attrs),\n {\n prefixCls,\n id,\n open,\n defaultOpen,\n mode,\n // Search related\n showSearch,\n searchValue,\n onSearch,\n // Icons\n allowClear,\n clearIcon,\n showArrow,\n inputIcon,\n // Others\n disabled,\n loading,\n getInputElement,\n getPopupContainer,\n placement,\n // Dropdown\n animation,\n transitionName,\n dropdownStyle,\n dropdownClassName,\n dropdownMatchSelectWidth,\n dropdownRender,\n dropdownAlign,\n showAction,\n direction,\n // Tags\n tokenSeparators,\n tagRender,\n optionLabelRender,\n // Events\n onPopupScroll,\n onDropdownVisibleChange,\n onFocus,\n onBlur,\n onKeyup,\n onKeydown,\n onMousedown,\n onClear,\n omitDomProps,\n getRawInputElement,\n displayValues,\n onDisplayValuesChange,\n emptyOptions,\n activeDescendantId,\n activeValue,\n OptionList\n } = _a,\n restProps = __rest(_a, [\"prefixCls\", \"id\", \"open\", \"defaultOpen\", \"mode\", \"showSearch\", \"searchValue\", \"onSearch\", \"allowClear\", \"clearIcon\", \"showArrow\", \"inputIcon\", \"disabled\", \"loading\", \"getInputElement\", \"getPopupContainer\", \"placement\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"showAction\", \"direction\", \"tokenSeparators\", \"tagRender\", \"optionLabelRender\", \"onPopupScroll\", \"onDropdownVisibleChange\", \"onFocus\", \"onBlur\", \"onKeyup\", \"onKeydown\", \"onMousedown\", \"onClear\", \"omitDomProps\", \"getRawInputElement\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"activeDescendantId\", \"activeValue\", \"OptionList\"]);\n // ============================= Input ==============================\n // Only works in `combobox`\n const customizeInputElement = mode === 'combobox' && getInputElement && getInputElement() || null;\n // Used for customize replacement for `vc-cascader`\n const customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n const domProps = _extends({}, restProps);\n // Used for raw custom input trigger\n let onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = newOpen => {\n onToggleOpen(newOpen);\n };\n }\n DEFAULT_OMIT_PROPS.forEach(propName => {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 ? void 0 : omitDomProps.forEach(propName => {\n delete domProps[propName];\n });\n // ============================= Arrow ==============================\n const mergedShowArrow = showArrow !== undefined ? showArrow : loading || !multiple.value && mode !== 'combobox';\n let arrowNode;\n if (mergedShowArrow) {\n arrowNode = _createVNode(TransBtn, {\n \"class\": classNames(`${prefixCls}-arrow`, {\n [`${prefixCls}-arrow-loading`]: loading\n }),\n \"customizeIcon\": inputIcon,\n \"customizeIconProps\": {\n loading,\n searchValue: mergedSearchValue.value,\n open: mergedOpen.value,\n focused: mockFocused.value,\n showSearch: mergedShowSearch.value\n }\n }, null);\n }\n // ============================= Clear ==============================\n let clearNode;\n const onClearMouseDown = () => {\n onClear === null || onClear === void 0 ? void 0 : onClear();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n if (!disabled && allowClear && (displayValues.length || mergedSearchValue.value)) {\n clearNode = _createVNode(TransBtn, {\n \"class\": `${prefixCls}-clear`,\n \"onMousedown\": onClearMouseDown,\n \"customizeIcon\": clearIcon\n }, {\n default: () => [_createTextVNode(\"\\xD7\")]\n });\n }\n // =========================== OptionList ===========================\n const optionList = _createVNode(OptionList, {\n \"ref\": listRef\n }, _extends(_extends({}, legacyTreeSelectContext.customSlots), {\n option: slots.option\n }));\n // ============================= Select =============================\n const mergedClassName = classNames(prefixCls, attrs.class, {\n [`${prefixCls}-focused`]: mockFocused.value,\n [`${prefixCls}-multiple`]: multiple.value,\n [`${prefixCls}-single`]: !multiple.value,\n [`${prefixCls}-allow-clear`]: allowClear,\n [`${prefixCls}-show-arrow`]: mergedShowArrow,\n [`${prefixCls}-disabled`]: disabled,\n [`${prefixCls}-loading`]: loading,\n [`${prefixCls}-open`]: mergedOpen.value,\n [`${prefixCls}-customize-input`]: customizeInputElement,\n [`${prefixCls}-show-search`]: mergedShowSearch.value\n });\n // >>> Selector\n const selectorNode = _createVNode(SelectTrigger, {\n \"ref\": triggerRef,\n \"disabled\": disabled,\n \"prefixCls\": prefixCls,\n \"visible\": triggerOpen.value,\n \"popupElement\": optionList,\n \"containerWidth\": containerWidth.value,\n \"animation\": animation,\n \"transitionName\": transitionName,\n \"dropdownStyle\": dropdownStyle,\n \"dropdownClassName\": dropdownClassName,\n \"direction\": direction,\n \"dropdownMatchSelectWidth\": dropdownMatchSelectWidth,\n \"dropdownRender\": dropdownRender,\n \"dropdownAlign\": dropdownAlign,\n \"placement\": placement,\n \"getPopupContainer\": getPopupContainer,\n \"empty\": emptyOptions,\n \"getTriggerDOMNode\": () => selectorDomRef.current,\n \"onPopupVisibleChange\": onTriggerVisibleChange,\n \"onPopupMouseEnter\": onPopupMouseEnter,\n \"onPopupFocusin\": onPopupFocusin,\n \"onPopupFocusout\": onPopupFocusout\n }, {\n default: () => {\n return customizeRawInputElement ? isValidElement(customizeRawInputElement) && cloneElement(customizeRawInputElement, {\n ref: selectorDomRef\n }, false, true) : _createVNode(Selector, _objectSpread(_objectSpread({}, props), {}, {\n \"domRef\": selectorDomRef,\n \"prefixCls\": prefixCls,\n \"inputElement\": customizeInputElement,\n \"ref\": selectorRef,\n \"id\": id,\n \"showSearch\": mergedShowSearch.value,\n \"mode\": mode,\n \"activeDescendantId\": activeDescendantId,\n \"tagRender\": tagRender,\n \"optionLabelRender\": optionLabelRender,\n \"values\": displayValues,\n \"open\": mergedOpen.value,\n \"onToggleOpen\": onToggleOpen,\n \"activeValue\": activeValue,\n \"searchValue\": mergedSearchValue.value,\n \"onSearch\": onInternalSearch,\n \"onSearchSubmit\": onInternalSearchSubmit,\n \"onRemove\": onSelectorRemove,\n \"tokenWithEnter\": tokenWithEnter.value\n }), null);\n }\n });\n // >>> Render\n let renderNode;\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = _createVNode(\"div\", _objectSpread(_objectSpread({}, domProps), {}, {\n \"class\": mergedClassName,\n \"ref\": containerRef,\n \"onMousedown\": onInternalMouseDown,\n \"onKeydown\": onInternalKeyDown,\n \"onKeyup\": onInternalKeyUp\n }), [mockFocused.value && !mergedOpen.value && _createVNode(\"span\", {\n \"style\": {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n },\n \"aria-live\": \"polite\"\n }, [`${displayValues.map(_ref2 => {\n let {\n label,\n value\n } = _ref2;\n return ['number', 'string'].includes(typeof label) ? label : value;\n }).join(', ')}`]), selectorNode, arrowNode, clearNode]);\n }\n return renderNode;\n };\n }\n});", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nimport classNames from '../_util/classNames';\nimport ResizeObserver from '../vc-resize-observer';\nconst Filter = (_ref, _ref2) => {\n let {\n height,\n offset,\n prefixCls,\n onInnerResize\n } = _ref;\n let {\n slots\n } = _ref2;\n var _a;\n let outerStyle = {};\n let innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offset !== undefined) {\n outerStyle = {\n height: `${height}px`,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _extends(_extends({}, innerStyle), {\n transform: `translateY(${offset}px)`,\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0\n });\n }\n return _createVNode(\"div\", {\n \"style\": outerStyle\n }, [_createVNode(ResizeObserver, {\n \"onResize\": _ref3 => {\n let {\n offsetHeight\n } = _ref3;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"style\": innerStyle,\n \"class\": classNames({\n [`${prefixCls}-holder-inner`]: prefixCls\n })\n }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]\n })]);\n};\nFilter.displayName = 'Filter';\nFilter.inheritAttrs = false;\nFilter.props = {\n prefixCls: String,\n /** Virtual filler height. Should be `count * itemMinHeight` */\n height: Number,\n /** Set offset of visible items. Should be the top of start item position */\n offset: Number,\n onInnerResize: Function\n};\nexport default Filter;", "import { cloneVNode } from 'vue';\nimport { flattenChildren } from '../_util/props-util';\nconst Item = (_ref, _ref2) => {\n let {\n setRef\n } = _ref;\n let {\n slots\n } = _ref2;\n var _a;\n const children = flattenChildren((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));\n return children && children.length ? cloneVNode(children[0], {\n ref: setRef\n }) : children;\n};\nItem.props = {\n setRef: {\n type: Function,\n default: () => {}\n }\n};\nexport default Item;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode } from \"vue\";\nimport { defineComponent, reactive } from 'vue';\nimport classNames from '../_util/classNames';\nimport createRef from '../_util/createRef';\nimport raf from '../_util/raf';\nimport supportsPassive from '../_util/supportsPassive';\nconst MIN_SIZE = 20;\nfunction getPageY(e) {\n return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'ScrollBar',\n inheritAttrs: false,\n props: {\n prefixCls: String,\n scrollTop: Number,\n scrollHeight: Number,\n height: Number,\n count: Number,\n onScroll: {\n type: Function\n },\n onStartMove: {\n type: Function\n },\n onStopMove: {\n type: Function\n }\n },\n setup() {\n return {\n moveRaf: null,\n scrollbarRef: createRef(),\n thumbRef: createRef(),\n visibleTimeout: null,\n state: reactive({\n dragging: false,\n pageY: null,\n startTop: null,\n visible: false\n })\n };\n },\n watch: {\n scrollTop: {\n handler() {\n this.delayHidden();\n },\n flush: 'post'\n }\n },\n mounted() {\n var _a, _b;\n (_a = this.scrollbarRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('touchstart', this.onScrollbarTouchStart, supportsPassive ? {\n passive: false\n } : false);\n (_b = this.thumbRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('touchstart', this.onMouseDown, supportsPassive ? {\n passive: false\n } : false);\n },\n beforeUnmount() {\n this.removeEvents();\n clearTimeout(this.visibleTimeout);\n },\n methods: {\n delayHidden() {\n clearTimeout(this.visibleTimeout);\n this.state.visible = true;\n this.visibleTimeout = setTimeout(() => {\n this.state.visible = false;\n }, 2000);\n },\n onScrollbarTouchStart(e) {\n e.preventDefault();\n },\n onContainerMouseDown(e) {\n e.stopPropagation();\n e.preventDefault();\n },\n // ======================= Clean =======================\n patchEvents() {\n window.addEventListener('mousemove', this.onMouseMove);\n window.addEventListener('mouseup', this.onMouseUp);\n this.thumbRef.current.addEventListener('touchmove', this.onMouseMove, supportsPassive ? {\n passive: false\n } : false);\n this.thumbRef.current.addEventListener('touchend', this.onMouseUp);\n },\n removeEvents() {\n window.removeEventListener('mousemove', this.onMouseMove);\n window.removeEventListener('mouseup', this.onMouseUp);\n this.scrollbarRef.current.removeEventListener('touchstart', this.onScrollbarTouchStart, supportsPassive ? {\n passive: false\n } : false);\n if (this.thumbRef.current) {\n this.thumbRef.current.removeEventListener('touchstart', this.onMouseDown, supportsPassive ? {\n passive: false\n } : false);\n this.thumbRef.current.removeEventListener('touchmove', this.onMouseMove, supportsPassive ? {\n passive: false\n } : false);\n this.thumbRef.current.removeEventListener('touchend', this.onMouseUp);\n }\n raf.cancel(this.moveRaf);\n },\n // ======================= Thumb =======================\n onMouseDown(e) {\n const {\n onStartMove\n } = this.$props;\n _extends(this.state, {\n dragging: true,\n pageY: getPageY(e),\n startTop: this.getTop()\n });\n onStartMove();\n this.patchEvents();\n e.stopPropagation();\n e.preventDefault();\n },\n onMouseMove(e) {\n const {\n dragging,\n pageY,\n startTop\n } = this.state;\n const {\n onScroll\n } = this.$props;\n raf.cancel(this.moveRaf);\n if (dragging) {\n const offsetY = getPageY(e) - pageY;\n const newTop = startTop + offsetY;\n const enableScrollRange = this.getEnableScrollRange();\n const enableHeightRange = this.getEnableHeightRange();\n const ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n const newScrollTop = Math.ceil(ptg * enableScrollRange);\n this.moveRaf = raf(() => {\n onScroll(newScrollTop);\n });\n }\n },\n onMouseUp() {\n const {\n onStopMove\n } = this.$props;\n this.state.dragging = false;\n onStopMove();\n this.removeEvents();\n },\n // ===================== Calculate =====================\n getSpinHeight() {\n const {\n height,\n scrollHeight\n } = this.$props;\n let baseHeight = height / scrollHeight * 100;\n baseHeight = Math.max(baseHeight, MIN_SIZE);\n baseHeight = Math.min(baseHeight, height / 2);\n return Math.floor(baseHeight);\n },\n getEnableScrollRange() {\n const {\n scrollHeight,\n height\n } = this.$props;\n return scrollHeight - height || 0;\n },\n getEnableHeightRange() {\n const {\n height\n } = this.$props;\n const spinHeight = this.getSpinHeight();\n return height - spinHeight || 0;\n },\n getTop() {\n const {\n scrollTop\n } = this.$props;\n const enableScrollRange = this.getEnableScrollRange();\n const enableHeightRange = this.getEnableHeightRange();\n if (scrollTop === 0 || enableScrollRange === 0) {\n return 0;\n }\n const ptg = scrollTop / enableScrollRange;\n return ptg * enableHeightRange;\n },\n // Not show scrollbar when height is large than scrollHeight\n showScroll() {\n const {\n height,\n scrollHeight\n } = this.$props;\n return scrollHeight > height;\n }\n },\n render() {\n // eslint-disable-next-line no-unused-vars\n const {\n dragging,\n visible\n } = this.state;\n const {\n prefixCls\n } = this.$props;\n const spinHeight = this.getSpinHeight() + 'px';\n const top = this.getTop() + 'px';\n const canScroll = this.showScroll();\n const mergedVisible = canScroll && visible;\n return _createVNode(\"div\", {\n \"ref\": this.scrollbarRef,\n \"class\": classNames(`${prefixCls}-scrollbar`, {\n [`${prefixCls}-scrollbar-show`]: canScroll\n }),\n \"style\": {\n width: '8px',\n top: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: mergedVisible ? undefined : 'none'\n },\n \"onMousedown\": this.onContainerMouseDown,\n \"onMousemove\": this.delayHidden\n }, [_createVNode(\"div\", {\n \"ref\": this.thumbRef,\n \"class\": classNames(`${prefixCls}-scrollbar-thumb`, {\n [`${prefixCls}-scrollbar-thumb-moving`]: dragging\n }),\n \"style\": {\n width: '100%',\n height: spinHeight,\n top,\n left: 0,\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: '99px',\n cursor: 'pointer',\n userSelect: 'none'\n },\n \"onMousedown\": this.onMouseDown\n }, null)]);\n }\n});", "import { onUnmounted, watch, ref } from 'vue';\nimport wrapperRaf from '../../_util/raf';\nexport default function useHeights(mergedData, getKey, onItemAdd, onItemRemove) {\n const instance = new Map();\n const heights = new Map();\n const updatedMark = ref(Symbol('update'));\n watch(mergedData, () => {\n updatedMark.value = Symbol('update');\n });\n let collectRaf = undefined;\n function cancelRaf() {\n wrapperRaf.cancel(collectRaf);\n }\n function collectHeight() {\n cancelRaf();\n collectRaf = wrapperRaf(() => {\n instance.forEach((element, key) => {\n if (element && element.offsetParent) {\n const {\n offsetHeight\n } = element;\n if (heights.get(key) !== offsetHeight) {\n //changed = true;\n updatedMark.value = Symbol('update');\n heights.set(key, element.offsetHeight);\n }\n }\n });\n });\n }\n function setInstance(item, ins) {\n const key = getKey(item);\n const origin = instance.get(key);\n if (ins) {\n instance.set(key, ins.$el || ins);\n collectHeight();\n } else {\n instance.delete(key);\n }\n // Instance changed\n if (!origin !== !ins) {\n if (ins) {\n onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);\n }\n }\n }\n onUnmounted(() => {\n cancelRaf();\n });\n return [setInstance, collectHeight, heights, updatedMark];\n}", "import raf from '../../_util/raf';\nexport default function useScrollTo(containerRef, mergedData, heights, props, getKey, collectHeight, syncScrollTop, triggerFlash) {\n let scroll;\n return arg => {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n // Normal scroll logic\n raf.cancel(scroll);\n const data = mergedData.value;\n const itemHeight = props.itemHeight;\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && typeof arg === 'object') {\n let index;\n const {\n align\n } = arg;\n if ('index' in arg) {\n ({\n index\n } = arg);\n } else {\n index = data.findIndex(item => getKey(item) === arg.key);\n }\n const {\n offset = 0\n } = arg;\n // We will retry 3 times in case dynamic height shaking\n const syncScroll = (times, targetAlign) => {\n if (times < 0 || !containerRef.value) return;\n const height = containerRef.value.clientHeight;\n let needCollectHeight = false;\n let newTargetAlign = targetAlign;\n // Go to next frame if height not exist\n if (height) {\n const mergedAlign = targetAlign || align;\n // Get top & bottom\n let stackTop = 0;\n let itemTop = 0;\n let itemBottom = 0;\n const maxLen = Math.min(data.length, index);\n for (let i = 0; i <= maxLen; i += 1) {\n const key = getKey(data[i]);\n itemTop = stackTop;\n const cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n if (i === index && cacheHeight === undefined) {\n needCollectHeight = true;\n }\n }\n const scrollTop = containerRef.value.scrollTop;\n // Scroll to\n let targetTop = null;\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n const scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null && targetTop !== scrollTop) {\n syncScrollTop(targetTop);\n }\n }\n // We will retry since element may not sync height as it described\n scroll = raf(() => {\n if (needCollectHeight) {\n collectHeight();\n }\n syncScroll(times - 1, newTargetAlign);\n }, 2);\n };\n syncScroll(5);\n }\n };\n}", "const isFF = typeof navigator === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;", "export default ((isScrollAtTop, isScrollAtBottom) => {\n // Do lock for a wheel when scrolling\n let lock = false;\n let lockTimeout = null;\n function lockScroll() {\n clearTimeout(lockTimeout);\n lock = true;\n lockTimeout = setTimeout(() => {\n lock = false;\n }, 50);\n }\n return function (deltaY) {\n let smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const originScroll =\n // Pass origin wheel when on the top\n deltaY < 0 && isScrollAtTop.value ||\n // Pass origin wheel when on the bottom\n deltaY > 0 && isScrollAtBottom.value;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeout);\n lock = false;\n } else if (!originScroll || lock) {\n lockScroll();\n }\n return !lock && originScroll;\n };\n});", "import raf from '../../_util/raf';\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, onWheelDelta) {\n let offsetRef = 0;\n let nextFrame = null;\n // Firefox patch\n let wheelValue = null;\n let isMouseScroll = false;\n // Scroll status sync\n const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n function onWheel(event) {\n if (!inVirtual.value) return;\n raf.cancel(nextFrame);\n const {\n deltaY\n } = event;\n offsetRef += deltaY;\n wheelValue = deltaY;\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(deltaY)) return;\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrame = raf(() => {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n const patchMultiple = isMouseScroll ? 10 : 1;\n onWheelDelta(offsetRef * patchMultiple);\n offsetRef = 0;\n });\n }\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual.value) return;\n isMouseScroll = event.detail === wheelValue;\n }\n return [onWheel, onFireFoxScroll];\n}", "import { onBeforeUnmount, watch, onMounted } from 'vue';\nconst SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n let touched = false;\n let touchY = 0;\n let element = null;\n // Smooth scroll\n let interval = null;\n const cleanUpEvents = () => {\n if (element) {\n element.removeEventListener('touchmove', onTouchMove);\n element.removeEventListener('touchend', onTouchEnd);\n }\n };\n const onTouchMove = e => {\n if (touched) {\n const currentY = Math.ceil(e.touches[0].pageY);\n let offsetY = touchY - currentY;\n touchY = currentY;\n if (callback(offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(interval);\n interval = setInterval(() => {\n offsetY *= SMOOTH_PTG;\n if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n clearInterval(interval);\n }\n }, 16);\n }\n };\n const onTouchEnd = () => {\n touched = false;\n cleanUpEvents();\n };\n const onTouchStart = e => {\n cleanUpEvents();\n if (e.touches.length === 1 && !touched) {\n touched = true;\n touchY = Math.ceil(e.touches[0].pageY);\n element = e.target;\n element.addEventListener('touchmove', onTouchMove, {\n passive: false\n });\n element.addEventListener('touchend', onTouchEnd);\n }\n };\n const noop = () => {};\n onMounted(() => {\n document.addEventListener('touchmove', noop, {\n passive: false\n });\n watch(inVirtual, val => {\n listRef.value.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(interval);\n if (val) {\n listRef.value.addEventListener('touchstart', onTouchStart, {\n passive: false\n });\n }\n }, {\n immediate: true\n });\n });\n onBeforeUnmount(() => {\n document.removeEventListener('touchmove', noop);\n });\n}", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { resolveDirective as _resolveDirective, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { shallowRef, toRaw, onMounted, onUpdated, defineComponent, watchEffect, computed, nextTick, onBeforeUnmount, reactive, watch } from 'vue';\nimport Filler from './Filler';\nimport Item from './Item';\nimport ScrollBar from './ScrollBar';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport PropTypes from '../_util/vue-types';\nimport classNames from '../_util/classNames';\nimport supportsPassive from '../_util/supportsPassive';\nconst EMPTY_DATA = [];\nconst ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nfunction renderChildren(list, startIndex, endIndex, setNodeRef, renderFunc, _ref) {\n let {\n getKey\n } = _ref;\n return list.slice(startIndex, endIndex + 1).map((item, index) => {\n const eleIndex = startIndex + index;\n const node = renderFunc(item, eleIndex, {\n // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n });\n const key = getKey(item);\n return _createVNode(Item, {\n \"key\": key,\n \"setRef\": ele => setNodeRef(item, ele)\n }, {\n default: () => [node]\n });\n });\n}\nconst List = defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'List',\n inheritAttrs: false,\n props: {\n prefixCls: String,\n data: PropTypes.array,\n height: Number,\n itemHeight: Number,\n /** If not match virtual scroll condition, Set List still use height of container. */\n fullHeight: {\n type: Boolean,\n default: undefined\n },\n itemKey: {\n type: [String, Number, Function],\n required: true\n },\n component: {\n type: [String, Object]\n },\n /** Set `false` will always use real scroll instead of virtual one */\n virtual: {\n type: Boolean,\n default: undefined\n },\n children: Function,\n onScroll: Function,\n onMousedown: Function,\n onMouseenter: Function,\n onVisibleChange: Function\n },\n setup(props, _ref2) {\n let {\n expose\n } = _ref2;\n // ================================= MISC =================================\n const useVirtual = computed(() => {\n const {\n height,\n itemHeight,\n virtual\n } = props;\n return !!(virtual !== false && height && itemHeight);\n });\n const inVirtual = computed(() => {\n const {\n height,\n itemHeight,\n data\n } = props;\n return useVirtual.value && data && itemHeight * data.length > height;\n });\n const state = reactive({\n scrollTop: 0,\n scrollMoving: false\n });\n const data = computed(() => {\n return props.data || EMPTY_DATA;\n });\n const mergedData = shallowRef([]);\n watch(data, () => {\n mergedData.value = toRaw(data.value).slice();\n }, {\n immediate: true\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const itemKey = shallowRef(_item => undefined);\n watch(() => props.itemKey, val => {\n if (typeof val === 'function') {\n itemKey.value = val;\n } else {\n itemKey.value = item => item === null || item === void 0 ? void 0 : item[val];\n }\n }, {\n immediate: true\n });\n const componentRef = shallowRef();\n const fillerInnerRef = shallowRef();\n const scrollBarRef = shallowRef(); // Hack on scrollbar to enable flash call\n // =============================== Item Key ===============================\n const getKey = item => {\n return itemKey.value(item);\n };\n const sharedConfig = {\n getKey\n };\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n let value;\n if (typeof newTop === 'function') {\n value = newTop(state.scrollTop);\n } else {\n value = newTop;\n }\n const alignedTop = keepInRange(value);\n if (componentRef.value) {\n componentRef.value.scrollTop = alignedTop;\n }\n state.scrollTop = alignedTop;\n }\n // ================================ Height ================================\n const [setInstance, collectHeight, heights, updatedMark] = useHeights(mergedData, getKey, null, null);\n const calRes = reactive({\n scrollHeight: undefined,\n start: 0,\n end: 0,\n offset: undefined\n });\n const offsetHeight = shallowRef(0);\n onMounted(() => {\n nextTick(() => {\n var _a;\n offsetHeight.value = ((_a = fillerInnerRef.value) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;\n });\n });\n onUpdated(() => {\n nextTick(() => {\n var _a;\n offsetHeight.value = ((_a = fillerInnerRef.value) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;\n });\n });\n watch([useVirtual, mergedData], () => {\n if (!useVirtual.value) {\n _extends(calRes, {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.value.length - 1,\n offset: undefined\n });\n }\n }, {\n immediate: true\n });\n watch([useVirtual, mergedData, offsetHeight, inVirtual], () => {\n // Always use virtual scroll bar in avoid shaking\n if (useVirtual.value && !inVirtual.value) {\n _extends(calRes, {\n scrollHeight: offsetHeight.value,\n start: 0,\n end: mergedData.value.length - 1,\n offset: undefined\n });\n }\n if (componentRef.value) {\n state.scrollTop = componentRef.value.scrollTop;\n }\n }, {\n immediate: true\n });\n watch([inVirtual, useVirtual, () => state.scrollTop, mergedData, updatedMark, () => props.height, offsetHeight], () => {\n if (!useVirtual.value || !inVirtual.value) {\n return;\n }\n let itemTop = 0;\n let startIndex;\n let startOffset;\n let endIndex;\n const dataLen = mergedData.value.length;\n const data = mergedData.value;\n const scrollTop = state.scrollTop;\n const {\n itemHeight,\n height\n } = props;\n const scrollTopHeight = scrollTop + height;\n for (let i = 0; i < dataLen; i += 1) {\n const item = data[i];\n const key = getKey(item);\n let cacheHeight = heights.get(key);\n if (cacheHeight === undefined) {\n cacheHeight = itemHeight;\n }\n const currentItemBottom = itemTop + cacheHeight;\n if (startIndex === undefined && currentItemBottom >= scrollTop) {\n startIndex = i;\n startOffset = itemTop;\n }\n // Check item bottom in the range. We will render additional one item for motion usage\n if (endIndex === undefined && currentItemBottom > scrollTopHeight) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = dataLen - 1;\n }\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, dataLen);\n _extends(calRes, {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n });\n }, {\n immediate: true\n });\n // =============================== In Range ===============================\n const maxScrollHeight = computed(() => calRes.scrollHeight - props.height);\n function keepInRange(newScrollTop) {\n let newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeight.value)) {\n newTop = Math.min(newTop, maxScrollHeight.value);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n const isScrollAtTop = computed(() => state.scrollTop <= 0);\n const isScrollAtBottom = computed(() => state.scrollTop >= maxScrollHeight.value);\n const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n // ================================ Scroll ================================\n function onScrollBar(newScrollTop) {\n const newTop = newScrollTop;\n syncScrollTop(newTop);\n }\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var _a;\n const {\n scrollTop: newScrollTop\n } = e.currentTarget;\n if (newScrollTop !== state.scrollTop) {\n syncScrollTop(newScrollTop);\n }\n // Trigger origin onScroll\n (_a = props.onScroll) === null || _a === void 0 ? void 0 : _a.call(props, e);\n }\n // Since this added in global,should use ref to keep update\n const [onRawWheel, onFireFoxScroll] = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, offsetY => {\n syncScrollTop(top => {\n const newTop = top + offsetY;\n return newTop;\n });\n });\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, (deltaY, smoothOffset) => {\n if (originScroll(deltaY, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault() {},\n deltaY\n });\n return true;\n });\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual.value) {\n e.preventDefault();\n }\n }\n const removeEventListener = () => {\n if (componentRef.value) {\n componentRef.value.removeEventListener('wheel', onRawWheel, supportsPassive ? {\n passive: false\n } : false);\n componentRef.value.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.value.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n }\n };\n watchEffect(() => {\n nextTick(() => {\n if (componentRef.value) {\n removeEventListener();\n componentRef.value.addEventListener('wheel', onRawWheel, supportsPassive ? {\n passive: false\n } : false);\n componentRef.value.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.value.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n }\n });\n });\n onBeforeUnmount(() => {\n removeEventListener();\n });\n // ================================= Ref ==================================\n const scrollTo = useScrollTo(componentRef, mergedData, heights, props, getKey, collectHeight, syncScrollTop, () => {\n var _a;\n (_a = scrollBarRef.value) === null || _a === void 0 ? void 0 : _a.delayHidden();\n });\n expose({\n scrollTo\n });\n const componentStyle = computed(() => {\n let cs = null;\n if (props.height) {\n cs = _extends({\n [props.fullHeight ? 'height' : 'maxHeight']: props.height + 'px'\n }, ScrollStyle);\n if (useVirtual.value) {\n cs.overflowY = 'hidden';\n if (state.scrollMoving) {\n cs.pointerEvents = 'none';\n }\n }\n }\n return cs;\n });\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n watch([() => calRes.start, () => calRes.end, mergedData], () => {\n if (props.onVisibleChange) {\n const renderList = mergedData.value.slice(calRes.start, calRes.end + 1);\n props.onVisibleChange(renderList, mergedData.value);\n }\n }, {\n flush: 'post'\n });\n const delayHideScrollBar = () => {\n var _a;\n (_a = scrollBarRef.value) === null || _a === void 0 ? void 0 : _a.delayHidden();\n };\n return {\n state,\n mergedData,\n componentStyle,\n onFallbackScroll,\n onScrollBar,\n componentRef,\n useVirtual,\n calRes,\n collectHeight,\n setInstance,\n sharedConfig,\n scrollBarRef,\n fillerInnerRef,\n delayHideScrollBar\n };\n },\n render() {\n const _a = _extends(_extends({}, this.$props), this.$attrs),\n {\n prefixCls = 'rc-virtual-list',\n height,\n itemHeight,\n // eslint-disable-next-line no-unused-vars\n fullHeight,\n data,\n itemKey,\n virtual,\n component: Component = 'div',\n onScroll,\n children = this.$slots.default,\n style,\n class: className\n } = _a,\n restProps = __rest(_a, [\"prefixCls\", \"height\", \"itemHeight\", \"fullHeight\", \"data\", \"itemKey\", \"virtual\", \"component\", \"onScroll\", \"children\", \"style\", \"class\"]);\n const mergedClassName = classNames(prefixCls, className);\n const {\n scrollTop\n } = this.state;\n const {\n scrollHeight,\n offset,\n start,\n end\n } = this.calRes;\n const {\n componentStyle,\n onFallbackScroll,\n onScrollBar,\n useVirtual,\n collectHeight,\n sharedConfig,\n setInstance,\n mergedData,\n delayHideScrollBar\n } = this;\n return _createVNode(\"div\", _objectSpread({\n \"style\": _extends(_extends({}, style), {\n position: 'relative'\n }),\n \"class\": mergedClassName\n }, restProps), [_createVNode(Component, {\n \"class\": `${prefixCls}-holder`,\n \"style\": componentStyle,\n \"ref\": \"componentRef\",\n \"onScroll\": onFallbackScroll,\n \"onMouseenter\": delayHideScrollBar\n }, {\n default: () => [_createVNode(Filler, {\n \"prefixCls\": prefixCls,\n \"height\": scrollHeight,\n \"offset\": offset,\n \"onInnerResize\": collectHeight,\n \"ref\": \"fillerInnerRef\"\n }, {\n default: () => renderChildren(mergedData, start, end, setInstance, children, sharedConfig)\n })]\n }), useVirtual && _createVNode(ScrollBar, {\n \"ref\": \"scrollBarRef\",\n \"prefixCls\": prefixCls,\n \"scrollTop\": scrollTop,\n \"height\": height,\n \"scrollHeight\": scrollHeight,\n \"count\": mergedData.length,\n \"onScroll\": onScrollBar,\n \"onStartMove\": () => {\n this.state.scrollMoving = true;\n },\n \"onStopMove\": () => {\n this.state.scrollMoving = false;\n }\n }, null)]);\n }\n});\nexport default List;", "// base rc-virtual-list 3.4.13\nimport List from './List';\nexport default List;", "import { ref, watch } from 'vue';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n const cacheRef = ref(getValue());\n watch(condition, (next, pre) => {\n if (shouldUpdate) {\n if (shouldUpdate(next, pre)) {\n cacheRef.value = getValue();\n }\n } else {\n cacheRef.value = getValue();\n }\n });\n return cacheRef;\n}", "/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}", "/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\nimport { inject, provide } from 'vue';\nconst SelectContextKey = Symbol('SelectContextKey');\nexport function useProvideSelectProps(props) {\n return provide(SelectContextKey, props);\n}\nexport default function useSelectProps() {\n return inject(SelectContextKey, {});\n}", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport TransBtn from './TransBtn';\nimport KeyCode from '../_util/KeyCode';\nimport classNames from '../_util/classNames';\nimport pickAttrs from '../_util/pickAttrs';\nimport { isValidElement } from '../_util/props-util';\nimport createRef from '../_util/createRef';\nimport { computed, defineComponent, nextTick, reactive, toRaw, watch } from 'vue';\nimport List from '../vc-virtual-list';\nimport useMemo from '../_util/hooks/useMemo';\nimport { isPlatformMac } from './utils/platformUtil';\nimport omit from '../_util/omit';\nimport useBaseProps from './hooks/useBaseProps';\nimport useSelectProps from './SelectContext';\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nconst OptionList = defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'OptionList',\n inheritAttrs: false,\n setup(_, _ref) {\n let {\n expose,\n slots\n } = _ref;\n const baseProps = useBaseProps();\n const props = useSelectProps();\n const itemPrefixCls = computed(() => `${baseProps.prefixCls}-item`);\n const memoFlattenOptions = useMemo(() => props.flattenOptions, [() => baseProps.open, () => props.flattenOptions], next => next[0]);\n // =========================== List ===========================\n const listRef = createRef();\n const onListMouseDown = event => {\n event.preventDefault();\n };\n const scrollIntoView = args => {\n if (listRef.current) {\n listRef.current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n }\n };\n // ========================== Active ==========================\n const getEnabledActiveIndex = function (index) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n const len = memoFlattenOptions.value.length;\n for (let i = 0; i < len; i += 1) {\n const current = (index + i * offset + len) % len;\n const {\n group,\n data\n } = memoFlattenOptions.value[current];\n if (!group && !data.disabled) {\n return current;\n }\n }\n return -1;\n };\n const state = reactive({\n activeIndex: getEnabledActiveIndex(0)\n });\n const setActive = function (index) {\n let fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.activeIndex = index;\n const info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n // Trigger active event\n const flattenItem = memoFlattenOptions.value[index];\n if (!flattenItem) {\n props.onActiveValue(null, -1, info);\n return;\n }\n props.onActiveValue(flattenItem.value, index, info);\n };\n // Auto active first item when list length or searchValue changed\n watch([() => memoFlattenOptions.value.length, () => baseProps.searchValue], () => {\n setActive(props.defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, {\n immediate: true\n });\n // https://github.com/ant-design/ant-design/issues/34975\n const isSelected = value => props.rawValues.has(value) && baseProps.mode !== 'combobox';\n // Auto scroll to item position in single mode\n watch([() => baseProps.open, () => baseProps.searchValue], () => {\n if (!baseProps.multiple && baseProps.open && props.rawValues.size === 1) {\n const value = Array.from(props.rawValues)[0];\n const index = toRaw(memoFlattenOptions.value).findIndex(_ref2 => {\n let {\n data\n } = _ref2;\n return data[props.fieldNames.value] === value;\n });\n if (index !== -1) {\n setActive(index);\n nextTick(() => {\n scrollIntoView(index);\n });\n }\n }\n // Force trigger scrollbar visible when open\n if (baseProps.open) {\n nextTick(() => {\n var _a;\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(undefined);\n });\n }\n }, {\n immediate: true,\n flush: 'post'\n });\n // ========================== Values ==========================\n const onSelectValue = value => {\n if (value !== undefined) {\n props.onSelect(value, {\n selected: !props.rawValues.has(value)\n });\n }\n // Single mode should always close by select\n if (!baseProps.multiple) {\n baseProps.toggleOpen(false);\n }\n };\n const getLabel = item => typeof item.label === 'function' ? item.label() : item.label;\n function renderItem(index) {\n const item = memoFlattenOptions.value[index];\n if (!item) return null;\n const itemData = item.data || {};\n const {\n value\n } = itemData;\n const {\n group\n } = item;\n const attrs = pickAttrs(itemData, true);\n const mergedLabel = getLabel(item);\n return item ? _createVNode(\"div\", _objectSpread(_objectSpread({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs), {}, {\n \"key\": index,\n \"role\": group ? 'presentation' : 'option',\n \"id\": `${baseProps.id}_list_${index}`,\n \"aria-selected\": isSelected(value)\n }), [value]) : null;\n }\n const onKeydown = event => {\n const {\n which,\n ctrlKey\n } = event;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n let offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n const nextActiveIndex = getEnabledActiveIndex(state.activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n // >>> Select\n case KeyCode.ENTER:\n {\n // value\n const item = memoFlattenOptions.value[state.activeIndex];\n if (item && !item.data.disabled) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (baseProps.open) {\n event.preventDefault();\n }\n break;\n }\n // >>> Close\n case KeyCode.ESC:\n {\n baseProps.toggleOpen(false);\n if (baseProps.open) {\n event.stopPropagation();\n }\n }\n }\n };\n const onKeyup = () => {};\n const scrollTo = index => {\n scrollIntoView(index);\n };\n expose({\n onKeydown,\n onKeyup,\n scrollTo\n });\n return () => {\n // const {\n // renderItem,\n // listRef,\n // onListMouseDown,\n // itemPrefixCls,\n // setActive,\n // onSelectValue,\n // memoFlattenOptions,\n // $slots,\n // } = this as any;\n const {\n id,\n notFoundContent,\n onPopupScroll\n } = baseProps;\n const {\n menuItemSelectedIcon,\n fieldNames,\n virtual,\n listHeight,\n listItemHeight\n } = props;\n const renderOption = slots.option;\n const {\n activeIndex\n } = state;\n const omitFieldNameList = Object.keys(fieldNames).map(key => fieldNames[key]);\n // ========================== Render ==========================\n if (memoFlattenOptions.value.length === 0) {\n return _createVNode(\"div\", {\n \"role\": \"listbox\",\n \"id\": `${id}_list`,\n \"class\": `${itemPrefixCls.value}-empty`,\n \"onMousedown\": onListMouseDown\n }, [notFoundContent]);\n }\n return _createVNode(_Fragment, null, [_createVNode(\"div\", {\n \"role\": \"listbox\",\n \"id\": `${id}_list`,\n \"style\": {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }, [renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)]), _createVNode(List, {\n \"itemKey\": \"key\",\n \"ref\": listRef,\n \"data\": memoFlattenOptions.value,\n \"height\": listHeight,\n \"itemHeight\": listItemHeight,\n \"fullHeight\": false,\n \"onMousedown\": onListMouseDown,\n \"onScroll\": onPopupScroll,\n \"virtual\": virtual\n }, {\n default: (item, itemIndex) => {\n var _a;\n const {\n group,\n groupOption,\n data,\n value\n } = item;\n const {\n key\n } = data;\n const label = typeof item.label === 'function' ? item.label() : item.label;\n // Group\n if (group) {\n const groupTitle = (_a = data.title) !== null && _a !== void 0 ? _a : isTitleType(label) && label;\n return _createVNode(\"div\", {\n \"class\": classNames(itemPrefixCls.value, `${itemPrefixCls.value}-group`),\n \"title\": groupTitle\n }, [renderOption ? renderOption(data) : label !== undefined ? label : key]);\n }\n const {\n disabled,\n title,\n children,\n style,\n class: cls,\n className\n } = data,\n otherProps = __rest(data, [\"disabled\", \"title\", \"children\", \"style\", \"class\", \"className\"]);\n const passedProps = omit(otherProps, omitFieldNameList);\n // Option\n const selected = isSelected(value);\n const optionPrefixCls = `${itemPrefixCls.value}-option`;\n const optionClassName = classNames(itemPrefixCls.value, optionPrefixCls, cls, className, {\n [`${optionPrefixCls}-grouped`]: groupOption,\n [`${optionPrefixCls}-active`]: activeIndex === itemIndex && !disabled,\n [`${optionPrefixCls}-disabled`]: disabled,\n [`${optionPrefixCls}-selected`]: selected\n });\n const mergedLabel = getLabel(item);\n const iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n // https://github.com/ant-design/ant-design/issues/34145\n const content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n let optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return _createVNode(\"div\", _objectSpread(_objectSpread({}, passedProps), {}, {\n \"aria-selected\": selected,\n \"class\": optionClassName,\n \"title\": optionTitle,\n \"onMousemove\": e => {\n if (otherProps.onMousemove) {\n otherProps.onMousemove(e);\n }\n if (activeIndex === itemIndex || disabled) {\n return;\n }\n setActive(itemIndex);\n },\n \"onClick\": e => {\n if (!disabled) {\n onSelectValue(value);\n }\n if (otherProps.onClick) {\n otherProps.onClick(e);\n }\n },\n \"style\": style\n }), [_createVNode(\"div\", {\n \"class\": `${optionPrefixCls}-content`\n }, [renderOption ? renderOption(data) : content]), isValidElement(menuItemSelectedIcon) || selected, iconVisible && _createVNode(TransBtn, {\n \"class\": `${itemPrefixCls.value}-option-state`,\n \"customizeIcon\": menuItemSelectedIcon,\n \"customizeIconProps\": {\n isSelected: selected\n }\n }, {\n default: () => [selected ? '✓' : null]\n })]);\n }\n })]);\n };\n }\n});\nexport default OptionList;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { flattenChildren, isValidElement } from '../../_util/props-util';\nfunction convertNodeToOption(node) {\n const _a = node,\n {\n key,\n children\n } = _a,\n _b = _a.props,\n {\n value,\n disabled\n } = _b,\n restProps = __rest(_b, [\"value\", \"disabled\"]);\n const child = children === null || children === void 0 ? void 0 : children.default;\n return _extends({\n key,\n value: value !== undefined ? value : key,\n children: child,\n disabled: disabled || disabled === ''\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n let optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const dd = flattenChildren(nodes).map((node, index) => {\n var _a;\n if (!isValidElement(node) || !node.type) {\n return null;\n }\n const {\n type: {\n isSelectOptGroup\n },\n key,\n children,\n props\n } = node;\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n const child = children && children.default ? children.default() : undefined;\n const label = (props === null || props === void 0 ? void 0 : props.label) || ((_a = children.label) === null || _a === void 0 ? void 0 : _a.call(children)) || key;\n return _extends(_extends({\n key: `__RC_SELECT_GRP__${key === null ? index : String(key)}__`\n }, props), {\n label,\n options: convertChildrenToData(child || [])\n });\n }).filter(data => data);\n return dd;\n}", "import { toRaw, shallowRef, watchEffect, watch } from 'vue';\nimport { convertChildrenToData } from '../utils/legacyUtil';\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nexport default function useOptions(options, children, fieldNames) {\n const mergedOptions = shallowRef();\n const valueOptions = shallowRef();\n const labelOptions = shallowRef();\n const tempMergedOptions = shallowRef([]);\n watch([options, children], () => {\n if (options.value) {\n tempMergedOptions.value = toRaw(options.value).slice();\n } else {\n tempMergedOptions.value = convertChildrenToData(children.value);\n }\n }, {\n immediate: true,\n deep: true\n });\n watchEffect(() => {\n const newOptions = tempMergedOptions.value;\n const newValueOptions = new Map();\n const newLabelOptions = new Map();\n const fieldNamesValue = fieldNames.value;\n function dig(optionList) {\n let isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (let i = 0; i < optionList.length; i += 1) {\n const option = optionList[i];\n if (!option[fieldNamesValue.options] || isChildren) {\n newValueOptions.set(option[fieldNamesValue.value], option);\n newLabelOptions.set(option[fieldNamesValue.label], option);\n } else {\n dig(option[fieldNamesValue.options], true);\n }\n }\n }\n dig(newOptions);\n mergedOptions.value = newOptions;\n valueOptions.value = newValueOptions;\n labelOptions.value = newLabelOptions;\n });\n return {\n options: mergedOptions,\n valueOptions,\n labelOptions\n };\n}", "import { ref } from 'vue';\nimport canUseDom from '../../_util/canUseDom';\nlet uuid = 0;\n/** Is client side and not jsdom */\nexport const isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n let retId;\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId() {\n let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ref('');\n // Inner id for accessibility usage. Only work in client side\n const innerId = `rc_select_${getUUID()}`;\n return id.value || innerId;\n}", "export function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport const isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n/** Is client side and not jsdom */\nexport const isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;", "import warning, { noteOnce } from '../../vc-util/warning';\nimport { convertChildrenToData } from './legacyUtil';\nimport { toArray } from './commonUtil';\nimport { isValidElement } from '../../_util/props-util';\nimport { isMultiple } from '../BaseSelect';\nfunction warningProps(props) {\n const {\n mode,\n options,\n children,\n backfill,\n allowClear,\n placeholder,\n getInputElement,\n showSearch,\n onSearch,\n defaultOpen,\n autofocus,\n labelInValue,\n value,\n inputValue,\n optionLabelProp\n } = props;\n const multiple = isMultiple(mode);\n const mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n const mergedOptions = options || convertChildrenToData(children);\n // `tags` should not set option as disabled\n warning(mode !== 'tags' || mergedOptions.every(opt => !opt.disabled), 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n // `combobox` should not use `optionLabelProp`\n warning(mode !== 'combobox' || !optionLabelProp, '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.');\n // Only `combobox` support `backfill`\n warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n // Only `combobox` support `getInputElement`\n warning(mode === 'combobox' || !getInputElement, '`getInputElement` only work with `combobox` mode.');\n // Customize `getInputElement` should not use `allowClear` & `placeholder`\n noteOnce(mode !== 'combobox' || !getInputElement || !allowClear || !placeholder, 'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.');\n // `onSearch` should use in `combobox` or `showSearch`\n if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags') {\n warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n }\n noteOnce(!defaultOpen || autofocus, '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autofocus` if needed.');\n if (value !== undefined && value !== null) {\n const values = toArray(value);\n warning(!labelInValue || values.every(val => typeof val === 'object' && ('key' in val || 'value' in val)), '`value` should in shape of `{ value: string | number, label?: any }` when you set `labelInValue` to `true`');\n warning(!multiple || Array.isArray(value), '`value` should be array when `mode` is `multiple` or `tags`');\n }\n // Syntactic sugar should use correct children type\n if (children) {\n let invalidateChildType = null;\n children.some(node => {\n var _a;\n if (!isValidElement(node) || !node.type) {\n return false;\n }\n const {\n type\n } = node;\n if (type.isSelectOption) {\n return false;\n }\n if (type.isSelectOptGroup) {\n const childs = ((_a = node.children) === null || _a === void 0 ? void 0 : _a.default()) || [];\n const allChildrenValid = childs.every(subNode => {\n if (!isValidElement(subNode) || !node.type || subNode.type.isSelectOption) {\n return true;\n }\n invalidateChildType = subNode.type;\n return false;\n });\n if (allChildrenValid) {\n return false;\n }\n return true;\n }\n invalidateChildType = type;\n return true;\n });\n if (invalidateChildType) {\n warning(false, `\\`children\\` should be \\`Select.Option\\` or \\`Select.OptGroup\\` instead of \\`${invalidateChildType.displayName || invalidateChildType.name || invalidateChildType}\\`.`);\n }\n warning(inputValue === undefined, '`inputValue` is deprecated, please use `searchValue` instead.');\n }\n}\nexport default warningProps;", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { toArray } from '../utils/commonUtil';\nimport { injectPropsWithOption } from '../utils/valueUtil';\nimport { computed } from 'vue';\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default ((options, fieldNames, searchValue, filterOption, optionFilterProp) => computed(() => {\n const searchValueVal = searchValue.value;\n const optionFilterPropValue = optionFilterProp === null || optionFilterProp === void 0 ? void 0 : optionFilterProp.value;\n const filterOptionValue = filterOption === null || filterOption === void 0 ? void 0 : filterOption.value;\n if (!searchValueVal || filterOptionValue === false) {\n return options.value;\n }\n const {\n options: fieldOptions,\n label: fieldLabel,\n value: fieldValue\n } = fieldNames.value;\n const filteredOptions = [];\n const customizeFilter = typeof filterOptionValue === 'function';\n const upperSearch = searchValueVal.toUpperCase();\n const filterFunc = customizeFilter ? filterOptionValue : (_, option) => {\n // Use provided `optionFilterProp`\n if (optionFilterPropValue) {\n return includes(option[optionFilterPropValue], upperSearch);\n }\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n const wrapOption = customizeFilter ? opt => injectPropsWithOption(opt) : opt => opt;\n options.value.forEach(item => {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n const matchGroup = filterFunc(searchValueVal, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n const subOptions = item[fieldOptions].filter(subItem => filterFunc(searchValueVal, wrapOption(subItem)));\n if (subOptions.length) {\n filteredOptions.push(_extends(_extends({}, item), {\n [fieldOptions]: subOptions\n }));\n }\n }\n return;\n }\n if (filterFunc(searchValueVal, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n}));", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { shallowRef, computed } from 'vue';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default ((labeledValues, valueOptions) => {\n const cacheRef = shallowRef({\n values: new Map(),\n options: new Map()\n });\n const filledLabeledValues = computed(() => {\n const {\n values: prevValueCache,\n options: prevOptionCache\n } = cacheRef.value;\n // Fill label by cache\n const patchedValues = labeledValues.value.map(item => {\n var _a;\n if (item.label === undefined) {\n return _extends(_extends({}, item), {\n label: (_a = prevValueCache.get(item.value)) === null || _a === void 0 ? void 0 : _a.label\n });\n }\n return item;\n });\n // Refresh cache\n const valueCache = new Map();\n const optionCache = new Map();\n patchedValues.forEach(item => {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.value.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.value.values = valueCache;\n cacheRef.value.options = optionCache;\n return patchedValues;\n });\n const getOption = val => valueOptions.value.get(val) || cacheRef.value.options.get(val);\n return [filledLabeledValues, getOption];\n});", "import { toRaw, watchEffect, unref, watch, ref } from 'vue';\nexport default function useMergedState(defaultStateValue, option) {\n const {\n defaultValue,\n value = ref()\n } = option || {};\n let initValue = typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n if (value.value !== undefined) {\n initValue = unref(value);\n }\n if (defaultValue !== undefined) {\n initValue = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n }\n const innerValue = ref(initValue);\n const mergedValue = ref(initValue);\n watchEffect(() => {\n let val = value.value !== undefined ? value.value : innerValue.value;\n if (option.postState) {\n val = option.postState(val);\n }\n mergedValue.value = val;\n });\n function triggerChange(newValue) {\n const preVal = mergedValue.value;\n innerValue.value = newValue;\n if (toRaw(mergedValue.value) !== newValue && option.onChange) {\n option.onChange(newValue, preVal);\n }\n }\n // Effect of reset value to `undefined`\n watch(value, () => {\n innerValue.value = value.value;\n });\n return [mergedValue, triggerChange];\n}", "import { ref } from 'vue';\nexport default function useState(defaultStateValue) {\n const initValue = typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n const innerValue = ref(initValue);\n function triggerChange(newValue) {\n innerValue.value = newValue;\n }\n return [innerValue, triggerChange];\n}", "import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createVNode as _createVNode, resolveDirective as _resolveDirective } from \"vue\";\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabindex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\nimport BaseSelect, { baseSelectPropsWithoutPrivate, isMultiple } from './BaseSelect';\nimport OptionList from './OptionList';\nimport useOptions from './hooks/useOptions';\nimport { useProvideSelectProps } from './SelectContext';\nimport useId from './hooks/useId';\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from './utils/valueUtil';\nimport warningProps from './utils/warningPropsUtil';\nimport { toArray } from './utils/commonUtil';\nimport useFilterOptions from './hooks/useFilterOptions';\nimport useCache from './hooks/useCache';\nimport { computed, defineComponent, ref, shallowRef, toRef, watchEffect } from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\nimport useMergedState from '../_util/hooks/useMergedState';\nimport useState from '../_util/hooks/useState';\nimport { toReactive } from '../_util/toReactive';\nimport omit from '../_util/omit';\nconst OMIT_DOM_PROPS = ['inputValue'];\nexport function selectProps() {\n return _extends(_extends({}, baseSelectPropsWithoutPrivate()), {\n prefixCls: String,\n id: String,\n backfill: {\n type: Boolean,\n default: undefined\n },\n // >>> Field Names\n fieldNames: Object,\n // >>> Search\n /** @deprecated Use `searchValue` instead */\n inputValue: String,\n searchValue: String,\n onSearch: Function,\n autoClearSearchValue: {\n type: Boolean,\n default: undefined\n },\n // >>> Select\n onSelect: Function,\n onDeselect: Function,\n // >>> Options\n /**\n * In Select, `false` means do nothing.\n * In TreeSelect, `false` will highlight match item.\n * It's by design.\n */\n filterOption: {\n type: [Boolean, Function],\n default: undefined\n },\n filterSort: Function,\n optionFilterProp: String,\n optionLabelProp: String,\n options: Array,\n defaultActiveFirstOption: {\n type: Boolean,\n default: undefined\n },\n virtual: {\n type: Boolean,\n default: undefined\n },\n listHeight: Number,\n listItemHeight: Number,\n // >>> Icon\n menuItemSelectedIcon: PropTypes.any,\n mode: String,\n labelInValue: {\n type: Boolean,\n default: undefined\n },\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n onChange: Function,\n children: Array\n });\n}\nfunction isRawValue(value) {\n return !value || typeof value !== 'object';\n}\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'VcSelect',\n inheritAttrs: false,\n props: initDefaultProps(selectProps(), {\n prefixCls: 'vc-select',\n autoClearSearchValue: true,\n listHeight: 200,\n listItemHeight: 20,\n dropdownMatchSelectWidth: true\n }),\n setup(props, _ref) {\n let {\n expose,\n attrs,\n slots\n } = _ref;\n const mergedId = useId(toRef(props, 'id'));\n const multiple = computed(() => isMultiple(props.mode));\n const childrenAsData = computed(() => !!(!props.options && props.children));\n const mergedFilterOption = computed(() => {\n if (props.filterOption === undefined && props.mode === 'combobox') {\n return false;\n }\n return props.filterOption;\n });\n // ========================= FieldNames =========================\n const mergedFieldNames = computed(() => fillFieldNames(props.fieldNames, childrenAsData.value));\n // =========================== Search ===========================\n const [mergedSearchValue, setSearchValue] = useMergedState('', {\n value: computed(() => props.searchValue !== undefined ? props.searchValue : props.inputValue),\n postState: search => search || ''\n });\n // =========================== Option ===========================\n const parsedOptions = useOptions(toRef(props, 'options'), toRef(props, 'children'), mergedFieldNames);\n const {\n valueOptions,\n labelOptions,\n options: mergedOptions\n } = parsedOptions;\n // ========================= Wrap Value =========================\n const convert2LabelValues = draftValues => {\n // Convert to array\n const valueList = toArray(draftValues);\n // Convert to labelInValue type\n return valueList.map(val => {\n var _a, _b;\n let rawValue;\n let rawLabel;\n let rawKey;\n let rawDisabled;\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_a = val.value) !== null && _a !== void 0 ? _a : rawKey;\n }\n const option = valueOptions.value.get(rawValue);\n if (option) {\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[props.optionLabelProp || mergedFieldNames.value.label];\n if (rawKey === undefined) rawKey = (_b = option === null || option === void 0 ? void 0 : option.key) !== null && _b !== void 0 ? _b : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n // Warning if label not same as provided\n // if (process.env.NODE_ENV !== 'production' && !isRawValue(val)) {\n // const optionLabel = option?.[mergedFieldNames.value.label];\n // if (optionLabel !== undefined && optionLabel !== rawLabel) {\n // warning(false, '`label` of `value` is not same as `label` in Select options.');\n // }\n // }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n option\n };\n });\n };\n // =========================== Values ===========================\n const [internalValue, setInternalValue] = useMergedState(props.defaultValue, {\n value: toRef(props, 'value')\n });\n // Merged value with LabelValueType\n const rawLabeledValues = computed(() => {\n var _a;\n const values = convert2LabelValues(internalValue.value);\n // combobox no need save value when it's empty\n if (props.mode === 'combobox' && !((_a = values[0]) === null || _a === void 0 ? void 0 : _a.value)) {\n return [];\n }\n return values;\n });\n // Fill label with cache to avoid option remove\n const [mergedValues, getMixedOption] = useCache(rawLabeledValues, valueOptions);\n const displayValues = computed(() => {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!props.mode && mergedValues.value.length === 1) {\n const firstValue = mergedValues.value[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.value.map(item => {\n var _a;\n return _extends(_extends({}, item), {\n label: (_a = typeof item.label === 'function' ? item.label() : item.label) !== null && _a !== void 0 ? _a : item.value\n });\n });\n });\n /** Convert `displayValues` to raw value type set */\n const rawValues = computed(() => new Set(mergedValues.value.map(val => val.value)));\n watchEffect(() => {\n var _a;\n if (props.mode === 'combobox') {\n const strValue = (_a = mergedValues.value[0]) === null || _a === void 0 ? void 0 : _a.value;\n if (strValue !== undefined && strValue !== null) {\n setSearchValue(String(strValue));\n }\n }\n }, {\n flush: 'post'\n });\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n const createTagOption = (val, label) => {\n const mergedLabel = label !== null && label !== void 0 ? label : val;\n return {\n [mergedFieldNames.value.value]: val,\n [mergedFieldNames.value.label]: mergedLabel\n };\n };\n // Fill tag as option if mode is `tags`\n const filledTagOptions = shallowRef();\n watchEffect(() => {\n if (props.mode !== 'tags') {\n filledTagOptions.value = mergedOptions.value;\n return;\n }\n // >>> Tag mode\n const cloneOptions = mergedOptions.value.slice();\n // Check if value exist in options (include new patch item)\n const existOptions = val => valueOptions.value.has(val);\n // Fill current value as option\n [...mergedValues.value].sort((a, b) => a.value < b.value ? -1 : 1).forEach(item => {\n const val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n filledTagOptions.value = cloneOptions;\n });\n const filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, toRef(props, 'optionFilterProp'));\n // Fill options with search value if needed\n const filledSearchOptions = computed(() => {\n if (props.mode !== 'tags' || !mergedSearchValue.value || filteredOptions.value.some(item => item[props.optionFilterProp || 'value'] === mergedSearchValue.value)) {\n return filteredOptions.value;\n }\n // Fill search value as option\n return [createTagOption(mergedSearchValue.value), ...filteredOptions.value];\n });\n const orderedFilteredOptions = computed(() => {\n if (!props.filterSort) {\n return filledSearchOptions.value;\n }\n return [...filledSearchOptions.value].sort((a, b) => props.filterSort(a, b));\n });\n const displayOptions = computed(() => flattenOptions(orderedFilteredOptions.value, {\n fieldNames: mergedFieldNames.value,\n childrenAsData: childrenAsData.value\n }));\n // =========================== Change ===========================\n const triggerChange = values => {\n const labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (props.onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.value.length || labeledValues.some((newVal, index) => {\n var _a;\n return ((_a = mergedValues.value[index]) === null || _a === void 0 ? void 0 : _a.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n const returnValues = props.labelInValue ? labeledValues.map(v => {\n return _extends(_extends({}, v), {\n originLabel: v.label,\n label: typeof v.label === 'function' ? v.label() : v.label\n });\n }) : labeledValues.map(v => v.value);\n const returnOptions = labeledValues.map(v => injectPropsWithOption(getMixedOption(v.value)));\n props.onChange(\n // Value\n multiple.value ? returnValues : returnValues[0],\n // Option\n multiple.value ? returnOptions : returnOptions[0]);\n }\n };\n // ======================= Accessibility ========================\n const [activeValue, setActiveValue] = useState(null);\n const [accessibilityIndex, setAccessibilityIndex] = useState(0);\n const mergedDefaultActiveFirstOption = computed(() => props.defaultActiveFirstOption !== undefined ? props.defaultActiveFirstOption : props.mode !== 'combobox');\n const onActiveValue = function (active, index) {\n let {\n source = 'keyboard'\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n setAccessibilityIndex(index);\n if (props.backfill && props.mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n };\n // ========================= OptionList =========================\n const triggerSelect = (val, selected) => {\n const getSelectEnt = () => {\n var _a;\n const option = getMixedOption(val);\n const originLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.value.label];\n return [props.labelInValue ? {\n label: typeof originLabel === 'function' ? originLabel() : originLabel,\n originLabel,\n value: val,\n key: (_a = option === null || option === void 0 ? void 0 : option.key) !== null && _a !== void 0 ? _a : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && props.onSelect) {\n const [wrappedValue, option] = getSelectEnt();\n props.onSelect(wrappedValue, option);\n } else if (!selected && props.onDeselect) {\n const [wrappedValue, option] = getSelectEnt();\n props.onDeselect(wrappedValue, option);\n }\n };\n // Used for OptionList selection\n const onInternalSelect = (val, info) => {\n let cloneValues;\n // Single mode always trigger select only with option list\n const mergedSelect = multiple.value ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple.value ? [...mergedValues.value, val] : [val];\n } else {\n cloneValues = mergedValues.value.filter(v => v.value !== val);\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n // Clean search value if single or configured\n if (props.mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!multiple.value || props.autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n };\n // ======================= Display Change =======================\n // BaseSelect display values change\n const onDisplayValuesChange = (nextValues, info) => {\n triggerChange(nextValues);\n if (info.type === 'remove' || info.type === 'clear') {\n info.values.forEach(item => {\n triggerSelect(item.value, false);\n });\n }\n };\n // =========================== Search ===========================\n const onInternalSearch = (searchText, info) => {\n var _a;\n setSearchValue(searchText);\n setActiveValue(null);\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n const formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n const newRawValues = Array.from(new Set([...rawValues.value, formatted]));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (props.mode === 'combobox') {\n triggerChange(searchText);\n }\n (_a = props.onSearch) === null || _a === void 0 ? void 0 : _a.call(props, searchText);\n }\n };\n const onInternalSearchSplit = words => {\n let patchValues = words;\n if (props.mode !== 'tags') {\n patchValues = words.map(word => {\n const opt = labelOptions.value.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(val => val !== undefined);\n }\n const newRawValues = Array.from(new Set([...rawValues.value, ...patchValues]));\n triggerChange(newRawValues);\n newRawValues.forEach(newRawValue => {\n triggerSelect(newRawValue, true);\n });\n };\n const realVirtual = computed(() => props.virtual !== false && props.dropdownMatchSelectWidth !== false);\n useProvideSelectProps(toReactive(_extends(_extends({}, parsedOptions), {\n flattenOptions: displayOptions,\n onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: toRef(props, 'menuItemSelectedIcon'),\n rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n listHeight: toRef(props, 'listHeight'),\n listItemHeight: toRef(props, 'listItemHeight'),\n childrenAsData\n })));\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n warningProps(props);\n }, {\n flush: 'post'\n });\n }\n const selectRef = ref();\n expose({\n focus() {\n var _a;\n (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.focus();\n },\n blur() {\n var _a;\n (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.blur();\n },\n scrollTo(arg) {\n var _a;\n (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(arg);\n }\n });\n const pickProps = computed(() => {\n return omit(props, ['id', 'mode', 'prefixCls', 'backfill', 'fieldNames',\n // Search\n 'inputValue', 'searchValue', 'onSearch', 'autoClearSearchValue',\n // Select\n 'onSelect', 'onDeselect', 'dropdownMatchSelectWidth',\n // Options\n 'filterOption', 'filterSort', 'optionFilterProp', 'optionLabelProp', 'options', 'children', 'defaultActiveFirstOption', 'menuItemSelectedIcon', 'virtual', 'listHeight', 'listItemHeight',\n // Value\n 'value', 'defaultValue', 'labelInValue', 'onChange']);\n });\n return () => {\n return _createVNode(BaseSelect, _objectSpread(_objectSpread(_objectSpread({}, pickProps.value), attrs), {}, {\n \"id\": mergedId,\n \"prefixCls\": props.prefixCls,\n \"ref\": selectRef,\n \"omitDomProps\": OMIT_DOM_PROPS,\n \"mode\": props.mode,\n \"displayValues\": displayValues.value,\n \"onDisplayValuesChange\": onDisplayValuesChange,\n \"searchValue\": mergedSearchValue.value,\n \"onSearch\": onInternalSearch,\n \"onSearchSplit\": onInternalSearchSplit,\n \"dropdownMatchSelectWidth\": props.dropdownMatchSelectWidth,\n \"OptionList\": OptionList,\n \"emptyOptions\": !displayOptions.value.length,\n \"activeValue\": activeValue.value,\n \"activeDescendantId\": `${mergedId}_list_${accessibilityIndex.value}`\n }), slots);\n };\n }\n});", "const Option = () => null;\nOption.isSelectOption = true;\nOption.displayName = 'ASelectOption';\nexport default Option;", "const OptGroup = () => null;\nOptGroup.isSelectOptGroup = true;\nOptGroup.displayName = 'ASelectOptGroup';\nexport default OptGroup;", "import Select, { selectProps } from './Select';\nimport Option from './Option';\nimport OptGroup from './OptGroup';\nimport BaseSelect from './BaseSelect';\nimport useBaseProps from './hooks/useBaseProps';\nexport { Option, OptGroup, selectProps, BaseSelect, useBaseProps };\nexport default Select;", "import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\nimport DownOutlined from \"@ant-design/icons-vue/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons-vue/es/icons/LoadingOutlined\";\nimport CheckOutlined from \"@ant-design/icons-vue/es/icons/CheckOutlined\";\nimport CloseOutlined from \"@ant-design/icons-vue/es/icons/CloseOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons-vue/es/icons/CloseCircleFilled\";\nimport SearchOutlined from \"@ant-design/icons-vue/es/icons/SearchOutlined\";\nexport default function getIcons(props) {\n let slots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n loading,\n multiple,\n prefixCls,\n hasFeedback,\n feedbackIcon,\n showArrow\n } = props;\n const suffixIcon = props.suffixIcon || slots.suffixIcon && slots.suffixIcon();\n const clearIcon = props.clearIcon || slots.clearIcon && slots.clearIcon();\n const menuItemSelectedIcon = props.menuItemSelectedIcon || slots.menuItemSelectedIcon && slots.menuItemSelectedIcon();\n const removeIcon = props.removeIcon || slots.removeIcon && slots.removeIcon();\n // Clear Icon\n const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : _createVNode(CloseCircleFilled, null, null);\n // Validation Feedback Icon\n const getSuffixIconNode = arrowIcon => _createVNode(_Fragment, null, [showArrow !== false && arrowIcon, hasFeedback && feedbackIcon]);\n // Arrow item icon\n let mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode(_createVNode(LoadingOutlined, {\n \"spin\": true\n }, null));\n } else {\n const iconCls = `${prefixCls}-suffix`;\n mergedSuffixIcon = _ref => {\n let {\n open,\n showSearch\n } = _ref;\n if (open && showSearch) {\n return getSuffixIconNode(_createVNode(SearchOutlined, {\n \"class\": iconCls\n }, null));\n }\n return getSuffixIconNode(_createVNode(DownOutlined, {\n \"class\": iconCls\n }, null));\n };\n }\n // Checked item icon\n let mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = _createVNode(CheckOutlined, null, null);\n } else {\n mergedItemIcon = null;\n }\n let mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = _createVNode(CloseOutlined, null, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}", "import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { inject, provide, reactive, watchEffect } from 'vue';\nfunction createContext(defaultValue) {\n const contextKey = Symbol('contextKey');\n const useProvide = (props, newProps) => {\n const mergedProps = reactive({});\n provide(contextKey, mergedProps);\n watchEffect(() => {\n _extends(mergedProps, props, newProps || {});\n });\n return mergedProps;\n };\n const useInject = () => {\n return inject(contextKey, defaultValue) || {};\n };\n return {\n useProvide,\n useInject\n };\n}\nexport default createContext;", "import { watch, computed, inject, provide, ref, onBeforeUnmount, getCurrentInstance, defineComponent } from 'vue';\nimport devWarning from '../vc-util/devWarning';\nimport createContext from '../_util/createContext';\nconst ContextKey = Symbol('ContextProps');\nconst InternalContextKey = Symbol('InternalContextProps');\nexport const useProvideFormItemContext = function (props) {\n let useValidation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : computed(() => true);\n const formItemFields = ref(new Map());\n const addFormItemField = (key, type) => {\n formItemFields.value.set(key, type);\n formItemFields.value = new Map(formItemFields.value);\n };\n const removeFormItemField = key => {\n formItemFields.value.delete(key);\n formItemFields.value = new Map(formItemFields.value);\n };\n const instance = getCurrentInstance();\n watch([useValidation, formItemFields], () => {\n if (process.env.NODE_ENV !== 'production') {\n if (useValidation.value && formItemFields.value.size > 1) {\n devWarning(false, 'Form.Item', `FormItem can only collect one field item, you haved set ${[...formItemFields.value.values()].map(v => `\\`${v.name}\\``).join(', ')} ${formItemFields.value.size} field items.\n You can set not need to be collected fields into \\`a-form-item-rest\\``);\n let cur = instance;\n while (cur.parent) {\n console.warn('at', cur.type);\n cur = cur.parent;\n }\n }\n }\n });\n provide(ContextKey, props);\n provide(InternalContextKey, {\n addFormItemField,\n removeFormItemField\n });\n};\nconst defaultContext = {\n id: computed(() => undefined),\n onFieldBlur: () => {},\n onFieldChange: () => {},\n clearValidate: () => {}\n};\nconst defaultInternalContext = {\n addFormItemField: () => {},\n removeFormItemField: () => {}\n};\nexport const useInjectFormItemContext = () => {\n const internalContext = inject(InternalContextKey, defaultInternalContext);\n const formItemFieldKey = Symbol('FormItemFieldKey');\n const instance = getCurrentInstance();\n internalContext.addFormItemField(formItemFieldKey, instance.type);\n onBeforeUnmount(() => {\n internalContext.removeFormItemField(formItemFieldKey);\n });\n // We should prevent the passing of context for children\n provide(InternalContextKey, defaultInternalContext);\n provide(ContextKey, defaultContext);\n return inject(ContextKey, defaultContext);\n};\nexport default defineComponent({\n compatConfig: {\n MODE: 3\n },\n name: 'AFormItemRest',\n setup(_, _ref) {\n let {\n slots\n } = _ref;\n provide(InternalContextKey, defaultInternalContext);\n provide(ContextKey, defaultContext);\n return () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n };\n }\n});\nexport const FormItemInputContext = createContext({});\nexport const NoFormStatus = defineComponent({\n name: 'NoFormStatus',\n setup(_, _ref2) {\n let {\n slots\n } = _ref2;\n FormItemInputContext.useProvide({});\n return () => {\n var _a;\n return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);\n };\n }\n});", "import classNames from './classNames';\nconst InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n return classNames({\n [`${prefixCls}-status-success`]: status === 'success',\n [`${prefixCls}-status-warning`]: status === 'warning',\n [`${prefixCls}-status-error`]: status === 'error',\n [`${prefixCls}-status-validating`]: status === 'validating',\n [`${prefixCls}-has-feedback`]: hasFeedback\n });\n}\nexport const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;", "const genSpaceCompactStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [componentCls]: {\n display: 'inline-flex',\n '&-block': {\n display: 'flex',\n width: '100%'\n },\n '&-vertical': {\n flexDirection: 'column'\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genSpaceCompactStyle;", "import { genComponentStyleHook } from '../../theme/internal';\nimport genSpaceCompactStyle from './compact';\nconst genSpaceStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [componentCls]: {\n display: 'inline-flex',\n '&-rtl': {\n direction: 'rtl'\n },\n '&-vertical': {\n flexDirection: 'column'\n },\n '&-align': {\n flexDirection: 'column',\n '&-center': {\n alignItems: 'center'\n },\n '&-start': {\n alignItems: 'flex-start'\n },\n '&-end': {\n alignItems: 'flex-end'\n },\n '&-baseline': {\n alignItems: 'baseline'\n }\n },\n [`${componentCls}-space-item`]: {\n '&:empty': {\n display: 'none'\n }\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Space', token => [genSpaceStyle(token), genSpaceCompactStyle(token)]);", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\nfunction baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n}\n\nexport default baseToNumber;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "import baseToNumber from './_baseToNumber.js';\nimport baseToString from './_baseToString.js';\n\n/**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\nfunction createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n}\n\nexport default createMathOperation;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\nvar add = createMathOperation(function(augend, addend) {\n return augend + addend;\n}, 0);\n\nexport default add;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n", "import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\nfunction after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\nexport default after;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "import WeakMap from './_WeakMap.js';\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nexport default metaMap;\n", "import identity from './identity.js';\nimport metaMap from './_metaMap.js';\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nexport default baseSetData;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n", "import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nexport default createCtor;\n", "import createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nexport default createBind;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nexport default composeArgs;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nexport default composeArgsRight;\n", "/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nexport default countHolders;\n", "/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nexport default baseLodash;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nexport default LazyWrapper;\n", "/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n", "import metaMap from './_metaMap.js';\nimport noop from './noop.js';\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nexport default getData;\n", "/** Used to lookup unminified function names. */\nvar realNames = {};\n\nexport default realNames;\n", "import realNames from './_realNames.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nexport default getFuncName;\n", "import baseCreate from './_baseCreate.js';\nimport baseLodash from './_baseLodash.js';\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nexport default LodashWrapper;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport copyArray from './_copyArray.js';\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nexport default wrapperClone;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport LodashWrapper from './_LodashWrapper.js';\nimport baseLodash from './_baseLodash.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nexport default lodash;\n", "import LazyWrapper from './_LazyWrapper.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport lodash from './wrapperLodash.js';\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nexport default isLaziable;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n", "import baseSetData from './_baseSetData.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nexport default setData;\n", "/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nexport default getWrapDetails;\n", "/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nexport default insertWrapDetails;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n", "/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n", "/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n", "/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n", "import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n", "import arrayEach from './_arrayEach.js';\nimport arrayIncludes from './_arrayIncludes.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nexport default updateWrapDetails;\n", "import getWrapDetails from './_getWrapDetails.js';\nimport insertWrapDetails from './_insertWrapDetails.js';\nimport setToString from './_setToString.js';\nimport updateWrapDetails from './_updateWrapDetails.js';\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nexport default setWrapToString;\n", "import isLaziable from './_isLaziable.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nexport default createRecurry;\n", "/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nexport default getHolder;\n", "import copyArray from './_copyArray.js';\nimport isIndex from './_isIndex.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nexport default reorder;\n", "/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nexport default replaceHolders;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport countHolders from './_countHolders.js';\nimport createCtor from './_createCtor.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport reorder from './_reorder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nexport default createHybrid;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport createHybrid from './_createHybrid.js';\nimport createRecurry from './_createRecurry.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\nimport root from './_root.js';\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nexport default createCurry;\n", "import apply from './_apply.js';\nimport createCtor from './_createCtor.js';\nimport root from './_root.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nexport default createPartial;\n", "import composeArgs from './_composeArgs.js';\nimport composeArgsRight from './_composeArgsRight.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nexport default mergeData;\n", "import baseSetData from './_baseSetData.js';\nimport createBind from './_createBind.js';\nimport createCurry from './_createCurry.js';\nimport createHybrid from './_createHybrid.js';\nimport createPartial from './_createPartial.js';\nimport getData from './_getData.js';\nimport mergeData from './_mergeData.js';\nimport setData from './_setData.js';\nimport setWrapToString from './_setWrapToString.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nexport default createWrap;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nexport default ary;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n", "import assignValue from './_assignValue.js';\nimport copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport isArrayLike from './isArrayLike.js';\nimport isPrototype from './_isPrototype.js';\nimport keys from './keys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nexport default assign;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n});\n\nexport default assignInWith;\n", "import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n/**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n});\n\nexport default assignWith;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "import get from './get.js';\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n}\n\nexport default baseAt;\n", "import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n", "import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n", "import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n", "import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n", "import baseAt from './_baseAt.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nexport default at;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nexport default isError;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport isError from './isError.js';\n\n/**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\nvar attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n});\n\nexport default attempt;\n", "import toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\nexport default before;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\nvar bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nexport default bind;\n", "import arrayEach from './_arrayEach.js';\nimport baseAssignValue from './_baseAssignValue.js';\nimport bind from './bind.js';\nimport flatRest from './_flatRest.js';\nimport toKey from './_toKey.js';\n\n/**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\nvar bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n});\n\nexport default bindAll;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\nvar bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n});\n\n// Assign default placeholders.\nbindKey.placeholder = {};\n\nexport default bindKey;\n", "/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n", "import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n", "import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n", "import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n", "/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n", "/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n", "import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n", "/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n", "/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n", "import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n", "import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n", "import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n", "import isArray from './isArray.js';\n\n/**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n}\n\nexport default castArray;\n", "import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nexport default createRound;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\nvar ceil = createRound('ceil');\n\nexport default ceil;\n", "import lodash from './wrapperLodash.js';\n\n/**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\nfunction chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n}\n\nexport default chain;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nexport default chunk;\n", "/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nexport default baseClamp;\n", "import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n", "import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n", "import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n", "/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n", "import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n", "import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n", "import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n", "import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n", "import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\nfunction cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneWith;\n", "import LodashWrapper from './_LodashWrapper.js';\n\n/**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\nfunction wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n}\n\nexport default wrapperCommit;\n", "/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default compact;\n", "import arrayPush from './_arrayPush.js';\nimport baseFlatten from './_baseFlatten.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nexport default concat;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\nfunction cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = baseIteratee;\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n}\n\nexport default cond;\n", "/**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\nfunction baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n}\n\nexport default baseConformsTo;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n}\n\nexport default baseConforms;\n", "import baseClone from './_baseClone.js';\nimport baseConforms from './_baseConforms.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\nfunction conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default conforms;\n", "import baseConformsTo from './_baseConformsTo.js';\nimport keys from './keys.js';\n\n/**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\nfunction conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n}\n\nexport default conformsTo;\n", "/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nexport default arrayAggregator;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n", "import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n", "import baseEach from './_baseEach.js';\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nexport default baseAggregator;\n", "import arrayAggregator from './_arrayAggregator.js';\nimport baseAggregator from './_baseAggregator.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nexport default createAggregator;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n});\n\nexport default countBy;\n", "import baseAssign from './_baseAssign.js';\nimport baseCreate from './_baseCreate.js';\n\n/**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\nfunction create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n}\n\nexport default create;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nexport default curry;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_RIGHT_FLAG = 16;\n\n/**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\nfunction curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurryRight.placeholder = {};\n\nexport default curryRight;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n", "/**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\nfunction defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n}\n\nexport default defaultTo;\n", "import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n", "import baseMerge from './_baseMerge.js';\nimport isObject from './isObject.js';\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n}\n\nexport default customDefaultsMerge;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nexport default mergeWith;\n", "import apply from './_apply.js';\nimport baseRest from './_baseRest.js';\nimport customDefaultsMerge from './_customDefaultsMerge.js';\nimport mergeWith from './mergeWith.js';\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n});\n\nexport default defaultsDeep;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nexport default baseDelay;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n});\n\nexport default defer;\n", "import baseDelay from './_baseDelay.js';\nimport baseRest from './_baseRest.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\nvar delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nexport default delay;\n", "/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n", "/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\nvar differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))\n : [];\n});\n\nexport default differenceBy;\n", "import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n});\n\nexport default differenceWith;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\nvar divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n}, 1);\n\nexport default divide;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default drop;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\nfunction dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default dropRight;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n}\n\nexport default baseWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3), true, true)\n : [];\n}\n\nexport default dropRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3), true)\n : [];\n}\n\nexport default dropWhile;\n", "import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n", "import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n", "/**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEachRight;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseForRight = createBaseFor(true);\n\nexport default baseForRight;\n", "import baseForRight from './_baseForRight.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n}\n\nexport default baseForOwnRight;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEachRight = createBaseEach(baseForOwnRight, true);\n\nexport default baseEachRight;\n", "import arrayEachRight from './_arrayEachRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\nfunction forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEachRight;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\nfunction endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n}\n\nexport default endsWith;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nexport default baseToPairs;\n", "/**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\nfunction setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n}\n\nexport default setToPairs;\n", "import baseToPairs from './_baseToPairs.js';\nimport getTag from './_getTag.js';\nimport mapToArray from './_mapToArray.js';\nimport setToPairs from './_setToPairs.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\nfunction createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n}\n\nexport default createToPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nvar toPairs = createToPairs(keys);\n\nexport default toPairs;\n", "import createToPairs from './_createToPairs.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\nvar toPairsIn = createToPairs(keysIn);\n\nexport default toPairsIn;\n", "import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nexport default escapeHtmlChar;\n", "import escapeHtmlChar from './_escapeHtmlChar.js';\nimport toString from './toString.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nexport default escape;\n", "import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n", "/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nexport default arrayEvery;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nexport default baseEvery;\n", "import arrayEvery from './_arrayEvery.js';\nimport baseEvery from './_baseEvery.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default every;\n", "import baseClamp from './_baseClamp.js';\nimport toInteger from './toInteger.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\nfunction toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n}\n\nexport default toLength;\n", "import toInteger from './toInteger.js';\nimport toLength from './toLength.js';\n\n/**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\nfunction baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n}\n\nexport default baseFill;\n", "import baseFill from './_baseFill.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\nfunction fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n}\n\nexport default fill;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n", "import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n", "import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n", "/**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\nfunction baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n}\n\nexport default baseFindKey;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\nfunction findKey(object, predicate) {\n return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);\n}\n\nexport default findKey;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nexport default findLastIndex;\n", "import createFind from './_createFind.js';\nimport findLastIndex from './findLastIndex.js';\n\n/**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\nvar findLast = createFind(findLastIndex);\n\nexport default findLast;\n", "import baseFindKey from './_baseFindKey.js';\nimport baseForOwnRight from './_baseForOwnRight.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\nfunction findLastKey(object, predicate) {\n return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);\n}\n\nexport default findLastKey;\n", "/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nexport default head;\n", "import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nexport default flatMap;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n}\n\nexport default flatMapDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport map from './map.js';\nimport toInteger from './toInteger.js';\n\n/**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\nfunction flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n}\n\nexport default flatMapDepth;\n", "import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n", "import baseFlatten from './_baseFlatten.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\nfunction flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n}\n\nexport default flattenDepth;\n", "import createWrap from './_createWrap.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\nfunction flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n}\n\nexport default flip;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\nvar floor = createRound('floor');\n\nexport default floor;\n", "import LodashWrapper from './_LodashWrapper.js';\nimport flatRest from './_flatRest.js';\nimport getData from './_getData.js';\nimport getFuncName from './_getFuncName.js';\nimport isArray from './isArray.js';\nimport isLaziable from './_isLaziable.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nexport default createFlow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nexport default flow;\n", "import createFlow from './_createFlow.js';\n\n/**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flowRight = createFlow(true);\n\nexport default flowRight;\n", "import baseFor from './_baseFor.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nexport default forIn;\n", "import baseForRight from './_baseForRight.js';\nimport castFunction from './_castFunction.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\nfunction forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, castFunction(iteratee), keysIn);\n}\n\nexport default forInRight;\n", "import baseForOwn from './_baseForOwn.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nexport default forOwn;\n", "import baseForOwnRight from './_baseForOwnRight.js';\nimport castFunction from './_castFunction.js';\n\n/**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\nfunction forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, castFunction(iteratee));\n}\n\nexport default forOwnRight;\n", "/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n}\n\nexport default fromPairs;\n", "import arrayFilter from './_arrayFilter.js';\nimport isFunction from './isFunction.js';\n\n/**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\nfunction baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n}\n\nexport default baseFunctions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\nfunction functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n}\n\nexport default functions;\n", "import baseFunctions from './_baseFunctions.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\nfunction functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n}\n\nexport default functionsIn;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nexport default groupBy;\n", "/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nexport default baseGt;\n", "import toNumber from './toNumber.js';\n\n/**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\nfunction createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n}\n\nexport default createRelationalOperation;\n", "import baseGt from './_baseGt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\nvar gt = createRelationalOperation(baseGt);\n\nexport default gt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\nvar gte = createRelationalOperation(function(value, other) {\n return value >= other;\n});\n\nexport default gte;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n", "import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\nfunction baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n}\n\nexport default baseInRange;\n", "import baseInRange from './_baseInRange.js';\nimport toFinite from './toFinite.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\nfunction inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n}\n\nexport default inRange;\n", "import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n", "import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nexport default baseValues;\n", "import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport toInteger from './toInteger.js';\nimport values from './values.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nexport default includes;\n", "import baseIndexOf from './_baseIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n}\n\nexport default indexOf;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\nfunction initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n}\n\nexport default initial;\n", "import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseIntersection;\n", "import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nexport default intersection;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\nvar intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, baseIteratee(iteratee, 2))\n : [];\n});\n\nexport default intersectionBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n});\n\nexport default intersectionWith;\n", "import baseForOwn from './_baseForOwn.js';\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\nexport default baseInverter;\n", "import baseInverter from './_baseInverter.js';\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\nexport default createInverter;\n", "import constant from './constant.js';\nimport createInverter from './_createInverter.js';\nimport identity from './identity.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n}, constant(identity));\n\nexport default invert;\n", "import baseIteratee from './_baseIteratee.js';\nimport createInverter from './_createInverter.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\nvar invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n}, baseIteratee);\n\nexport default invertBy;\n", "import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n", "import apply from './_apply.js';\nimport castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n}\n\nexport default baseInvoke;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\nvar invoke = baseRest(baseInvoke);\n\nexport default invoke;\n", "import apply from './_apply.js';\nimport baseEach from './_baseEach.js';\nimport baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n});\n\nexport default invokeMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\nfunction baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n}\n\nexport default baseIsArrayBuffer;\n", "import baseIsArrayBuffer from './_baseIsArrayBuffer.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;\n\n/**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\nvar isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\nexport default isArrayBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nexport default isBoolean;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nexport default baseIsDate;\n", "import baseIsDate from './_baseIsDate.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nexport default isDate;\n", "import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n", "import root from './_root.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n}\n\nexport default isFinite;\n", "import toInteger from './toInteger.js';\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\nexport default isInteger;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\nfunction isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n}\n\nexport default isMatch;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\n\n/**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\nfunction isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n}\n\nexport default isMatchWith;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n", "import isNumber from './isNumber.js';\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nexport default isNaN;\n", "import coreJsData from './_coreJsData.js';\nimport isFunction from './isFunction.js';\nimport stubFalse from './stubFalse.js';\n\n/**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\nvar isMaskable = coreJsData ? isFunction : stubFalse;\n\nexport default isMaskable;\n", "import baseIsNative from './_baseIsNative.js';\nimport isMaskable from './_isMaskable.js';\n\n/** Error message constants. */\nvar CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';\n\n/**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n}\n\nexport default isNative;\n", "/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n", "/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nexport default baseIsRegExp;\n", "import baseIsRegExp from './_baseIsRegExp.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nexport default isRegExp;\n", "import isInteger from './isInteger.js';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\nfunction isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isSafeInteger;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nexport default isWeakMap;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar weakSetTag = '[object WeakSet]';\n\n/**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\nfunction isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n}\n\nexport default isWeakSet;\n", "import baseClone from './_baseClone.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nexport default iteratee;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n}\n\nexport default join;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nexport default kebabCase;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport createAggregator from './_createAggregator.js';\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nexport default keyBy;\n", "/**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n}\n\nexport default strictLastIndexOf;\n", "import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictLastIndexOf from './_strictLastIndexOf.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\nfunction lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n}\n\nexport default lastIndexOf;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nexport default lowerCase;\n", "import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\nvar lowerFirst = createCaseFirst('toLowerCase');\n\nexport default lowerFirst;\n", "/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n", "import baseLt from './_baseLt.js';\nimport createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\nvar lt = createRelationalOperation(baseLt);\n\nexport default lt;\n", "import createRelationalOperation from './_createRelationalOperation.js';\n\n/**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\nvar lte = createRelationalOperation(function(value, other) {\n return value <= other;\n});\n\nexport default lte;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nexport default mapKeys;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "import baseClone from './_baseClone.js';\nimport baseMatches from './_baseMatches.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nexport default matches;\n", "import baseClone from './_baseClone.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n}\n\nexport default matchesProperty;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nexport default max;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseGt from './_baseGt.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nexport default maxBy;\n", "/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nexport default baseSum;\n", "import baseSum from './_baseSum.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\nfunction baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n}\n\nexport default baseMean;\n", "import baseMean from './_baseMean.js';\nimport identity from './identity.js';\n\n/**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\nfunction mean(array) {\n return baseMean(array, identity);\n}\n\nexport default mean;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseMean from './_baseMean.js';\n\n/**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\nfunction meanBy(array, iteratee) {\n return baseMean(array, baseIteratee(iteratee, 2));\n}\n\nexport default meanBy;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\nvar method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n});\n\nexport default method;\n", "import baseInvoke from './_baseInvoke.js';\nimport baseRest from './_baseRest.js';\n\n/**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\nvar methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n});\n\nexport default methodOf;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n", "import baseExtremum from './_baseExtremum.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseLt from './_baseLt.js';\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nexport default minBy;\n", "import arrayEach from './_arrayEach.js';\nimport arrayPush from './_arrayPush.js';\nimport baseFunctions from './_baseFunctions.js';\nimport copyArray from './_copyArray.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport keys from './keys.js';\n\n/**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\nfunction mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n}\n\nexport default mixin;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\nvar multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n}, 1);\n\nexport default multiply;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n", "/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nexport default iteratorToArray;\n", "import Symbol from './_Symbol.js';\nimport copyArray from './_copyArray.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport iteratorToArray from './_iteratorToArray.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\nimport stringToArray from './_stringToArray.js';\nimport values from './values.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nexport default toArray;\n", "import toArray from './toArray.js';\n\n/**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\nfunction wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n}\n\nexport default wrapperNext;\n", "import isIndex from './_isIndex.js';\n\n/**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\nfunction baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n}\n\nexport default baseNth;\n", "import baseNth from './_baseNth.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\nfunction nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n}\n\nexport default nth;\n", "import baseNth from './_baseNth.js';\nimport baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\nfunction nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n}\n\nexport default nthArg;\n", "import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n", "import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n", "import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n", "import baseIteratee from './_baseIteratee.js';\nimport negate from './negate.js';\nimport pickBy from './pickBy.js';\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nexport default omitBy;\n", "import before from './before.js';\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\nexport default once;\n", "/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n", "import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n", "import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n", "import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n", "import baseOrderBy from './_baseOrderBy.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nexport default orderBy;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\nfunction createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n}\n\nexport default createOver;\n", "import arrayMap from './_arrayMap.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\nvar over = createOver(arrayMap);\n\nexport default over;\n", "import baseRest from './_baseRest.js';\n\n/**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nvar castRest = baseRest;\n\nexport default castRest;\n", "import apply from './_apply.js';\nimport arrayMap from './_arrayMap.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUnary from './_baseUnary.js';\nimport castRest from './_castRest.js';\nimport isArray from './isArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\nvar overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(baseIteratee))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n});\n\nexport default overArgs;\n", "import arrayEvery from './_arrayEvery.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\nvar overEvery = createOver(arrayEvery);\n\nexport default overEvery;\n", "import arraySome from './_arraySome.js';\nimport createOver from './_createOver.js';\n\n/**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\nvar overSome = createOver(arraySome);\n\nexport default overSome;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nexport default baseRepeat;\n", "import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n", "import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n", "import baseRepeat from './_baseRepeat.js';\nimport baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringSize from './_stringSize.js';\nimport stringToArray from './_stringToArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n}\n\nexport default createPadding;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeFloor = Math.floor;\n\n/**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\nfunction pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n}\n\nexport default pad;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\nfunction padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n}\n\nexport default padEnd;\n", "import createPadding from './_createPadding.js';\nimport stringSize from './_stringSize.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n}\n\nexport default padStart;\n", "import root from './_root.js';\nimport toString from './toString.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeParseInt = root.parseInt;\n\n/**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\nfunction parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n}\n\nexport default parseInt;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_FLAG = 32;\n\n/**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\nvar partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartial.placeholder = {};\n\nexport default partial;\n", "import baseRest from './_baseRest.js';\nimport createWrap from './_createWrap.js';\nimport getHolder from './_getHolder.js';\nimport replaceHolders from './_replaceHolders.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\nvar partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartialRight.placeholder = {};\n\nexport default partialRight;\n", "import createAggregator from './_createAggregator.js';\n\n/**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\nvar partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n}, function() { return [[], []]; });\n\nexport default partition;\n", "import basePickBy from './_basePickBy.js';\nimport hasIn from './hasIn.js';\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nexport default basePick;\n", "import basePick from './_basePick.js';\nimport flatRest from './_flatRest.js';\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nexport default pick;\n", "import baseLodash from './_baseLodash.js';\nimport wrapperClone from './_wrapperClone.js';\n\n/**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\nfunction wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n}\n\nexport default wrapperPlant;\n", "import baseGet from './_baseGet.js';\n\n/**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\nfunction propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n}\n\nexport default propertyOf;\n", "/**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseIndexOfWith;\n", "import arrayMap from './_arrayMap.js';\nimport baseIndexOf from './_baseIndexOf.js';\nimport baseIndexOfWith from './_baseIndexOfWith.js';\nimport baseUnary from './_baseUnary.js';\nimport copyArray from './_copyArray.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n}\n\nexport default basePullAll;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\nfunction pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n}\n\nexport default pullAll;\n", "import baseRest from './_baseRest.js';\nimport pullAll from './pullAll.js';\n\n/**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\nvar pull = baseRest(pullAll);\n\nexport default pull;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\nfunction pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, baseIteratee(iteratee, 2))\n : array;\n}\n\nexport default pullAllBy;\n", "import basePullAll from './_basePullAll.js';\n\n/**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\nfunction pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n}\n\nexport default pullAllWith;\n", "import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nexport default basePullAt;\n", "import arrayMap from './_arrayMap.js';\nimport baseAt from './_baseAt.js';\nimport basePullAt from './_basePullAt.js';\nimport compareAscending from './_compareAscending.js';\nimport flatRest from './_flatRest.js';\nimport isIndex from './_isIndex.js';\n\n/**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\nvar pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n});\n\nexport default pullAt;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nexport default baseRandom;\n", "import baseRandom from './_baseRandom.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseFloat = parseFloat;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min,\n nativeRandom = Math.random;\n\n/**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\nfunction random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n}\n\nexport default random;\n", "/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n", "import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n", "import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n", "import createRange from './_createRange.js';\n\n/**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\nvar rangeRight = createRange(true);\n\nexport default rangeRight;\n", "import createWrap from './_createWrap.js';\nimport flatRest from './_flatRest.js';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nexport default rearg;\n", "/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nexport default baseReduce;\n", "import arrayReduce from './_arrayReduce.js';\nimport baseEach from './_baseEach.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nexport default reduce;\n", "/**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n}\n\nexport default arrayReduceRight;\n", "import arrayReduceRight from './_arrayReduceRight.js';\nimport baseEachRight from './_baseEachRight.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseReduce from './_baseReduce.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\nfunction reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n}\n\nexport default reduceRight;\n", "import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\nimport negate from './negate.js';\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nexport default reject;\n", "import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nexport default remove;\n", "import baseRepeat from './_baseRepeat.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n}\n\nexport default repeat;\n", "import toString from './toString.js';\n\n/**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\nfunction replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n}\n\nexport default replace;\n", "import baseRest from './_baseRest.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n}\n\nexport default rest;\n", "import castPath from './_castPath.js';\nimport isFunction from './isFunction.js';\nimport toKey from './_toKey.js';\n\n/**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\nfunction result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n}\n\nexport default result;\n", "/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeReverse = arrayProto.reverse;\n\n/**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\nfunction reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n}\n\nexport default reverse;\n", "import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\nfunction arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nexport default arraySample;\n", "import arraySample from './_arraySample.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\nfunction baseSample(collection) {\n return arraySample(values(collection));\n}\n\nexport default baseSample;\n", "import arraySample from './_arraySample.js';\nimport baseSample from './_baseSample.js';\nimport isArray from './isArray.js';\n\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\nfunction sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n}\n\nexport default sample;\n", "import baseRandom from './_baseRandom.js';\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nexport default shuffleSelf;\n", "import baseClamp from './_baseClamp.js';\nimport copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n}\n\nexport default arraySampleSize;\n", "import baseClamp from './_baseClamp.js';\nimport shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\nfunction baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n}\n\nexport default baseSampleSize;\n", "import arraySampleSize from './_arraySampleSize.js';\nimport baseSampleSize from './_baseSampleSize.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\nfunction sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n}\n\nexport default sampleSize;\n", "import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n", "import baseSet from './_baseSet.js';\n\n/**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\nfunction setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n}\n\nexport default setWith;\n", "import copyArray from './_copyArray.js';\nimport shuffleSelf from './_shuffleSelf.js';\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nexport default arrayShuffle;\n", "import shuffleSelf from './_shuffleSelf.js';\nimport values from './values.js';\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nexport default baseShuffle;\n", "import arrayShuffle from './_arrayShuffle.js';\nimport baseShuffle from './_baseShuffle.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nexport default shuffle;\n", "import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n", "import baseSlice from './_baseSlice.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nexport default slice;\n", "import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n", "import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nexport default baseSome;\n", "import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n", "import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\nexport default baseSortedIndexBy;\n", "import baseSortedIndexBy from './_baseSortedIndexBy.js';\nimport identity from './identity.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n/**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\nfunction baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n}\n\nexport default baseSortedIndex;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\nfunction sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n}\n\nexport default sortedIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));\n}\n\nexport default sortedIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\nfunction sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default sortedIndexOf;\n", "import baseSortedIndex from './_baseSortedIndex.js';\n\n/**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\nfunction sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n}\n\nexport default sortedLastIndex;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedIndexBy from './_baseSortedIndexBy.js';\n\n/**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\nfunction sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);\n}\n\nexport default sortedLastIndexBy;\n", "import baseSortedIndex from './_baseSortedIndex.js';\nimport eq from './eq.js';\n\n/**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\nfunction sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default sortedLastIndexOf;\n", "import eq from './eq.js';\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n}\n\nexport default baseSortedUniq;\n", "import baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n}\n\nexport default sortedUniq;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSortedUniq from './_baseSortedUniq.js';\n\n/**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\nfunction sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, baseIteratee(iteratee, 2))\n : [];\n}\n\nexport default sortedUniqBy;\n", "import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport isRegExp from './isRegExp.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\nfunction split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n}\n\nexport default split;\n", "import apply from './_apply.js';\nimport arrayPush from './_arrayPush.js';\nimport baseRest from './_baseRest.js';\nimport castSlice from './_castSlice.js';\nimport toInteger from './toInteger.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\nfunction spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n}\n\nexport default spread;\n", "import createCompounder from './_createCompounder.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\nvar startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n});\n\nexport default startCase;\n", "import baseClamp from './_baseClamp.js';\nimport baseToString from './_baseToString.js';\nimport toInteger from './toInteger.js';\nimport toString from './toString.js';\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n}\n\nexport default startsWith;\n", "/**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\nfunction stubObject() {\n return {};\n}\n\nexport default stubObject;\n", "/**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\nfunction stubString() {\n return '';\n}\n\nexport default stubString;\n", "/**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\nfunction stubTrue() {\n return true;\n}\n\nexport default stubTrue;\n", "import createMathOperation from './_createMathOperation.js';\n\n/**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\nvar subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n}, 0);\n\nexport default subtract;\n", "import baseSum from './_baseSum.js';\nimport identity from './identity.js';\n\n/**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\nfunction sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n}\n\nexport default sum;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseSum from './_baseSum.js';\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nexport default sumBy;\n", "import baseSlice from './_baseSlice.js';\n\n/**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\nfunction tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n}\n\nexport default tail;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default take;\n", "import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nexport default takeRight;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\nfunction takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3), false, true)\n : [];\n}\n\nexport default takeRightWhile;\n", "import baseIteratee from './_baseIteratee.js';\nimport baseWhile from './_baseWhile.js';\n\n/**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\nfunction takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3))\n : [];\n}\n\nexport default takeWhile;\n", "/**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\nfunction tap(value, interceptor) {\n interceptor(value);\n return value;\n}\n\nexport default tap;\n", "import eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\nexport default customDefaultsAssignIn;\n", "/** Used to escape characters for inclusion in compiled string literals. */\nvar stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\n/**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nfunction escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n}\n\nexport default escapeStringChar;\n", "/** Used to match template delimiters. */\nvar reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\nexport default reInterpolate;\n", "/** Used to match template delimiters. */\nvar reEscape = /<%-([\\s\\S]+?)%>/g;\n\nexport default reEscape;\n", "/** Used to match template delimiters. */\nvar reEvaluate = /<%([\\s\\S]+?)%>/g;\n\nexport default reEvaluate;\n", "import escape from './escape.js';\nimport reEscape from './_reEscape.js';\nimport reEvaluate from './_reEvaluate.js';\nimport reInterpolate from './_reInterpolate.js';\n\n/**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\nvar templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': { 'escape': escape }\n }\n};\n\nexport default templateSettings;\n", "import assignInWith from './assignInWith.js';\nimport attempt from './attempt.js';\nimport baseValues from './_baseValues.js';\nimport customDefaultsAssignIn from './_customDefaultsAssignIn.js';\nimport escapeStringChar from './_escapeStringChar.js';\nimport isError from './isError.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keys from './keys.js';\nimport reInterpolate from './_reInterpolate.js';\nimport templateSettings from './templateSettings.js';\nimport toString from './toString.js';\n\n/** Error message constants. */\nvar INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n/** Used to match empty string literals in compiled template source. */\nvar reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n/**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\nvar reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n/**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\nvar reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n/** Used to ensure capturing order of template delimiters. */\nvar reNoMatch = /($^)/;\n\n/** Used to match unescaped characters in compiled string literals. */\nvar reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '